Fix metaclass issue on Python 3. Get text handling tests passing on Python 3.
Signed-off-by: Dan O'Reilly <oreilldf@gmail.com>
This commit is contained in:
parent
fc80874adf
commit
38eef02aab
@ -36,6 +36,8 @@ file, in types that make this information accessible in Python.
|
||||
|
||||
__author__ = 'robinson@google.com (Will Robinson)'
|
||||
|
||||
import six
|
||||
|
||||
from google.protobuf.internal import api_implementation
|
||||
|
||||
|
||||
@ -73,7 +75,7 @@ else:
|
||||
DescriptorMetaclass = type
|
||||
|
||||
|
||||
class DescriptorBase(object):
|
||||
class DescriptorBase(six.with_metaclass(DescriptorMetaclass)):
|
||||
|
||||
"""Descriptors base class.
|
||||
|
||||
@ -88,7 +90,6 @@ class DescriptorBase(object):
|
||||
avoid some bootstrapping issues.
|
||||
"""
|
||||
|
||||
__metaclass__ = DescriptorMetaclass
|
||||
if _USE_C_DESCRIPTORS:
|
||||
# The class, or tuple of classes, that are considered as "virtual
|
||||
# subclasses" of this descriptor class.
|
||||
|
@ -69,19 +69,15 @@ class ParseError(Error):
|
||||
|
||||
class TextWriter(object):
|
||||
def __init__(self, as_utf8):
|
||||
self._utf8 = as_utf8
|
||||
if as_utf8:
|
||||
if six.PY2:
|
||||
self._writer = io.BytesIO()
|
||||
else:
|
||||
self._writer = io.StringIO()
|
||||
|
||||
def write(self, val):
|
||||
if self._utf8:
|
||||
if six.PY2:
|
||||
if isinstance(val, six.text_type):
|
||||
val = val.encode('utf-8')
|
||||
else:
|
||||
if isinstance(val, bytes):
|
||||
val = val.decode('utf-8')
|
||||
return self._writer.write(val)
|
||||
|
||||
def close(self):
|
||||
@ -245,8 +241,7 @@ def PrintFieldValue(field, value, out, indent=0, as_utf8=False,
|
||||
out_as_utf8 = False
|
||||
else:
|
||||
out_as_utf8 = as_utf8
|
||||
out_text = text_encoding.CEscape(out_value, out_as_utf8)
|
||||
out.write(out_text)
|
||||
out.write(text_encoding.CEscape(out_value, out_as_utf8))
|
||||
out.write('\"')
|
||||
elif field.cpp_type == descriptor.FieldDescriptor.CPPTYPE_BOOL:
|
||||
if value:
|
||||
|
@ -1,9 +1,9 @@
|
||||
[tox]
|
||||
envlist =
|
||||
# Py3 tests currently fail because of text handling issues,
|
||||
# So only test py26/py27 for now.
|
||||
# cpp implementation on py34 is currently broken due to
|
||||
# changes introduced by http://bugs.python.org/issue22079.
|
||||
#py{26,27,33,34}-{cpp,python}
|
||||
py{26,27}-{cpp,python}
|
||||
py{26,27,33}-{cpp,python}, py34-{python}
|
||||
|
||||
[testenv]
|
||||
usedevelop=true
|
||||
|
Loading…
Reference in New Issue
Block a user