Skip to content
Snippets Groups Projects
Commit dd03f534 authored by Hervé  MENAGER's avatar Hervé MENAGER
Browse files

Update util.py to a python3.7-compatible version

parent 416b851f
No related branches found
No related tags found
No related merge requests found
from typing import GenericMeta import datetime
from datetime import datetime, date
from six import integer_types, iteritems import six
import typing
def _deserialize(data, klass): def _deserialize(data, klass):
""" """Deserializes dict, list, str into an object.
Deserializes dict, list, str into an object.
:param data: dict, list or str. :param data: dict, list or str.
:param klass: class literal, or string of class name. :param klass: class literal, or string of class name.
...@@ -15,15 +15,15 @@ def _deserialize(data, klass): ...@@ -15,15 +15,15 @@ def _deserialize(data, klass):
if data is None: if data is None:
return None return None
if klass in integer_types or klass in (float, str, bool): if klass in six.integer_types or klass in (float, str, bool):
return _deserialize_primitive(data, klass) return _deserialize_primitive(data, klass)
elif klass == object: elif klass == object:
return _deserialize_object(data) return _deserialize_object(data)
elif klass == date: elif klass == datetime.date:
return deserialize_date(data) return deserialize_date(data)
elif klass == datetime: elif klass == datetime.datetime:
return deserialize_datetime(data) return deserialize_datetime(data)
elif type(klass) == GenericMeta: elif type(klass) == typing.GenericMeta:
if klass.__extra__ == list: if klass.__extra__ == list:
return _deserialize_list(data, klass.__args__[0]) return _deserialize_list(data, klass.__args__[0])
if klass.__extra__ == dict: if klass.__extra__ == dict:
...@@ -33,8 +33,7 @@ def _deserialize(data, klass): ...@@ -33,8 +33,7 @@ def _deserialize(data, klass):
def _deserialize_primitive(data, klass): def _deserialize_primitive(data, klass):
""" """Deserializes to primitive type.
Deserializes to primitive type.
:param data: data to deserialize. :param data: data to deserialize.
:param klass: class literal. :param klass: class literal.
...@@ -45,15 +44,14 @@ def _deserialize_primitive(data, klass): ...@@ -45,15 +44,14 @@ def _deserialize_primitive(data, klass):
try: try:
value = klass(data) value = klass(data)
except UnicodeEncodeError: except UnicodeEncodeError:
value = unicode(data) value = six.u(data)
except TypeError: except TypeError:
value = data value = data
return value return value
def _deserialize_object(value): def _deserialize_object(value):
""" """Return a original value.
Return a original value.
:return: object. :return: object.
""" """
...@@ -61,8 +59,7 @@ def _deserialize_object(value): ...@@ -61,8 +59,7 @@ def _deserialize_object(value):
def deserialize_date(string): def deserialize_date(string):
""" """Deserializes string to date.
Deserializes string to date.
:param string: str. :param string: str.
:type string: str :type string: str
...@@ -71,15 +68,13 @@ def deserialize_date(string): ...@@ -71,15 +68,13 @@ def deserialize_date(string):
""" """
try: try:
from dateutil.parser import parse from dateutil.parser import parse
return parse(string).date() return parse(string).date()
except ImportError: except ImportError:
return string return string
def deserialize_datetime(string): def deserialize_datetime(string):
""" """Deserializes string to datetime.
Deserializes string to datetime.
The string should be in iso8601 datetime format. The string should be in iso8601 datetime format.
...@@ -90,15 +85,13 @@ def deserialize_datetime(string): ...@@ -90,15 +85,13 @@ def deserialize_datetime(string):
""" """
try: try:
from dateutil.parser import parse from dateutil.parser import parse
return parse(string) return parse(string)
except ImportError: except ImportError:
return string return string
def deserialize_model(data, klass): def deserialize_model(data, klass):
""" """Deserializes list or dict to model.
Deserializes list or dict to model.
:param data: dict, list. :param data: dict, list.
:type data: dict | list :type data: dict | list
...@@ -110,12 +103,10 @@ def deserialize_model(data, klass): ...@@ -110,12 +103,10 @@ def deserialize_model(data, klass):
if not instance.swagger_types: if not instance.swagger_types:
return data return data
for attr, attr_type in iteritems(instance.swagger_types): for attr, attr_type in six.iteritems(instance.swagger_types):
if ( if data is not None \
data is not None and instance.attribute_map[attr] in data \
and instance.attribute_map[attr] in data and isinstance(data, (list, dict)):
and isinstance(data, (list, dict))
):
value = data[instance.attribute_map[attr]] value = data[instance.attribute_map[attr]]
setattr(instance, attr, _deserialize(value, attr_type)) setattr(instance, attr, _deserialize(value, attr_type))
...@@ -123,8 +114,7 @@ def deserialize_model(data, klass): ...@@ -123,8 +114,7 @@ def deserialize_model(data, klass):
def _deserialize_list(data, boxed_type): def _deserialize_list(data, boxed_type):
""" """Deserializes a list and its elements.
Deserializes a list and its elements.
:param data: list to deserialize. :param data: list to deserialize.
:type data: list :type data: list
...@@ -133,12 +123,12 @@ def _deserialize_list(data, boxed_type): ...@@ -133,12 +123,12 @@ def _deserialize_list(data, boxed_type):
:return: deserialized list. :return: deserialized list.
:rtype: list :rtype: list
""" """
return [_deserialize(sub_data, boxed_type) for sub_data in data] return [_deserialize(sub_data, boxed_type)
for sub_data in data]
def _deserialize_dict(data, boxed_type): def _deserialize_dict(data, boxed_type):
""" """Deserializes a dict and its elements.
Deserializes a dict and its elements.
:param data: dict to deserialize. :param data: dict to deserialize.
:type data: dict :type data: dict
...@@ -147,4 +137,5 @@ def _deserialize_dict(data, boxed_type): ...@@ -147,4 +137,5 @@ def _deserialize_dict(data, boxed_type):
:return: deserialized dict. :return: deserialized dict.
:rtype: dict :rtype: dict
""" """
return {k: _deserialize(v, boxed_type) for k, v in iteritems(data)} return {k: _deserialize(v, boxed_type)
for k, v in six.iteritems(data)}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment