1
1
from __future__ import annotations
2
2
3
- from dataclasses import dataclass
3
+ from dataclasses import dataclass , field
4
4
from datetime import date , datetime
5
- from typing import Any , Dict , List , Union , cast
5
+ from typing import Any , Dict , List , Optional , Union , cast
6
6
7
7
from .an_enum_value import AnEnumValue
8
8
from .an_enum_value1 import AnEnumValue1
@@ -13,23 +13,16 @@ class AModel:
13
13
""" A Model for testing all the ways custom objects can be used """
14
14
15
15
an_enum_value : AnEnumValue
16
- nested_list_of_enums : List [List [AnEnumValue1 ]]
17
16
a_camel_date_time : Union [datetime , date ]
18
17
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 ]], {}))
19
22
20
23
def to_dict (self ) -> Dict [str , Any ]:
21
24
an_enum_value = self .an_enum_value .value
22
25
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
-
33
26
if isinstance (self .a_camel_date_time , datetime ):
34
27
a_camel_date_time = self .a_camel_date_time .isoformat ()
35
28
@@ -38,27 +31,33 @@ def to_dict(self) -> Dict[str, Any]:
38
31
39
32
a_date = self .a_date .isoformat ()
40
33
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
+
41
49
return {
42
50
"an_enum_value" : an_enum_value ,
43
- "nested_list_of_enums" : nested_list_of_enums ,
44
51
"aCamelDateTime" : a_camel_date_time ,
45
52
"a_date" : a_date ,
53
+ "nested_list_of_enums" : nested_list_of_enums ,
54
+ "some_dict" : some_dict ,
46
55
}
47
56
48
57
@staticmethod
49
58
def from_dict (d : Dict [str , Any ]) -> AModel :
50
59
an_enum_value = AnEnumValue (d ["an_enum_value" ])
51
60
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
-
62
61
def _parse_a_camel_date_time (data : Dict [str , Any ]) -> Union [datetime , date ]:
63
62
a_camel_date_time : Union [datetime , date ]
64
63
try :
@@ -75,9 +74,22 @@ def _parse_a_camel_date_time(data: Dict[str, Any]) -> Union[datetime, date]:
75
74
76
75
a_date = date .fromisoformat (d ["a_date" ])
77
76
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
+
78
89
return AModel (
79
90
an_enum_value = an_enum_value ,
80
- nested_list_of_enums = nested_list_of_enums ,
81
91
a_camel_date_time = a_camel_date_time ,
82
92
a_date = a_date ,
93
+ nested_list_of_enums = nested_list_of_enums ,
94
+ some_dict = some_dict ,
83
95
)
0 commit comments