Skip to content

Commit 3d076ba

Browse files
committed
golden-record / add indirect, self, indirect-self model reference
1 parent d3d7bbe commit 3d076ba

File tree

2 files changed

+61
-1
lines changed

2 files changed

+61
-1
lines changed

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

+39
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ class AModel:
2727
a_nullable_date: Optional[datetime.date]
2828
required_nullable: Optional[str]
2929
nullable_model: Optional[AModelNullableModel]
30+
an_enum_indirect_ref: Union[Unset, AnEnum] = UNSET
31+
direct_ref_to_itself: Union[AModel, Unset] = UNSET
32+
indirect_ref_to_itself: Union[AModel, Unset] = UNSET
3033
nested_list_of_enums: Union[Unset, List[List[DifferentEnum]]] = UNSET
3134
a_not_required_date: Union[Unset, datetime.date] = UNSET
3235
attr_1_leading_digit: Union[Unset, str] = UNSET
@@ -48,6 +51,18 @@ def to_dict(self) -> Dict[str, Any]:
4851
required_not_nullable = self.required_not_nullable
4952
model = self.model.to_dict()
5053

54+
an_enum_indirect_ref: Union[Unset, AnEnum] = UNSET
55+
if not isinstance(self.an_enum_indirect_ref, Unset):
56+
an_enum_indirect_ref = self.an_enum_indirect_ref
57+
58+
direct_ref_to_itself: Union[None, Unset, Dict[str, Any]] = UNSET
59+
if not isinstance(self.direct_ref_to_itself, Unset):
60+
direct_ref_to_itself = self.direct_ref_to_itself.to_dict() if self.direct_ref_to_itself else None
61+
62+
indirect_ref_to_itself: Union[None, Unset, Dict[str, Any]] = UNSET
63+
if not isinstance(self.indirect_ref_to_itself, Unset):
64+
indirect_ref_to_itself = self.indirect_ref_to_itself.to_dict() if self.indirect_ref_to_itself else None
65+
5166
nested_list_of_enums: Union[Unset, List[Any]] = UNSET
5267
if not isinstance(self.nested_list_of_enums, Unset):
5368
nested_list_of_enums = []
@@ -94,6 +109,12 @@ def to_dict(self) -> Dict[str, Any]:
94109
"nullable_model": nullable_model,
95110
}
96111
)
112+
if an_enum_indirect_ref is not UNSET:
113+
field_dict["an_enum_indirect_ref"] = an_enum_indirect_ref
114+
if direct_ref_to_itself is not UNSET:
115+
field_dict["direct_ref_to_itself"] = direct_ref_to_itself
116+
if indirect_ref_to_itself is not UNSET:
117+
field_dict["indirect_ref_to_itself"] = indirect_ref_to_itself
97118
if nested_list_of_enums is not UNSET:
98119
field_dict["nested_list_of_enums"] = nested_list_of_enums
99120
if a_not_required_date is not UNSET:
@@ -137,6 +158,21 @@ def _parse_a_camel_date_time(data: Any) -> Union[datetime.datetime, datetime.dat
137158

138159
model = AModelModel.from_dict(d.pop("model"))
139160

161+
an_enum_indirect_ref: Union[Unset, AnEnum] = UNSET
162+
_an_enum_indirect_ref = d.pop("an_enum_indirect_ref", UNSET)
163+
if not isinstance(_an_enum_indirect_ref, Unset):
164+
an_enum_indirect_ref = AnEnum(_an_enum_indirect_ref)
165+
166+
direct_ref_to_itself = None
167+
_direct_ref_to_itself = d.pop("direct_ref_to_itself", UNSET)
168+
if _direct_ref_to_itself is not None and not isinstance(_direct_ref_to_itself, Unset):
169+
direct_ref_to_itself = AModel.from_dict(_direct_ref_to_itself)
170+
171+
indirect_ref_to_itself = None
172+
_indirect_ref_to_itself = d.pop("indirect_ref_to_itself", UNSET)
173+
if _indirect_ref_to_itself is not None and not isinstance(_indirect_ref_to_itself, Unset):
174+
indirect_ref_to_itself = AModel.from_dict(_indirect_ref_to_itself)
175+
140176
nested_list_of_enums = []
141177
_nested_list_of_enums = d.pop("nested_list_of_enums", UNSET)
142178
for nested_list_of_enums_item_data in _nested_list_of_enums or []:
@@ -188,6 +224,9 @@ def _parse_a_camel_date_time(data: Any) -> Union[datetime.datetime, datetime.dat
188224
a_date=a_date,
189225
required_not_nullable=required_not_nullable,
190226
model=model,
227+
an_enum_indirect_ref=an_enum_indirect_ref,
228+
direct_ref_to_itself=direct_ref_to_itself,
229+
indirect_ref_to_itself=indirect_ref_to_itself,
191230
nested_list_of_enums=nested_list_of_enums,
192231
a_nullable_date=a_nullable_date,
193232
a_not_required_date=a_not_required_date,

end_to_end_tests/openapi.json

+22-1
Original file line numberDiff line numberDiff line change
@@ -675,6 +675,15 @@
675675
"required": ["an_enum_value", "aCamelDateTime", "a_date", "a_nullable_date", "required_nullable", "required_not_nullable", "model", "nullable_model"],
676676
"type": "object",
677677
"properties": {
678+
"an_enum_indirect_ref": {
679+
"$ref": "#/components/schemas/AnEnumDeeperIndirectReference"
680+
},
681+
"direct_ref_to_itself": {
682+
"$ref": "#/components/schemas/AModel"
683+
},
684+
"indirect_ref_to_itself": {
685+
"$ref": "#/components/schemas/AModelDeeperIndirectReference"
686+
},
678687
"an_enum_value": {
679688
"$ref": "#/components/schemas/AnEnum"
680689
},
@@ -716,7 +725,7 @@
716725
"a_not_required_date": {
717726
"title": "A Nullable Date",
718727
"type": "string",
719-
"format": "date",
728+
"format": "date"
720729
},
721730
"1_leading_digit": {
722731
"title": "Leading Digit",
@@ -782,11 +791,23 @@
782791
"description": "A Model for testing all the ways custom objects can be used ",
783792
"additionalProperties": false
784793
},
794+
"AModelIndirectReference": {
795+
"$ref": "#/components/schemas/AModel"
796+
},
797+
"AModelDeeperIndirectReference": {
798+
"$ref": "#/components/schemas/AModelIndirectReference"
799+
},
800+
"AnEnumIndirectReference": {
801+
"$ref": "#/components/schemas/AnEnum"
802+
},
785803
"AnEnum": {
786804
"title": "AnEnum",
787805
"enum": ["FIRST_VALUE", "SECOND_VALUE"],
788806
"description": "For testing Enums in all the ways they can be used "
789807
},
808+
"AnEnumDeeperIndirectReference": {
809+
"$ref": "#/components/schemas/AnEnumIndirectReference"
810+
},
790811
"AnIntEnum": {
791812
"title": "AnIntEnum",
792813
"enum": [-1, 1, 2],

0 commit comments

Comments
 (0)