11from __future__ import annotations
22
3- from dataclasses import dataclass
3+ from dataclasses import dataclass , field
44from datetime import date , datetime
5- from typing import Any , Dict , List , Union , cast
5+ from typing import Any , Dict , List , Optional , Union , cast
66
77from .an_enum_value import AnEnumValue
88from .an_enum_value1 import AnEnumValue1
@@ -13,23 +13,16 @@ class AModel:
1313 """ A Model for testing all the ways custom objects can be used """
1414
1515 an_enum_value : AnEnumValue
16- nested_list_of_enums : List [List [AnEnumValue1 ]]
1716 a_camel_date_time : Union [datetime , date ]
1817 a_date : date
18+ nested_list_of_enums : Optional [List [List [AnEnumValue1 ]]] = field (
19+ default_factory = lambda : cast (Optional [List [List [AnEnumValue1 ]]], [])
20+ )
21+ some_dict : Optional [Dict [Any , Any ]] = field (default_factory = lambda : cast (Optional [Dict [Any , Any ]], {}))
1922
2023 def to_dict (self ) -> Dict [str , Any ]:
2124 an_enum_value = self .an_enum_value .value
2225
23- nested_list_of_enums = []
24- for nested_list_of_enums_item_data in self .nested_list_of_enums :
25- nested_list_of_enums_item = []
26- for nested_list_of_enums_item_item_data in nested_list_of_enums_item_data :
27- nested_list_of_enums_item_item = nested_list_of_enums_item_item_data .value
28-
29- nested_list_of_enums_item .append (nested_list_of_enums_item_item )
30-
31- nested_list_of_enums .append (nested_list_of_enums_item )
32-
3326 if isinstance (self .a_camel_date_time , datetime ):
3427 a_camel_date_time = self .a_camel_date_time .isoformat ()
3528
@@ -38,27 +31,33 @@ def to_dict(self) -> Dict[str, Any]:
3831
3932 a_date = self .a_date .isoformat ()
4033
34+ if self .nested_list_of_enums is None :
35+ nested_list_of_enums = None
36+ else :
37+ nested_list_of_enums = []
38+ for nested_list_of_enums_item_data in self .nested_list_of_enums :
39+ nested_list_of_enums_item = []
40+ for nested_list_of_enums_item_item_data in nested_list_of_enums_item_data :
41+ nested_list_of_enums_item_item = nested_list_of_enums_item_item_data .value
42+
43+ nested_list_of_enums_item .append (nested_list_of_enums_item_item )
44+
45+ nested_list_of_enums .append (nested_list_of_enums_item )
46+
47+ some_dict = self .some_dict
48+
4149 return {
4250 "an_enum_value" : an_enum_value ,
43- "nested_list_of_enums" : nested_list_of_enums ,
4451 "aCamelDateTime" : a_camel_date_time ,
4552 "a_date" : a_date ,
53+ "nested_list_of_enums" : nested_list_of_enums ,
54+ "some_dict" : some_dict ,
4655 }
4756
4857 @staticmethod
4958 def from_dict (d : Dict [str , Any ]) -> AModel :
5059 an_enum_value = AnEnumValue (d ["an_enum_value" ])
5160
52- nested_list_of_enums = []
53- for nested_list_of_enums_item_data in d ["nested_list_of_enums" ]:
54- nested_list_of_enums_item = []
55- for nested_list_of_enums_item_item_data in nested_list_of_enums_item_data :
56- nested_list_of_enums_item_item = AnEnumValue1 (nested_list_of_enums_item_item_data )
57-
58- nested_list_of_enums_item .append (nested_list_of_enums_item_item )
59-
60- nested_list_of_enums .append (nested_list_of_enums_item )
61-
6261 def _parse_a_camel_date_time (data : Dict [str , Any ]) -> Union [datetime , date ]:
6362 a_camel_date_time : Union [datetime , date ]
6463 try :
@@ -75,9 +74,22 @@ def _parse_a_camel_date_time(data: Dict[str, Any]) -> Union[datetime, date]:
7574
7675 a_date = date .fromisoformat (d ["a_date" ])
7776
77+ nested_list_of_enums = []
78+ for nested_list_of_enums_item_data in d .get ("nested_list_of_enums" ) or []:
79+ nested_list_of_enums_item = []
80+ for nested_list_of_enums_item_item_data in nested_list_of_enums_item_data :
81+ nested_list_of_enums_item_item = AnEnumValue1 (nested_list_of_enums_item_item_data )
82+
83+ nested_list_of_enums_item .append (nested_list_of_enums_item_item )
84+
85+ nested_list_of_enums .append (nested_list_of_enums_item )
86+
87+ some_dict = d .get ("some_dict" )
88+
7889 return AModel (
7990 an_enum_value = an_enum_value ,
80- nested_list_of_enums = nested_list_of_enums ,
8191 a_camel_date_time = a_camel_date_time ,
8292 a_date = a_date ,
93+ nested_list_of_enums = nested_list_of_enums ,
94+ some_dict = some_dict ,
8395 )
0 commit comments