[python-server] Support python 3.7 for all server-generators (#2884)

* Support python 3.7 for all server-generators

Signed-off-by: Guillaume Smaha <guillaume.smaha@gmail.com>

* Rename typing_patch.py to typing_utils.py

* Renaming typing_patch.mustache to typing_utils.mustache

* Fix comparaison in typing_utils.is_dict for python3.7
This commit is contained in:
Guillaume SMAHA
2019-05-29 23:36:06 -04:00
committed by William Cheng
parent 14118807ba
commit 20b8eff6e3
31 changed files with 377 additions and 59 deletions

View File

@@ -0,0 +1,32 @@
# coding: utf-8
import sys
if sys.version_info < (3, 7):
import typing
def is_generic(klass):
""" Determine whether klass is a generic class """
return type(klass) == typing.GenericMeta
def is_dict(klass):
""" Determine whether klass is a Dict """
return klass.__extra__ == dict
def is_list(klass):
""" Determine whether klass is a List """
return klass.__extra__ == list
else:
def is_generic(klass):
""" Determine whether klass is a generic class """
return hasattr(klass, '__origin__')
def is_dict(klass):
""" Determine whether klass is a Dict """
return klass.__origin__ == dict
def is_list(klass):
""" Determine whether klass is a List """
return klass.__origin__ == list

View File

@@ -2,6 +2,7 @@ import datetime
import six
import typing
from openapi_server import typing_utils
def _deserialize(data, klass):
@@ -23,10 +24,10 @@ 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:
elif typing_utils.is_generic(klass):
if typing_utils.is_list(klass):
return _deserialize_list(data, klass.__args__[0])
if klass.__extra__ == dict:
if typing_utils.is_dict(klass):
return _deserialize_dict(data, klass.__args__[1])
else:
return deserialize_model(data, klass)