forked from loafle/openapi-generator-original
[python] add circular reference import (#16940)
* [python] add circular reference import Signed-off-by: ふぁ <yuki@yuki0311.com> * [python] update samples Signed-off-by: ふぁ <yuki@yuki0311.com> --------- Signed-off-by: ふぁ <yuki@yuki0311.com>
This commit is contained in:
parent
7b8a515dcb
commit
1092593841
@ -183,10 +183,8 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
|
|||||||
|
|
||||||
{{#vendorExtensions.x-py-postponed-model-imports.size}}
|
{{#vendorExtensions.x-py-postponed-model-imports.size}}
|
||||||
{{#vendorExtensions.x-py-postponed-model-imports}}
|
{{#vendorExtensions.x-py-postponed-model-imports}}
|
||||||
from typing import TYPE_CHECKING
|
|
||||||
if TYPE_CHECKING:
|
|
||||||
{{{.}}}
|
{{{.}}}
|
||||||
# TODO: pydantic v2
|
|
||||||
{{/vendorExtensions.x-py-postponed-model-imports}}
|
{{/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}}
|
{{/vendorExtensions.x-py-postponed-model-imports.size}}
|
||||||
|
@ -378,9 +378,6 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
|
|||||||
{{#vendorExtensions.x-py-postponed-model-imports}}
|
{{#vendorExtensions.x-py-postponed-model-imports}}
|
||||||
{{{.}}}
|
{{{.}}}
|
||||||
{{/vendorExtensions.x-py-postponed-model-imports}}
|
{{/vendorExtensions.x-py-postponed-model-imports}}
|
||||||
from typing import TYPE_CHECKING
|
# TODO: Rewrite to not use raise_errors
|
||||||
if TYPE_CHECKING:
|
{{classname}}.model_rebuild(raise_errors=False)
|
||||||
# TODO: pydantic v2
|
|
||||||
# {{classname}}.model_rebuild()
|
|
||||||
pass
|
|
||||||
{{/vendorExtensions.x-py-postponed-model-imports.size}}
|
{{/vendorExtensions.x-py-postponed-model-imports.size}}
|
||||||
|
@ -207,10 +207,8 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}}
|
|||||||
|
|
||||||
{{#vendorExtensions.x-py-postponed-model-imports.size}}
|
{{#vendorExtensions.x-py-postponed-model-imports.size}}
|
||||||
{{#vendorExtensions.x-py-postponed-model-imports}}
|
{{#vendorExtensions.x-py-postponed-model-imports}}
|
||||||
from typing import TYPE_CHECKING
|
|
||||||
if TYPE_CHECKING:
|
|
||||||
{{{.}}}
|
{{{.}}}
|
||||||
# TODO: pydantic v2
|
|
||||||
{{/vendorExtensions.x-py-postponed-model-imports}}
|
{{/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}}
|
{{/vendorExtensions.x-py-postponed-model-imports.size}}
|
||||||
|
@ -104,9 +104,6 @@ class Animal(BaseModel):
|
|||||||
|
|
||||||
from petstore_api.models.cat import Cat
|
from petstore_api.models.cat import Cat
|
||||||
from petstore_api.models.dog import Dog
|
from petstore_api.models.dog import Dog
|
||||||
from typing import TYPE_CHECKING
|
# TODO: Rewrite to not use raise_errors
|
||||||
if TYPE_CHECKING:
|
Animal.model_rebuild(raise_errors=False)
|
||||||
# TODO: pydantic v2
|
|
||||||
# Animal.model_rebuild()
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
@ -90,9 +90,6 @@ class CircularReferenceModel(BaseModel):
|
|||||||
return _obj
|
return _obj
|
||||||
|
|
||||||
from petstore_api.models.first_ref import FirstRef
|
from petstore_api.models.first_ref import FirstRef
|
||||||
from typing import TYPE_CHECKING
|
# TODO: Rewrite to not use raise_errors
|
||||||
if TYPE_CHECKING:
|
CircularReferenceModel.model_rebuild(raise_errors=False)
|
||||||
# TODO: pydantic v2
|
|
||||||
# CircularReferenceModel.model_rebuild()
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
@ -90,9 +90,6 @@ class DummyModel(BaseModel):
|
|||||||
return _obj
|
return _obj
|
||||||
|
|
||||||
from petstore_api.models.self_reference_model import SelfReferenceModel
|
from petstore_api.models.self_reference_model import SelfReferenceModel
|
||||||
from typing import TYPE_CHECKING
|
# TODO: Rewrite to not use raise_errors
|
||||||
if TYPE_CHECKING:
|
DummyModel.model_rebuild(raise_errors=False)
|
||||||
# TODO: pydantic v2
|
|
||||||
# DummyModel.model_rebuild()
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
@ -90,9 +90,6 @@ class FirstRef(BaseModel):
|
|||||||
return _obj
|
return _obj
|
||||||
|
|
||||||
from petstore_api.models.second_ref import SecondRef
|
from petstore_api.models.second_ref import SecondRef
|
||||||
from typing import TYPE_CHECKING
|
# TODO: Rewrite to not use raise_errors
|
||||||
if TYPE_CHECKING:
|
FirstRef.model_rebuild(raise_errors=False)
|
||||||
# TODO: pydantic v2
|
|
||||||
# FirstRef.model_rebuild()
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
@ -90,9 +90,6 @@ class SecondRef(BaseModel):
|
|||||||
return _obj
|
return _obj
|
||||||
|
|
||||||
from petstore_api.models.circular_reference_model import CircularReferenceModel
|
from petstore_api.models.circular_reference_model import CircularReferenceModel
|
||||||
from typing import TYPE_CHECKING
|
# TODO: Rewrite to not use raise_errors
|
||||||
if TYPE_CHECKING:
|
SecondRef.model_rebuild(raise_errors=False)
|
||||||
# TODO: pydantic v2
|
|
||||||
# SecondRef.model_rebuild()
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
@ -90,9 +90,6 @@ class SelfReferenceModel(BaseModel):
|
|||||||
return _obj
|
return _obj
|
||||||
|
|
||||||
from petstore_api.models.dummy_model import DummyModel
|
from petstore_api.models.dummy_model import DummyModel
|
||||||
from typing import TYPE_CHECKING
|
# TODO: Rewrite to not use raise_errors
|
||||||
if TYPE_CHECKING:
|
SelfReferenceModel.model_rebuild(raise_errors=False)
|
||||||
# TODO: pydantic v2
|
|
||||||
# SelfReferenceModel.model_rebuild()
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
@ -112,9 +112,6 @@ class Animal(BaseModel):
|
|||||||
|
|
||||||
from petstore_api.models.cat import Cat
|
from petstore_api.models.cat import Cat
|
||||||
from petstore_api.models.dog import Dog
|
from petstore_api.models.dog import Dog
|
||||||
from typing import TYPE_CHECKING
|
# TODO: Rewrite to not use raise_errors
|
||||||
if TYPE_CHECKING:
|
Animal.model_rebuild(raise_errors=False)
|
||||||
# TODO: pydantic v2
|
|
||||||
# Animal.model_rebuild()
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
@ -103,9 +103,6 @@ class CircularReferenceModel(BaseModel):
|
|||||||
return _obj
|
return _obj
|
||||||
|
|
||||||
from petstore_api.models.first_ref import FirstRef
|
from petstore_api.models.first_ref import FirstRef
|
||||||
from typing import TYPE_CHECKING
|
# TODO: Rewrite to not use raise_errors
|
||||||
if TYPE_CHECKING:
|
CircularReferenceModel.model_rebuild(raise_errors=False)
|
||||||
# TODO: pydantic v2
|
|
||||||
# CircularReferenceModel.model_rebuild()
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
@ -103,9 +103,6 @@ class DummyModel(BaseModel):
|
|||||||
return _obj
|
return _obj
|
||||||
|
|
||||||
from petstore_api.models.self_reference_model import SelfReferenceModel
|
from petstore_api.models.self_reference_model import SelfReferenceModel
|
||||||
from typing import TYPE_CHECKING
|
# TODO: Rewrite to not use raise_errors
|
||||||
if TYPE_CHECKING:
|
DummyModel.model_rebuild(raise_errors=False)
|
||||||
# TODO: pydantic v2
|
|
||||||
# DummyModel.model_rebuild()
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
@ -103,9 +103,6 @@ class FirstRef(BaseModel):
|
|||||||
return _obj
|
return _obj
|
||||||
|
|
||||||
from petstore_api.models.second_ref import SecondRef
|
from petstore_api.models.second_ref import SecondRef
|
||||||
from typing import TYPE_CHECKING
|
# TODO: Rewrite to not use raise_errors
|
||||||
if TYPE_CHECKING:
|
FirstRef.model_rebuild(raise_errors=False)
|
||||||
# TODO: pydantic v2
|
|
||||||
# FirstRef.model_rebuild()
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
@ -103,9 +103,6 @@ class SecondRef(BaseModel):
|
|||||||
return _obj
|
return _obj
|
||||||
|
|
||||||
from petstore_api.models.circular_reference_model import CircularReferenceModel
|
from petstore_api.models.circular_reference_model import CircularReferenceModel
|
||||||
from typing import TYPE_CHECKING
|
# TODO: Rewrite to not use raise_errors
|
||||||
if TYPE_CHECKING:
|
SecondRef.model_rebuild(raise_errors=False)
|
||||||
# TODO: pydantic v2
|
|
||||||
# SecondRef.model_rebuild()
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
@ -103,9 +103,6 @@ class SelfReferenceModel(BaseModel):
|
|||||||
return _obj
|
return _obj
|
||||||
|
|
||||||
from petstore_api.models.dummy_model import DummyModel
|
from petstore_api.models.dummy_model import DummyModel
|
||||||
from typing import TYPE_CHECKING
|
# TODO: Rewrite to not use raise_errors
|
||||||
if TYPE_CHECKING:
|
SelfReferenceModel.model_rebuild(raise_errors=False)
|
||||||
# TODO: pydantic v2
|
|
||||||
# SelfReferenceModel.model_rebuild()
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
@ -560,7 +560,6 @@ class ModelTests(unittest.TestCase):
|
|||||||
# should not throw the following errors:
|
# 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().
|
# 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):
|
def test_first_ref(self):
|
||||||
# shouldn't throw "still a ForwardRef" error
|
# shouldn't throw "still a ForwardRef" error
|
||||||
a = petstore_api.FirstRef.from_dict({})
|
a = petstore_api.FirstRef.from_dict({})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user