fixing attribute and unit encodings for python3 bytestrings

This commit is contained in:
Michael James 2018-10-15 16:27:32 -06:00
parent f51a590e51
commit 4ecb997c3e
2 changed files with 13 additions and 3 deletions

View file

@ -66,9 +66,9 @@ class PyGeometryData(IGeometryData, PyData.PyData):
raise TypeError("Data for parameter " + param + " is not a numeric type.") raise TypeError("Data for parameter " + param + " is not a numeric type.")
def getUnit(self, param): def getUnit(self, param):
unit = self.__dataMap[param][2]
if six.PY2: if six.PY2:
return unit return self.__dataMap[param][2]
unit = self.__dataMap[param.encode('utf-8')][2]
if unit is not None: if unit is not None:
return unit.decode('utf-8') return unit.decode('utf-8')
return unit return unit

View file

@ -36,8 +36,18 @@ class AbstractResponseData(six.with_metaclass(abc.ABCMeta, object)):
if six.PY2: if six.PY2:
return self.attributes return self.attributes
else: else:
return [item.decode('utf-8') for item in self.attributes] return self.convert(self.attributes)
def setAttributes(self, attributes): def setAttributes(self, attributes):
self.attributes = attributes self.attributes = attributes
def convert(self, data):
if isinstance(data, dict):
return dict(map(self.convert, data.items()))
if isinstance(data, bytes):
return data.decode('utf-8')
if isinstance(data, tuple):
return tuple(map(self.convert, data))
if isinstance(data, list):
return list(map(self.convert, data))
return data