diff --git a/src/rest/util.py b/src/rest/util.py index 527d1424c3d5563073b18b4da1a9904b2cb6b62b..ae481251bd02adeacc7374943b0897831cf87cd9 100644 --- a/src/rest/util.py +++ b/src/rest/util.py @@ -23,11 +23,25 @@ def _deserialize(data, klass): return deserialize_date(data) elif klass == datetime.datetime: return deserialize_datetime(data) - elif type(klass) == typing.GenericMeta: - if klass.__extra__ == list: + + # NOTE: Due to Pyton 3.7 not providing `typing.GenericMeta` anymore, + # this workaround is needed (See https://github.com/swagger-api/swagger-codegen/issues/8921) + # As soon this has been fixed in SwaggerHub Codegen this class can + # be replaced by the generated one again. + # + elif hasattr(klass, '__origin__'): + if klass.__origin__ == list: return _deserialize_list(data, klass.__args__[0]) - if klass.__extra__ == dict: + if klass.__origin__ == dict: return _deserialize_dict(data, klass.__args__[1]) + + # Original generated fragment by Codegen (pre Python 3.7 compatible only): + # + # elif type(klass) == typing.GenericMeta: + # if klass.__extra__ == list: + # return _deserialize_list(data, klass.__args__[0]) + # if klass.__extra__ == dict: + # return _deserialize_dict(data, klass.__args__[1]) else: return deserialize_model(data, klass)