From 10925938418818edd55e026087eadfd7eebedb90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=B5=E3=81=81?= <34892635+fa0311@users.noreply.github.com> Date: Thu, 2 Nov 2023 23:14:20 +0900 Subject: [PATCH] [python] add circular reference import (#16940) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [python] add circular reference import Signed-off-by: ふぁ * [python] update samples Signed-off-by: ふぁ --------- Signed-off-by: ふぁ --- .../src/main/resources/python/model_anyof.mustache | 8 +++----- .../src/main/resources/python/model_generic.mustache | 7 ++----- .../src/main/resources/python/model_oneof.mustache | 8 +++----- .../petstore/python-aiohttp/petstore_api/models/animal.py | 7 ++----- .../petstore_api/models/circular_reference_model.py | 7 ++----- .../python-aiohttp/petstore_api/models/dummy_model.py | 7 ++----- .../python-aiohttp/petstore_api/models/first_ref.py | 7 ++----- .../python-aiohttp/petstore_api/models/second_ref.py | 7 ++----- .../petstore_api/models/self_reference_model.py | 7 ++----- .../client/petstore/python/petstore_api/models/animal.py | 7 ++----- .../petstore_api/models/circular_reference_model.py | 7 ++----- .../petstore/python/petstore_api/models/dummy_model.py | 7 ++----- .../petstore/python/petstore_api/models/first_ref.py | 7 ++----- .../petstore/python/petstore_api/models/second_ref.py | 7 ++----- .../python/petstore_api/models/self_reference_model.py | 7 ++----- .../openapi3/client/petstore/python/tests/test_model.py | 1 - 16 files changed, 32 insertions(+), 76 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/python/model_anyof.mustache b/modules/openapi-generator/src/main/resources/python/model_anyof.mustache index 874886b2ed1..bbdaea4b310 100644 --- a/modules/openapi-generator/src/main/resources/python/model_anyof.mustache +++ b/modules/openapi-generator/src/main/resources/python/model_anyof.mustache @@ -183,10 +183,8 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}} {{#vendorExtensions.x-py-postponed-model-imports.size}} {{#vendorExtensions.x-py-postponed-model-imports}} -from typing import TYPE_CHECKING -if TYPE_CHECKING: - {{{.}}} - # TODO: pydantic v2 +{{{.}}} {{/vendorExtensions.x-py-postponed-model-imports}} - # {{classname}}.model_rebuild() +# TODO: Rewrite to not use raise_errors +{{classname}}.model_rebuild(raise_errors=False) {{/vendorExtensions.x-py-postponed-model-imports.size}} diff --git a/modules/openapi-generator/src/main/resources/python/model_generic.mustache b/modules/openapi-generator/src/main/resources/python/model_generic.mustache index 3a17ae1c82a..5eaaf29d218 100644 --- a/modules/openapi-generator/src/main/resources/python/model_generic.mustache +++ b/modules/openapi-generator/src/main/resources/python/model_generic.mustache @@ -378,9 +378,6 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}} {{#vendorExtensions.x-py-postponed-model-imports}} {{{.}}} {{/vendorExtensions.x-py-postponed-model-imports}} -from typing import TYPE_CHECKING -if TYPE_CHECKING: - # TODO: pydantic v2 - # {{classname}}.model_rebuild() - pass +# TODO: Rewrite to not use raise_errors +{{classname}}.model_rebuild(raise_errors=False) {{/vendorExtensions.x-py-postponed-model-imports.size}} diff --git a/modules/openapi-generator/src/main/resources/python/model_oneof.mustache b/modules/openapi-generator/src/main/resources/python/model_oneof.mustache index 4c26feccf65..4fb47c8c874 100644 --- a/modules/openapi-generator/src/main/resources/python/model_oneof.mustache +++ b/modules/openapi-generator/src/main/resources/python/model_oneof.mustache @@ -207,10 +207,8 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}} {{#vendorExtensions.x-py-postponed-model-imports.size}} {{#vendorExtensions.x-py-postponed-model-imports}} -from typing import TYPE_CHECKING -if TYPE_CHECKING: - {{{.}}} - # TODO: pydantic v2 +{{{.}}} {{/vendorExtensions.x-py-postponed-model-imports}} - # {{classname}}.model_rebuild() +# TODO: Rewrite to not use raise_errors +{{classname}}.model_rebuild(raise_errors=False) {{/vendorExtensions.x-py-postponed-model-imports.size}} diff --git a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/animal.py b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/animal.py index 20ac6fa8442..fe213c1e1a2 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/animal.py +++ b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/animal.py @@ -104,9 +104,6 @@ class Animal(BaseModel): from petstore_api.models.cat import Cat from petstore_api.models.dog import Dog -from typing import TYPE_CHECKING -if TYPE_CHECKING: - # TODO: pydantic v2 - # Animal.model_rebuild() - pass +# TODO: Rewrite to not use raise_errors +Animal.model_rebuild(raise_errors=False) diff --git a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/circular_reference_model.py b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/circular_reference_model.py index e095b779611..8176d68569f 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/circular_reference_model.py +++ b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/circular_reference_model.py @@ -90,9 +90,6 @@ class CircularReferenceModel(BaseModel): return _obj from petstore_api.models.first_ref import FirstRef -from typing import TYPE_CHECKING -if TYPE_CHECKING: - # TODO: pydantic v2 - # CircularReferenceModel.model_rebuild() - pass +# TODO: Rewrite to not use raise_errors +CircularReferenceModel.model_rebuild(raise_errors=False) diff --git a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/dummy_model.py b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/dummy_model.py index f04e2ae9500..288287f975f 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/dummy_model.py +++ b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/dummy_model.py @@ -90,9 +90,6 @@ class DummyModel(BaseModel): return _obj from petstore_api.models.self_reference_model import SelfReferenceModel -from typing import TYPE_CHECKING -if TYPE_CHECKING: - # TODO: pydantic v2 - # DummyModel.model_rebuild() - pass +# TODO: Rewrite to not use raise_errors +DummyModel.model_rebuild(raise_errors=False) diff --git a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/first_ref.py b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/first_ref.py index b976f122f4e..cc442eca85b 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/first_ref.py +++ b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/first_ref.py @@ -90,9 +90,6 @@ class FirstRef(BaseModel): return _obj from petstore_api.models.second_ref import SecondRef -from typing import TYPE_CHECKING -if TYPE_CHECKING: - # TODO: pydantic v2 - # FirstRef.model_rebuild() - pass +# TODO: Rewrite to not use raise_errors +FirstRef.model_rebuild(raise_errors=False) diff --git a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/second_ref.py b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/second_ref.py index a602e3ca7e1..412be927455 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/second_ref.py +++ b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/second_ref.py @@ -90,9 +90,6 @@ class SecondRef(BaseModel): return _obj from petstore_api.models.circular_reference_model import CircularReferenceModel -from typing import TYPE_CHECKING -if TYPE_CHECKING: - # TODO: pydantic v2 - # SecondRef.model_rebuild() - pass +# TODO: Rewrite to not use raise_errors +SecondRef.model_rebuild(raise_errors=False) diff --git a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/self_reference_model.py b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/self_reference_model.py index 00a4f44b555..1fb606fba4a 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/self_reference_model.py +++ b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/self_reference_model.py @@ -90,9 +90,6 @@ class SelfReferenceModel(BaseModel): return _obj from petstore_api.models.dummy_model import DummyModel -from typing import TYPE_CHECKING -if TYPE_CHECKING: - # TODO: pydantic v2 - # SelfReferenceModel.model_rebuild() - pass +# TODO: Rewrite to not use raise_errors +SelfReferenceModel.model_rebuild(raise_errors=False) diff --git a/samples/openapi3/client/petstore/python/petstore_api/models/animal.py b/samples/openapi3/client/petstore/python/petstore_api/models/animal.py index 73c342cf237..72b86942d9c 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/models/animal.py +++ b/samples/openapi3/client/petstore/python/petstore_api/models/animal.py @@ -112,9 +112,6 @@ class Animal(BaseModel): from petstore_api.models.cat import Cat from petstore_api.models.dog import Dog -from typing import TYPE_CHECKING -if TYPE_CHECKING: - # TODO: pydantic v2 - # Animal.model_rebuild() - pass +# TODO: Rewrite to not use raise_errors +Animal.model_rebuild(raise_errors=False) diff --git a/samples/openapi3/client/petstore/python/petstore_api/models/circular_reference_model.py b/samples/openapi3/client/petstore/python/petstore_api/models/circular_reference_model.py index ca3f50a3f0d..5d753c24037 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/models/circular_reference_model.py +++ b/samples/openapi3/client/petstore/python/petstore_api/models/circular_reference_model.py @@ -103,9 +103,6 @@ class CircularReferenceModel(BaseModel): return _obj from petstore_api.models.first_ref import FirstRef -from typing import TYPE_CHECKING -if TYPE_CHECKING: - # TODO: pydantic v2 - # CircularReferenceModel.model_rebuild() - pass +# TODO: Rewrite to not use raise_errors +CircularReferenceModel.model_rebuild(raise_errors=False) diff --git a/samples/openapi3/client/petstore/python/petstore_api/models/dummy_model.py b/samples/openapi3/client/petstore/python/petstore_api/models/dummy_model.py index 2f2315a7c38..c54d487cadc 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/models/dummy_model.py +++ b/samples/openapi3/client/petstore/python/petstore_api/models/dummy_model.py @@ -103,9 +103,6 @@ class DummyModel(BaseModel): return _obj from petstore_api.models.self_reference_model import SelfReferenceModel -from typing import TYPE_CHECKING -if TYPE_CHECKING: - # TODO: pydantic v2 - # DummyModel.model_rebuild() - pass +# TODO: Rewrite to not use raise_errors +DummyModel.model_rebuild(raise_errors=False) diff --git a/samples/openapi3/client/petstore/python/petstore_api/models/first_ref.py b/samples/openapi3/client/petstore/python/petstore_api/models/first_ref.py index 37d913e3281..3711a163b05 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/models/first_ref.py +++ b/samples/openapi3/client/petstore/python/petstore_api/models/first_ref.py @@ -103,9 +103,6 @@ class FirstRef(BaseModel): return _obj from petstore_api.models.second_ref import SecondRef -from typing import TYPE_CHECKING -if TYPE_CHECKING: - # TODO: pydantic v2 - # FirstRef.model_rebuild() - pass +# TODO: Rewrite to not use raise_errors +FirstRef.model_rebuild(raise_errors=False) diff --git a/samples/openapi3/client/petstore/python/petstore_api/models/second_ref.py b/samples/openapi3/client/petstore/python/petstore_api/models/second_ref.py index ec009e46ffb..6dc55f9a623 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/models/second_ref.py +++ b/samples/openapi3/client/petstore/python/petstore_api/models/second_ref.py @@ -103,9 +103,6 @@ class SecondRef(BaseModel): return _obj from petstore_api.models.circular_reference_model import CircularReferenceModel -from typing import TYPE_CHECKING -if TYPE_CHECKING: - # TODO: pydantic v2 - # SecondRef.model_rebuild() - pass +# TODO: Rewrite to not use raise_errors +SecondRef.model_rebuild(raise_errors=False) diff --git a/samples/openapi3/client/petstore/python/petstore_api/models/self_reference_model.py b/samples/openapi3/client/petstore/python/petstore_api/models/self_reference_model.py index 53d88067a45..fda9fb712fb 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/models/self_reference_model.py +++ b/samples/openapi3/client/petstore/python/petstore_api/models/self_reference_model.py @@ -103,9 +103,6 @@ class SelfReferenceModel(BaseModel): return _obj from petstore_api.models.dummy_model import DummyModel -from typing import TYPE_CHECKING -if TYPE_CHECKING: - # TODO: pydantic v2 - # SelfReferenceModel.model_rebuild() - pass +# TODO: Rewrite to not use raise_errors +SelfReferenceModel.model_rebuild(raise_errors=False) diff --git a/samples/openapi3/client/petstore/python/tests/test_model.py b/samples/openapi3/client/petstore/python/tests/test_model.py index c41bfe8e753..c96ec890acc 100644 --- a/samples/openapi3/client/petstore/python/tests/test_model.py +++ b/samples/openapi3/client/petstore/python/tests/test_model.py @@ -560,7 +560,6 @@ class ModelTests(unittest.TestCase): # should not throw the following errors: # pydantic.errors.ConfigError: field "additional_properties" not yet prepared so type is still a ForwardRef, you might need to call ObjectToTestAdditionalProperties.update_forward_refs(). - @unittest.skip("TODO: pydantic v2: fix circular dependencies between CircularReferenceModel, FirstRef, SecondRef") def test_first_ref(self): # shouldn't throw "still a ForwardRef" error a = petstore_api.FirstRef.from_dict({})