mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-12-03 17:00:43 +00:00
[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:
committed by
William Cheng
parent
14118807ba
commit
20b8eff6e3
@@ -1 +1 @@
|
||||
4.0.0-SNAPSHOT
|
||||
4.0.0
|
||||
@@ -1,6 +1,7 @@
|
||||
openapi: 3.0.1
|
||||
info:
|
||||
description: This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
description: This is a sample server Petstore server. For this sample, you can use
|
||||
the api key `special-key` to test the authorization filters.
|
||||
license:
|
||||
name: Apache-2.0
|
||||
url: http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
@@ -121,7 +122,8 @@ paths:
|
||||
/pet/findByTags:
|
||||
get:
|
||||
deprecated: true
|
||||
description: Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
|
||||
description: Multiple tags can be provided with comma separated strings. Use
|
||||
tag1, tag2, tag3 for testing.
|
||||
operationId: find_pets_by_tags
|
||||
parameters:
|
||||
- description: Tags to filter by
|
||||
@@ -340,7 +342,8 @@ paths:
|
||||
x-openapi-router-controller: openapi_server.controllers.store_controller
|
||||
/store/order/{orderId}:
|
||||
delete:
|
||||
description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
|
||||
description: For valid response try integer IDs with value < 1000. Anything
|
||||
above 1000 or nonintegers will generate API errors
|
||||
operationId: delete_order
|
||||
parameters:
|
||||
- description: ID of the order that needs to be deleted
|
||||
@@ -361,7 +364,8 @@ paths:
|
||||
- store
|
||||
x-openapi-router-controller: openapi_server.controllers.store_controller
|
||||
get:
|
||||
description: For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
|
||||
description: For valid response try integer IDs with value <= 5 or > 10. Other
|
||||
values will generated exceptions
|
||||
operationId: get_order_by_id
|
||||
parameters:
|
||||
- description: ID of pet that needs to be fetched
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user