diff --git a/awips/dataaccess/PyGeometryData.py b/awips/dataaccess/PyGeometryData.py index c61f3c0..2e8b6e2 100644 --- a/awips/dataaccess/PyGeometryData.py +++ b/awips/dataaccess/PyGeometryData.py @@ -66,9 +66,9 @@ class PyGeometryData(IGeometryData, PyData.PyData): raise TypeError("Data for parameter " + param + " is not a numeric type.") def getUnit(self, param): - unit = self.__dataMap[param][2] if six.PY2: - return unit + return self.__dataMap[param][2] + unit = self.__dataMap[param.encode('utf-8')][2] if unit is not None: return unit.decode('utf-8') return unit diff --git a/dynamicserialize/dstypes/com/raytheon/uf/common/dataaccess/response/AbstractResponseData.py b/dynamicserialize/dstypes/com/raytheon/uf/common/dataaccess/response/AbstractResponseData.py index 2a79924..43fc70a 100644 --- a/dynamicserialize/dstypes/com/raytheon/uf/common/dataaccess/response/AbstractResponseData.py +++ b/dynamicserialize/dstypes/com/raytheon/uf/common/dataaccess/response/AbstractResponseData.py @@ -36,8 +36,18 @@ class AbstractResponseData(six.with_metaclass(abc.ABCMeta, object)): if six.PY2: return self.attributes else: - return [item.decode('utf-8') for item in self.attributes] + return self.convert(self.attributes) def setAttributes(self, 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