From 842a5a049656060159197bbd95244e1d4326a667 Mon Sep 17 00:00:00 2001 From: David Trattnig <david.trattnig@o94.at> Date: Thu, 27 Aug 2020 13:17:57 +0200 Subject: [PATCH] Swagger codegen fix due Python 3.7 issues. #6 --- src/rest/util.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/rest/util.py b/src/rest/util.py index 527d142..ae48125 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) -- GitLab