diff --git a/.circleci/config.yml b/.circleci/config.yml index 5f3112bd919..c83e86c971d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -122,7 +122,7 @@ jobs: steps: - command_build_and_test: jobId: "mvnCleanInstall" - testPythonClientSamples: + testPython38ClientSamples: docker: - image: python:3.8 working_directory: ~/OpenAPITools/openapi-json-schema-generator @@ -134,10 +134,23 @@ jobs: - checkout - command_docker_build_and_test: jobId: "testPythonClientSamples" + testPython39ClientSamples: + docker: + - image: python:3.9 + working_directory: ~/OpenAPITools/openapi-json-schema-generator + shell: /bin/bash --login + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + steps: + - checkout + - command_docker_build_and_test: + jobId: "testPythonClientSamples" workflows: version: 2 build: jobs: - ensureSamplesAndGeneratorDocsUpToDate - mvnCleanInstall - - testPythonClientSamples + - testPython38ClientSamples + - testPython39ClientSamples diff --git a/samples/client/3_0_3_unit_test/python/src/unit_test_api/schemas/validation.py b/samples/client/3_0_3_unit_test/python/src/unit_test_api/schemas/validation.py index 6c98ab116a8..5b40e210690 100644 --- a/samples/client/3_0_3_unit_test/python/src/unit_test_api/schemas/validation.py +++ b/samples/client/3_0_3_unit_test/python/src/unit_test_api/schemas/validation.py @@ -24,13 +24,7 @@ from . import format, original_immutabledict -_K = typing.TypeVar('_K') -_V = typing.TypeVar('_V', covariant=True) - - -class immutabledict(typing.Generic[_K, _V], original_immutabledict.immutabledict[_K, _V]): - # this class layer needed to not show init signature when making new instances - pass +immutabledict = original_immutabledict.immutabledict @dataclasses.dataclass @@ -172,7 +166,9 @@ def _get_class( elif isinstance(item_cls, type): return item_cls elif isinstance(item_cls, typing.ForwardRef): - return item_cls._evaluate(None, local_namespace) + if sys.version_info < (3, 9): + return item_cls._evaluate(None, local_namespace) + return item_cls._evaluate(None, local_namespace, set()) raise ValueError('invalid class value passed in') diff --git a/samples/client/3_0_3_unit_test/python/tox.ini b/samples/client/3_0_3_unit_test/python/tox.ini index 86e3d2fbc19..a0162172546 100644 --- a/samples/client/3_0_3_unit_test/python/tox.ini +++ b/samples/client/3_0_3_unit_test/python/tox.ini @@ -1,5 +1,4 @@ [tox] -envlist = py38 isolated_build = True [testenv] diff --git a/samples/client/3_1_0_json_schema/python/src/json_schema_api/schemas/validation.py b/samples/client/3_1_0_json_schema/python/src/json_schema_api/schemas/validation.py index e4d59817963..586a155e344 100644 --- a/samples/client/3_1_0_json_schema/python/src/json_schema_api/schemas/validation.py +++ b/samples/client/3_1_0_json_schema/python/src/json_schema_api/schemas/validation.py @@ -24,13 +24,7 @@ from . import format, original_immutabledict -_K = typing.TypeVar('_K') -_V = typing.TypeVar('_V', covariant=True) - - -class immutabledict(typing.Generic[_K, _V], original_immutabledict.immutabledict[_K, _V]): - # this class layer needed to not show init signature when making new instances - pass +immutabledict = original_immutabledict.immutabledict @dataclasses.dataclass @@ -172,7 +166,9 @@ def _get_class( elif isinstance(item_cls, type): return item_cls elif isinstance(item_cls, typing.ForwardRef): - return item_cls._evaluate(None, local_namespace) + if sys.version_info < (3, 9): + return item_cls._evaluate(None, local_namespace) + return item_cls._evaluate(None, local_namespace, set()) raise ValueError('invalid class value passed in') diff --git a/samples/client/3_1_0_json_schema/python/tox.ini b/samples/client/3_1_0_json_schema/python/tox.ini index 283695fea66..f29d5884e07 100644 --- a/samples/client/3_1_0_json_schema/python/tox.ini +++ b/samples/client/3_1_0_json_schema/python/tox.ini @@ -1,5 +1,4 @@ [tox] -envlist = py38 isolated_build = True [testenv] diff --git a/samples/client/openapi_features/nonCompliantUseDiscriminatorIfCompositionFails/python/src/this_package/schemas/validation.py b/samples/client/openapi_features/nonCompliantUseDiscriminatorIfCompositionFails/python/src/this_package/schemas/validation.py index e876722045c..ad4bac5f15b 100644 --- a/samples/client/openapi_features/nonCompliantUseDiscriminatorIfCompositionFails/python/src/this_package/schemas/validation.py +++ b/samples/client/openapi_features/nonCompliantUseDiscriminatorIfCompositionFails/python/src/this_package/schemas/validation.py @@ -24,13 +24,7 @@ from . import format, original_immutabledict -_K = typing.TypeVar('_K') -_V = typing.TypeVar('_V', covariant=True) - - -class immutabledict(typing.Generic[_K, _V], original_immutabledict.immutabledict[_K, _V]): - # this class layer needed to not show init signature when making new instances - pass +immutabledict = original_immutabledict.immutabledict @dataclasses.dataclass @@ -184,7 +178,9 @@ def _get_class( elif isinstance(item_cls, type): return item_cls elif isinstance(item_cls, typing.ForwardRef): - return item_cls._evaluate(None, local_namespace) + if sys.version_info < (3, 9): + return item_cls._evaluate(None, local_namespace) + return item_cls._evaluate(None, local_namespace, set()) raise ValueError('invalid class value passed in') diff --git a/samples/client/openapi_features/nonCompliantUseDiscriminatorIfCompositionFails/python/tox.ini b/samples/client/openapi_features/nonCompliantUseDiscriminatorIfCompositionFails/python/tox.ini index 7bd1406a8c5..f942843237d 100644 --- a/samples/client/openapi_features/nonCompliantUseDiscriminatorIfCompositionFails/python/tox.ini +++ b/samples/client/openapi_features/nonCompliantUseDiscriminatorIfCompositionFails/python/tox.ini @@ -1,5 +1,4 @@ [tox] -envlist = py38 isolated_build = True [testenv] diff --git a/samples/client/openapi_features/security/python/src/this_package/schemas/validation.py b/samples/client/openapi_features/security/python/src/this_package/schemas/validation.py index 94f9b5eb782..2c0ea36f61d 100644 --- a/samples/client/openapi_features/security/python/src/this_package/schemas/validation.py +++ b/samples/client/openapi_features/security/python/src/this_package/schemas/validation.py @@ -24,13 +24,7 @@ from . import format, original_immutabledict -_K = typing.TypeVar('_K') -_V = typing.TypeVar('_V', covariant=True) - - -class immutabledict(typing.Generic[_K, _V], original_immutabledict.immutabledict[_K, _V]): - # this class layer needed to not show init signature when making new instances - pass +immutabledict = original_immutabledict.immutabledict @dataclasses.dataclass @@ -172,7 +166,9 @@ def _get_class( elif isinstance(item_cls, type): return item_cls elif isinstance(item_cls, typing.ForwardRef): - return item_cls._evaluate(None, local_namespace) + if sys.version_info < (3, 9): + return item_cls._evaluate(None, local_namespace) + return item_cls._evaluate(None, local_namespace, set()) raise ValueError('invalid class value passed in') diff --git a/samples/client/openapi_features/security/python/tox.ini b/samples/client/openapi_features/security/python/tox.ini index 7bd1406a8c5..f942843237d 100644 --- a/samples/client/openapi_features/security/python/tox.ini +++ b/samples/client/openapi_features/security/python/tox.ini @@ -1,5 +1,4 @@ [tox] -envlist = py38 isolated_build = True [testenv] diff --git a/samples/client/petstore/python/src/petstore_api/schemas/validation.py b/samples/client/petstore/python/src/petstore_api/schemas/validation.py index dbdc99d10b5..1bc6543b9ce 100644 --- a/samples/client/petstore/python/src/petstore_api/schemas/validation.py +++ b/samples/client/petstore/python/src/petstore_api/schemas/validation.py @@ -24,13 +24,7 @@ from . import format, original_immutabledict -_K = typing.TypeVar('_K') -_V = typing.TypeVar('_V', covariant=True) - - -class immutabledict(typing.Generic[_K, _V], original_immutabledict.immutabledict[_K, _V]): - # this class layer needed to not show init signature when making new instances - pass +immutabledict = original_immutabledict.immutabledict @dataclasses.dataclass @@ -172,7 +166,9 @@ def _get_class( elif isinstance(item_cls, type): return item_cls elif isinstance(item_cls, typing.ForwardRef): - return item_cls._evaluate(None, local_namespace) + if sys.version_info < (3, 9): + return item_cls._evaluate(None, local_namespace) + return item_cls._evaluate(None, local_namespace, set()) raise ValueError('invalid class value passed in') diff --git a/samples/client/petstore/python/tox.ini b/samples/client/petstore/python/tox.ini index 0bcd8dd9169..e75b80f1df7 100644 --- a/samples/client/petstore/python/tox.ini +++ b/samples/client/petstore/python/tox.ini @@ -1,5 +1,4 @@ [tox] -envlist = py38 isolated_build = True [testenv] diff --git a/src/main/resources/python/schemas/validation.hbs b/src/main/resources/python/schemas/validation.hbs index 65aebf15a04..012159c5804 100644 --- a/src/main/resources/python/schemas/validation.hbs +++ b/src/main/resources/python/schemas/validation.hbs @@ -19,13 +19,7 @@ from {{packageName}}.configurations import schema_configuration from . import format, original_immutabledict -_K = typing.TypeVar('_K') -_V = typing.TypeVar('_V', covariant=True) - - -class immutabledict(typing.Generic[_K, _V], original_immutabledict.immutabledict[_K, _V]): - # this class layer needed to not show init signature when making new instances - pass +immutabledict = original_immutabledict.immutabledict @dataclasses.dataclass @@ -183,7 +177,9 @@ def _get_class( elif isinstance(item_cls, type): return item_cls elif isinstance(item_cls, typing.ForwardRef): - return item_cls._evaluate(None, local_namespace) + if sys.version_info < (3, 9): + return item_cls._evaluate(None, local_namespace) + return item_cls._evaluate(None, local_namespace, set()) raise ValueError('invalid class value passed in') diff --git a/src/main/resources/python/tox.hbs b/src/main/resources/python/tox.hbs index 5f9a3a9dca2..9e38a0043c1 100644 --- a/src/main/resources/python/tox.hbs +++ b/src/main/resources/python/tox.hbs @@ -1,5 +1,4 @@ [tox] -envlist = py38 isolated_build = True [testenv]