Skip to content

Fix oneOf of inlined models #335

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,13 @@
)
from .model_with_additional_properties_refed import ModelWithAdditionalPropertiesRefed
from .model_with_any_json_properties import ModelWithAnyJsonProperties
from .model_with_any_json_properties_additional_property import ModelWithAnyJsonPropertiesAdditionalProperty
from .model_with_any_json_properties_additional_property_item0 import ModelWithAnyJsonPropertiesAdditionalPropertyItem0
from .model_with_primitive_additional_properties import ModelWithPrimitiveAdditionalProperties
from .model_with_primitive_additional_properties_a_date_holder import ModelWithPrimitiveAdditionalPropertiesADateHolder
from .model_with_union_property import ModelWithUnionProperty
from .model_with_union_property_inlined import ModelWithUnionPropertyInlined
from .model_with_union_property_inlined_fruit_item0 import ModelWithUnionPropertyInlinedFruitItem0
from .model_with_union_property_inlined_fruit_item1 import ModelWithUnionPropertyInlinedFruitItem1
from .test_inline_objects_json_body import TestInlineObjectsJsonBody
from .test_inline_objects_response_200 import TestInlineObjectsResponse_200
from .validation_error import ValidationError
Original file line number Diff line number Diff line change
Expand Up @@ -111,16 +111,17 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:

def _parse_a_camel_date_time(data: Any) -> Union[datetime.datetime, datetime.date]:
data = None if isinstance(data, Unset) else data
a_camel_date_time: Union[datetime.datetime, datetime.date]
try:
a_camel_date_time = isoparse(data)
a_camel_date_time_item0: datetime.datetime
a_camel_date_time_item0 = isoparse(data)

return a_camel_date_time
return a_camel_date_time_item0
except: # noqa: E722
pass
a_camel_date_time = isoparse(data).date()
a_camel_date_time_item1: datetime.date
a_camel_date_time_item1 = isoparse(data).date()

return a_camel_date_time
return a_camel_date_time_item1

a_camel_date_time = _parse_a_camel_date_time(d.pop("aCamelDateTime"))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import attr

from ..models.model_with_any_json_properties_additional_property import ModelWithAnyJsonPropertiesAdditionalProperty
from ..models.model_with_any_json_properties_additional_property_item0 import (
ModelWithAnyJsonPropertiesAdditionalPropertyItem0,
)
from ..types import Unset

T = TypeVar("T", bound="ModelWithAnyJsonProperties")
Expand All @@ -13,14 +15,14 @@ class ModelWithAnyJsonProperties:
""" """

additional_properties: Dict[
str, Union[ModelWithAnyJsonPropertiesAdditionalProperty, List[str], str, float, int, bool]
str, Union[ModelWithAnyJsonPropertiesAdditionalPropertyItem0, List[str], str, float, int, bool]
] = attr.ib(init=False, factory=dict)

def to_dict(self) -> Dict[str, Any]:

field_dict: Dict[str, Any] = {}
for prop_name, prop in self.additional_properties.items():
if isinstance(prop, ModelWithAnyJsonPropertiesAdditionalProperty):
if isinstance(prop, ModelWithAnyJsonPropertiesAdditionalPropertyItem0):
field_dict[prop_name] = prop.to_dict()

elif isinstance(prop, list):
Expand All @@ -43,24 +45,25 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:

def _parse_additional_property(
data: Any,
) -> Union[ModelWithAnyJsonPropertiesAdditionalProperty, List[str], str, float, int, bool]:
) -> Union[ModelWithAnyJsonPropertiesAdditionalPropertyItem0, List[str], str, float, int, bool]:
data = None if isinstance(data, Unset) else data
additional_property: Union[
ModelWithAnyJsonPropertiesAdditionalProperty, List[str], str, float, int, bool
]
try:
additional_property = ModelWithAnyJsonPropertiesAdditionalProperty.from_dict(data)
additional_property_item0: ModelWithAnyJsonPropertiesAdditionalPropertyItem0
additional_property_item0 = ModelWithAnyJsonPropertiesAdditionalPropertyItem0.from_dict(data)

return additional_property
return additional_property_item0
except: # noqa: E722
pass
try:
additional_property = cast(List[str], data)
additional_property_item1: List[str]
additional_property_item1 = cast(List[str], data)

return additional_property
return additional_property_item1
except: # noqa: E722
pass
return cast(Union[ModelWithAnyJsonPropertiesAdditionalProperty, List[str], str, float, int, bool], data)
return cast(
Union[ModelWithAnyJsonPropertiesAdditionalPropertyItem0, List[str], str, float, int, bool], data
)

additional_property = _parse_additional_property(prop_dict)

Expand All @@ -75,11 +78,13 @@ def additional_keys(self) -> List[str]:

def __getitem__(
self, key: str
) -> Union[ModelWithAnyJsonPropertiesAdditionalProperty, List[str], str, float, int, bool]:
) -> Union[ModelWithAnyJsonPropertiesAdditionalPropertyItem0, List[str], str, float, int, bool]:
return self.additional_properties[key]

def __setitem__(
self, key: str, value: Union[ModelWithAnyJsonPropertiesAdditionalProperty, List[str], str, float, int, bool]
self,
key: str,
value: Union[ModelWithAnyJsonPropertiesAdditionalPropertyItem0, List[str], str, float, int, bool],
) -> None:
self.additional_properties[key] = value

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

import attr

T = TypeVar("T", bound="ModelWithAnyJsonPropertiesAdditionalProperty")
T = TypeVar("T", bound="ModelWithAnyJsonPropertiesAdditionalPropertyItem0")


@attr.s(auto_attribs=True)
class ModelWithAnyJsonPropertiesAdditionalProperty:
class ModelWithAnyJsonPropertiesAdditionalPropertyItem0:
""" """

additional_properties: Dict[str, str] = attr.ib(init=False, factory=dict)
Expand All @@ -22,10 +22,10 @@ def to_dict(self) -> Dict[str, Any]:
@classmethod
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
d = src_dict.copy()
model_with_any_json_properties_additional_property = cls()
model_with_any_json_properties_additional_property_item0 = cls()

model_with_any_json_properties_additional_property.additional_properties = d
return model_with_any_json_properties_additional_property
model_with_any_json_properties_additional_property_item0.additional_properties = d
return model_with_any_json_properties_additional_property_item0

@property
def additional_keys(self) -> List[str]:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,22 +42,23 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:

def _parse_a_property(data: Any) -> Union[Unset, AnEnum, AnIntEnum]:
data = None if isinstance(data, Unset) else data
a_property: Union[Unset, AnEnum, AnIntEnum]
try:
a_property = UNSET
_a_property = data
if _a_property is not None and _a_property is not UNSET:
a_property = AnEnum(_a_property)
a_property_item0: Union[Unset, AnEnum]
a_property_item0 = UNSET
_a_property_item0 = data
if _a_property_item0 is not None and _a_property_item0 is not UNSET:
a_property_item0 = AnEnum(_a_property_item0)

return a_property
return a_property_item0
except: # noqa: E722
pass
a_property = UNSET
_a_property = data
if _a_property is not None and _a_property is not UNSET:
a_property = AnIntEnum(_a_property)
a_property_item1: Union[Unset, AnIntEnum]
a_property_item1 = UNSET
_a_property_item1 = data
if _a_property_item1 is not None and _a_property_item1 is not UNSET:
a_property_item1 = AnIntEnum(_a_property_item1)

return a_property
return a_property_item1

a_property = _parse_a_property(d.pop("a_property", UNSET))

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
from typing import Any, Dict, Type, TypeVar, Union, cast

import attr

from ..models.model_with_union_property_inlined_fruit_item0 import ModelWithUnionPropertyInlinedFruitItem0
from ..models.model_with_union_property_inlined_fruit_item1 import ModelWithUnionPropertyInlinedFruitItem1
from ..types import UNSET, Unset

T = TypeVar("T", bound="ModelWithUnionPropertyInlined")


@attr.s(auto_attribs=True)
class ModelWithUnionPropertyInlined:
""" """

fruit: Union[Unset, ModelWithUnionPropertyInlinedFruitItem0, ModelWithUnionPropertyInlinedFruitItem1] = UNSET

def to_dict(self) -> Dict[str, Any]:
fruit: Union[Unset, ModelWithUnionPropertyInlinedFruitItem0, ModelWithUnionPropertyInlinedFruitItem1]
if isinstance(self.fruit, Unset):
fruit = UNSET
elif isinstance(self.fruit, ModelWithUnionPropertyInlinedFruitItem0):
fruit = UNSET
if not isinstance(self.fruit, Unset):
fruit = self.fruit.to_dict()

else:
fruit = UNSET
if not isinstance(self.fruit, Unset):
fruit = self.fruit.to_dict()

field_dict: Dict[str, Any] = {}
field_dict.update({})
if fruit is not UNSET:
field_dict["fruit"] = fruit

return field_dict

@classmethod
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
d = src_dict.copy()

def _parse_fruit(
data: Any,
) -> Union[Unset, ModelWithUnionPropertyInlinedFruitItem0, ModelWithUnionPropertyInlinedFruitItem1]:
data = None if isinstance(data, Unset) else data
try:
fruit_item0: Union[ModelWithUnionPropertyInlinedFruitItem0, Unset]
fruit_item0 = UNSET
_fruit_item0 = data
if not isinstance(_fruit_item0, Unset):
fruit_item0 = ModelWithUnionPropertyInlinedFruitItem0.from_dict(cast(Dict[str, Any], _fruit_item0))

return fruit_item0
except: # noqa: E722
pass
fruit_item1: Union[ModelWithUnionPropertyInlinedFruitItem1, Unset]
fruit_item1 = UNSET
_fruit_item1 = data
if not isinstance(_fruit_item1, Unset):
fruit_item1 = ModelWithUnionPropertyInlinedFruitItem1.from_dict(cast(Dict[str, Any], _fruit_item1))

return fruit_item1

fruit = _parse_fruit(d.pop("fruit", UNSET))

model_with_union_property_inlined = cls(
fruit=fruit,
)

return model_with_union_property_inlined
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
from typing import Any, Dict, List, Type, TypeVar, Union

import attr

from ..types import UNSET, Unset

T = TypeVar("T", bound="ModelWithUnionPropertyInlinedFruitItem0")


@attr.s(auto_attribs=True)
class ModelWithUnionPropertyInlinedFruitItem0:
""" """

apples: Union[Unset, str] = UNSET
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)

def to_dict(self) -> Dict[str, Any]:
apples = self.apples

field_dict: Dict[str, Any] = {}
field_dict.update(self.additional_properties)
field_dict.update({})
if apples is not UNSET:
field_dict["apples"] = apples

return field_dict

@classmethod
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
d = src_dict.copy()
apples = d.pop("apples", UNSET)

model_with_union_property_inlined_fruit_item0 = cls(
apples=apples,
)

model_with_union_property_inlined_fruit_item0.additional_properties = d
return model_with_union_property_inlined_fruit_item0

@property
def additional_keys(self) -> List[str]:
return list(self.additional_properties.keys())

def __getitem__(self, key: str) -> Any:
return self.additional_properties[key]

def __setitem__(self, key: str, value: Any) -> None:
self.additional_properties[key] = value

def __delitem__(self, key: str) -> None:
del self.additional_properties[key]

def __contains__(self, key: str) -> bool:
return key in self.additional_properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
from typing import Any, Dict, List, Type, TypeVar, Union

import attr

from ..types import UNSET, Unset

T = TypeVar("T", bound="ModelWithUnionPropertyInlinedFruitItem1")


@attr.s(auto_attribs=True)
class ModelWithUnionPropertyInlinedFruitItem1:
""" """

bananas: Union[Unset, str] = UNSET
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)

def to_dict(self) -> Dict[str, Any]:
bananas = self.bananas

field_dict: Dict[str, Any] = {}
field_dict.update(self.additional_properties)
field_dict.update({})
if bananas is not UNSET:
field_dict["bananas"] = bananas

return field_dict

@classmethod
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
d = src_dict.copy()
bananas = d.pop("bananas", UNSET)

model_with_union_property_inlined_fruit_item1 = cls(
bananas=bananas,
)

model_with_union_property_inlined_fruit_item1.additional_properties = d
return model_with_union_property_inlined_fruit_item1

@property
def additional_keys(self) -> List[str]:
return list(self.additional_properties.keys())

def __getitem__(self, key: str) -> Any:
return self.additional_properties[key]

def __setitem__(self, key: str, value: Any) -> None:
self.additional_properties[key] = value

def __delitem__(self, key: str) -> None:
del self.additional_properties[key]

def __contains__(self, key: str) -> bool:
return key in self.additional_properties
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,13 @@
)
from .model_with_additional_properties_refed import ModelWithAdditionalPropertiesRefed
from .model_with_any_json_properties import ModelWithAnyJsonProperties
from .model_with_any_json_properties_additional_property import ModelWithAnyJsonPropertiesAdditionalProperty
from .model_with_any_json_properties_additional_property_item0 import ModelWithAnyJsonPropertiesAdditionalPropertyItem0
from .model_with_primitive_additional_properties import ModelWithPrimitiveAdditionalProperties
from .model_with_primitive_additional_properties_a_date_holder import ModelWithPrimitiveAdditionalPropertiesADateHolder
from .model_with_union_property import ModelWithUnionProperty
from .model_with_union_property_inlined import ModelWithUnionPropertyInlined
from .model_with_union_property_inlined_fruit_item0 import ModelWithUnionPropertyInlinedFruitItem0
from .model_with_union_property_inlined_fruit_item1 import ModelWithUnionPropertyInlinedFruitItem1
from .test_inline_objects_json_body import TestInlineObjectsJsonBody
from .test_inline_objects_response_200 import TestInlineObjectsResponse_200
from .validation_error import ValidationError
Original file line number Diff line number Diff line change
Expand Up @@ -111,16 +111,17 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:

def _parse_a_camel_date_time(data: Any) -> Union[datetime.datetime, datetime.date]:
data = None if isinstance(data, Unset) else data
a_camel_date_time: Union[datetime.datetime, datetime.date]
try:
a_camel_date_time = isoparse(data)
a_camel_date_time_item0: datetime.datetime
a_camel_date_time_item0 = isoparse(data)

return a_camel_date_time
return a_camel_date_time_item0
except: # noqa: E722
pass
a_camel_date_time = isoparse(data).date()
a_camel_date_time_item1: datetime.date
a_camel_date_time_item1 = isoparse(data).date()

return a_camel_date_time
return a_camel_date_time_item1

a_camel_date_time = _parse_a_camel_date_time(d.pop("aCamelDateTime"))

Expand Down
Loading