Skip to content

Commit b71f718

Browse files
Fix union of inline models
1 parent b2adc2c commit b71f718

18 files changed

+443
-54
lines changed

end_to_end_tests/golden-record-custom/custom_e2e/models/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@
1717
)
1818
from .model_with_additional_properties_refed import ModelWithAdditionalPropertiesRefed
1919
from .model_with_any_json_properties import ModelWithAnyJsonProperties
20-
from .model_with_any_json_properties_additional_property import ModelWithAnyJsonPropertiesAdditionalProperty
20+
from .model_with_any_json_properties_additional_property_item0 import ModelWithAnyJsonPropertiesAdditionalPropertyItem0
2121
from .model_with_primitive_additional_properties import ModelWithPrimitiveAdditionalProperties
2222
from .model_with_primitive_additional_properties_a_date_holder import ModelWithPrimitiveAdditionalPropertiesADateHolder
2323
from .model_with_union_property import ModelWithUnionProperty
24+
from .model_with_union_property_inlined import ModelWithUnionPropertyInlined
25+
from .model_with_union_property_inlined_fruit_item0 import ModelWithUnionPropertyInlinedFruitItem0
26+
from .model_with_union_property_inlined_fruit_item1 import ModelWithUnionPropertyInlinedFruitItem1
2427
from .test_inline_objects_json_body import TestInlineObjectsJsonBody
2528
from .test_inline_objects_response_200 import TestInlineObjectsResponse_200
2629
from .validation_error import ValidationError

end_to_end_tests/golden-record-custom/custom_e2e/models/a_model.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,12 @@ def _parse_a_camel_date_time(data: Any) -> Union[datetime.datetime, datetime.dat
113113
data = None if isinstance(data, Unset) else data
114114
a_camel_date_time: Union[datetime.datetime, datetime.date]
115115
try:
116-
a_camel_date_time = isoparse(data)
116+
isoparse(data)
117117

118118
return a_camel_date_time
119119
except: # noqa: E722
120120
pass
121-
a_camel_date_time = isoparse(data).date()
121+
isoparse(data).date()
122122

123123
return a_camel_date_time
124124

end_to_end_tests/golden-record-custom/custom_e2e/models/model_with_any_json_properties.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import attr
44

5-
from ..models.model_with_any_json_properties_additional_property import ModelWithAnyJsonPropertiesAdditionalProperty
5+
from ..models.model_with_any_json_properties_additional_property_item0 import (
6+
ModelWithAnyJsonPropertiesAdditionalPropertyItem0,
7+
)
68
from ..types import Unset
79

810
T = TypeVar("T", bound="ModelWithAnyJsonProperties")
@@ -13,14 +15,14 @@ class ModelWithAnyJsonProperties:
1315
""" """
1416

1517
additional_properties: Dict[
16-
str, Union[ModelWithAnyJsonPropertiesAdditionalProperty, List[str], str, float, int, bool]
18+
str, Union[ModelWithAnyJsonPropertiesAdditionalPropertyItem0, List[str], str, float, int, bool]
1719
] = attr.ib(init=False, factory=dict)
1820

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

2123
field_dict: Dict[str, Any] = {}
2224
for prop_name, prop in self.additional_properties.items():
23-
if isinstance(prop, ModelWithAnyJsonPropertiesAdditionalProperty):
25+
if isinstance(prop, ModelWithAnyJsonPropertiesAdditionalPropertyItem0):
2426
field_dict[prop_name] = prop.to_dict()
2527

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

4446
def _parse_additional_property(
4547
data: Any,
46-
) -> Union[ModelWithAnyJsonPropertiesAdditionalProperty, List[str], str, float, int, bool]:
48+
) -> Union[ModelWithAnyJsonPropertiesAdditionalPropertyItem0, List[str], str, float, int, bool]:
4749
data = None if isinstance(data, Unset) else data
4850
additional_property: Union[
49-
ModelWithAnyJsonPropertiesAdditionalProperty, List[str], str, float, int, bool
51+
ModelWithAnyJsonPropertiesAdditionalPropertyItem0, List[str], str, float, int, bool
5052
]
5153
try:
52-
additional_property = ModelWithAnyJsonPropertiesAdditionalProperty.from_dict(data)
54+
ModelWithAnyJsonPropertiesAdditionalPropertyItem0.from_dict(data)
5355

5456
return additional_property
5557
except: # noqa: E722
5658
pass
5759
try:
58-
additional_property = cast(List[str], data)
60+
cast(List[str], data)
5961

6062
return additional_property
6163
except: # noqa: E722
6264
pass
63-
return cast(Union[ModelWithAnyJsonPropertiesAdditionalProperty, List[str], str, float, int, bool], data)
65+
return cast(
66+
Union[ModelWithAnyJsonPropertiesAdditionalPropertyItem0, List[str], str, float, int, bool], data
67+
)
6468

6569
additional_property = _parse_additional_property(prop_dict)
6670

@@ -75,11 +79,13 @@ def additional_keys(self) -> List[str]:
7579

7680
def __getitem__(
7781
self, key: str
78-
) -> Union[ModelWithAnyJsonPropertiesAdditionalProperty, List[str], str, float, int, bool]:
82+
) -> Union[ModelWithAnyJsonPropertiesAdditionalPropertyItem0, List[str], str, float, int, bool]:
7983
return self.additional_properties[key]
8084

8185
def __setitem__(
82-
self, key: str, value: Union[ModelWithAnyJsonPropertiesAdditionalProperty, List[str], str, float, int, bool]
86+
self,
87+
key: str,
88+
value: Union[ModelWithAnyJsonPropertiesAdditionalPropertyItem0, List[str], str, float, int, bool],
8389
) -> None:
8490
self.additional_properties[key] = value
8591

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import attr
44

5-
T = TypeVar("T", bound="ModelWithAnyJsonPropertiesAdditionalProperty")
5+
T = TypeVar("T", bound="ModelWithAnyJsonPropertiesAdditionalPropertyItem0")
66

77

88
@attr.s(auto_attribs=True)
9-
class ModelWithAnyJsonPropertiesAdditionalProperty:
9+
class ModelWithAnyJsonPropertiesAdditionalPropertyItem0:
1010
""" """
1111

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

27-
model_with_any_json_properties_additional_property.additional_properties = d
28-
return model_with_any_json_properties_additional_property
27+
model_with_any_json_properties_additional_property_item0.additional_properties = d
28+
return model_with_any_json_properties_additional_property_item0
2929

3030
@property
3131
def additional_keys(self) -> List[str]:

end_to_end_tests/golden-record-custom/custom_e2e/models/model_with_union_property.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,16 @@ def _parse_a_property(data: Any) -> Union[Unset, AnEnum, AnIntEnum]:
4444
data = None if isinstance(data, Unset) else data
4545
a_property: Union[Unset, AnEnum, AnIntEnum]
4646
try:
47-
a_property = UNSET
48-
_a_property = data
49-
if _a_property is not None and _a_property is not UNSET:
50-
a_property = AnEnum(_a_property)
47+
_a_property_item0 = data
48+
if _a_property_item0 is not None and _a_property_item0 is not UNSET:
49+
AnEnum(_a_property_item0)
5150

5251
return a_property
5352
except: # noqa: E722
5453
pass
55-
a_property = UNSET
56-
_a_property = data
57-
if _a_property is not None and _a_property is not UNSET:
58-
a_property = AnIntEnum(_a_property)
54+
_a_property_item1 = data
55+
if _a_property_item1 is not None and _a_property_item1 is not UNSET:
56+
AnIntEnum(_a_property_item1)
5957

6058
return a_property
6159

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
from typing import Any, Dict, Type, TypeVar, Union, cast
2+
3+
import attr
4+
5+
from ..models.model_with_union_property_inlined_fruit_item0 import ModelWithUnionPropertyInlinedFruitItem0
6+
from ..models.model_with_union_property_inlined_fruit_item1 import ModelWithUnionPropertyInlinedFruitItem1
7+
from ..types import UNSET, Unset
8+
9+
T = TypeVar("T", bound="ModelWithUnionPropertyInlined")
10+
11+
12+
@attr.s(auto_attribs=True)
13+
class ModelWithUnionPropertyInlined:
14+
""" """
15+
16+
fruit: Union[Unset, ModelWithUnionPropertyInlinedFruitItem0, ModelWithUnionPropertyInlinedFruitItem1] = UNSET
17+
18+
def to_dict(self) -> Dict[str, Any]:
19+
fruit: Union[Unset, ModelWithUnionPropertyInlinedFruitItem0, ModelWithUnionPropertyInlinedFruitItem1]
20+
if isinstance(self.fruit, Unset):
21+
fruit = UNSET
22+
elif isinstance(self.fruit, ModelWithUnionPropertyInlinedFruitItem0):
23+
fruit = UNSET
24+
if not isinstance(self.fruit, Unset):
25+
fruit = self.fruit.to_dict()
26+
27+
else:
28+
fruit = UNSET
29+
if not isinstance(self.fruit, Unset):
30+
fruit = self.fruit.to_dict()
31+
32+
field_dict: Dict[str, Any] = {}
33+
field_dict.update({})
34+
if fruit is not UNSET:
35+
field_dict["fruit"] = fruit
36+
37+
return field_dict
38+
39+
@classmethod
40+
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
41+
d = src_dict.copy()
42+
43+
def _parse_fruit(
44+
data: Any,
45+
) -> Union[Unset, ModelWithUnionPropertyInlinedFruitItem0, ModelWithUnionPropertyInlinedFruitItem1]:
46+
data = None if isinstance(data, Unset) else data
47+
fruit: Union[Unset, ModelWithUnionPropertyInlinedFruitItem0, ModelWithUnionPropertyInlinedFruitItem1]
48+
try:
49+
_fruit_item0 = data
50+
if not isinstance(_fruit_item0, Unset):
51+
ModelWithUnionPropertyInlinedFruitItem0.from_dict(cast(Dict[str, Any], _fruit_item0))
52+
53+
return fruit
54+
except: # noqa: E722
55+
pass
56+
_fruit_item1 = data
57+
if not isinstance(_fruit_item1, Unset):
58+
ModelWithUnionPropertyInlinedFruitItem1.from_dict(cast(Dict[str, Any], _fruit_item1))
59+
60+
return fruit
61+
62+
fruit = _parse_fruit(d.pop("fruit", UNSET))
63+
64+
model_with_union_property_inlined = cls(
65+
fruit=fruit,
66+
)
67+
68+
return model_with_union_property_inlined
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from typing import Any, Dict, List, Type, TypeVar, Union
2+
3+
import attr
4+
5+
from ..types import UNSET, Unset
6+
7+
T = TypeVar("T", bound="ModelWithUnionPropertyInlinedFruitItem0")
8+
9+
10+
@attr.s(auto_attribs=True)
11+
class ModelWithUnionPropertyInlinedFruitItem0:
12+
""" """
13+
14+
apples: Union[Unset, str] = UNSET
15+
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
16+
17+
def to_dict(self) -> Dict[str, Any]:
18+
apples = self.apples
19+
20+
field_dict: Dict[str, Any] = {}
21+
field_dict.update(self.additional_properties)
22+
field_dict.update({})
23+
if apples is not UNSET:
24+
field_dict["apples"] = apples
25+
26+
return field_dict
27+
28+
@classmethod
29+
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
30+
d = src_dict.copy()
31+
apples = d.pop("apples", UNSET)
32+
33+
model_with_union_property_inlined_fruit_item0 = cls(
34+
apples=apples,
35+
)
36+
37+
model_with_union_property_inlined_fruit_item0.additional_properties = d
38+
return model_with_union_property_inlined_fruit_item0
39+
40+
@property
41+
def additional_keys(self) -> List[str]:
42+
return list(self.additional_properties.keys())
43+
44+
def __getitem__(self, key: str) -> Any:
45+
return self.additional_properties[key]
46+
47+
def __setitem__(self, key: str, value: Any) -> None:
48+
self.additional_properties[key] = value
49+
50+
def __delitem__(self, key: str) -> None:
51+
del self.additional_properties[key]
52+
53+
def __contains__(self, key: str) -> bool:
54+
return key in self.additional_properties
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from typing import Any, Dict, List, Type, TypeVar, Union
2+
3+
import attr
4+
5+
from ..types import UNSET, Unset
6+
7+
T = TypeVar("T", bound="ModelWithUnionPropertyInlinedFruitItem1")
8+
9+
10+
@attr.s(auto_attribs=True)
11+
class ModelWithUnionPropertyInlinedFruitItem1:
12+
""" """
13+
14+
bananas: Union[Unset, str] = UNSET
15+
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
16+
17+
def to_dict(self) -> Dict[str, Any]:
18+
bananas = self.bananas
19+
20+
field_dict: Dict[str, Any] = {}
21+
field_dict.update(self.additional_properties)
22+
field_dict.update({})
23+
if bananas is not UNSET:
24+
field_dict["bananas"] = bananas
25+
26+
return field_dict
27+
28+
@classmethod
29+
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
30+
d = src_dict.copy()
31+
bananas = d.pop("bananas", UNSET)
32+
33+
model_with_union_property_inlined_fruit_item1 = cls(
34+
bananas=bananas,
35+
)
36+
37+
model_with_union_property_inlined_fruit_item1.additional_properties = d
38+
return model_with_union_property_inlined_fruit_item1
39+
40+
@property
41+
def additional_keys(self) -> List[str]:
42+
return list(self.additional_properties.keys())
43+
44+
def __getitem__(self, key: str) -> Any:
45+
return self.additional_properties[key]
46+
47+
def __setitem__(self, key: str, value: Any) -> None:
48+
self.additional_properties[key] = value
49+
50+
def __delitem__(self, key: str) -> None:
51+
del self.additional_properties[key]
52+
53+
def __contains__(self, key: str) -> bool:
54+
return key in self.additional_properties

end_to_end_tests/golden-record/my_test_api_client/models/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@
1717
)
1818
from .model_with_additional_properties_refed import ModelWithAdditionalPropertiesRefed
1919
from .model_with_any_json_properties import ModelWithAnyJsonProperties
20-
from .model_with_any_json_properties_additional_property import ModelWithAnyJsonPropertiesAdditionalProperty
20+
from .model_with_any_json_properties_additional_property_item0 import ModelWithAnyJsonPropertiesAdditionalPropertyItem0
2121
from .model_with_primitive_additional_properties import ModelWithPrimitiveAdditionalProperties
2222
from .model_with_primitive_additional_properties_a_date_holder import ModelWithPrimitiveAdditionalPropertiesADateHolder
2323
from .model_with_union_property import ModelWithUnionProperty
24+
from .model_with_union_property_inlined import ModelWithUnionPropertyInlined
25+
from .model_with_union_property_inlined_fruit_item0 import ModelWithUnionPropertyInlinedFruitItem0
26+
from .model_with_union_property_inlined_fruit_item1 import ModelWithUnionPropertyInlinedFruitItem1
2427
from .test_inline_objects_json_body import TestInlineObjectsJsonBody
2528
from .test_inline_objects_response_200 import TestInlineObjectsResponse_200
2629
from .validation_error import ValidationError

end_to_end_tests/golden-record/my_test_api_client/models/a_model.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,12 @@ def _parse_a_camel_date_time(data: Any) -> Union[datetime.datetime, datetime.dat
113113
data = None if isinstance(data, Unset) else data
114114
a_camel_date_time: Union[datetime.datetime, datetime.date]
115115
try:
116-
a_camel_date_time = isoparse(data)
116+
isoparse(data)
117117

118118
return a_camel_date_time
119119
except: # noqa: E722
120120
pass
121-
a_camel_date_time = isoparse(data).date()
121+
isoparse(data).date()
122122

123123
return a_camel_date_time
124124

0 commit comments

Comments
 (0)