|
1 | 1 | from __future__ import annotations |
2 | 2 |
|
3 | | -from dataclasses import astuple, dataclass |
| 3 | +from dataclasses import dataclass |
4 | 4 | from datetime import date, datetime |
5 | | -from typing import Any, Dict, List, Optional, cast |
| 5 | +from typing import Any, Dict, List, cast |
6 | 6 |
|
7 | | -from .a_list_of_enums import AListOfEnums |
8 | 7 | from .an_enum_value import AnEnumValue |
9 | | -from .other_model import OtherModel |
10 | | -from .types import * |
| 8 | +from .nested_list_of_enums_item_item import NestedListOfEnumsItemItem |
11 | 9 |
|
12 | 10 |
|
13 | 11 | @dataclass |
14 | 12 | class AModel: |
15 | 13 | """ A Model for testing all the ways custom objects can be used """ |
16 | 14 |
|
17 | 15 | an_enum_value: AnEnumValue |
18 | | - a_list_of_enums: List[AListOfEnums] |
19 | | - a_list_of_strings: List[str] |
20 | | - a_list_of_objects: List[OtherModel] |
| 16 | + nested_list_of_enums: List[List[NestedListOfEnumsItemItem]] |
21 | 17 | a_camel_date_time: datetime |
22 | 18 | a_date: date |
23 | 19 |
|
24 | 20 | def to_dict(self) -> Dict[str, Any]: |
25 | 21 | return { |
26 | 22 | "an_enum_value": self.an_enum_value.value, |
27 | | - "a_list_of_enums": self.a_list_of_enums, |
28 | | - "a_list_of_strings": self.a_list_of_strings, |
29 | | - "a_list_of_objects": self.a_list_of_objects, |
| 23 | + "nested_list_of_enums": self.nested_list_of_enums, |
30 | 24 | "aCamelDateTime": self.a_camel_date_time.isoformat(), |
31 | 25 | "a_date": self.a_date.isoformat(), |
32 | 26 | } |
33 | 27 |
|
34 | 28 | @staticmethod |
35 | 29 | def from_dict(d: Dict[str, Any]) -> AModel: |
36 | | - |
37 | 30 | an_enum_value = AnEnumValue(d["an_enum_value"]) |
38 | 31 |
|
39 | | - a_list_of_enums = [] |
40 | | - for a_list_of_enums_item in d.get("a_list_of_enums", []): |
41 | | - a_list_of_enums.append(AListOfEnums(a_list_of_enums_item)) |
| 32 | + nested_list_of_enums = [] |
| 33 | + for nested_list_of_enums_item_data in d["nested_list_of_enums"]: |
| 34 | + nested_list_of_enums_item = [] |
| 35 | + for nested_list_of_enums_item_item_data in nested_list_of_enums_item_data: |
| 36 | + nested_list_of_enums_item_item = NestedListOfEnumsItemItem(nested_list_of_enums_item_item_data) |
42 | 37 |
|
43 | | - a_list_of_strings = d.get("a_list_of_strings", []) |
| 38 | + nested_list_of_enums_item.append(nested_list_of_enums_item_item) |
44 | 39 |
|
45 | | - a_list_of_objects = [] |
46 | | - for a_list_of_objects_item in d.get("a_list_of_objects", []): |
47 | | - a_list_of_objects.append(OtherModel.from_dict(a_list_of_objects_item)) |
| 40 | + nested_list_of_enums.append(nested_list_of_enums_item) |
48 | 41 |
|
49 | 42 | a_camel_date_time = datetime.fromisoformat(d["aCamelDateTime"]) |
50 | 43 |
|
51 | 44 | a_date = date.fromisoformat(d["a_date"]) |
52 | 45 |
|
53 | 46 | return AModel( |
54 | 47 | an_enum_value=an_enum_value, |
55 | | - a_list_of_enums=a_list_of_enums, |
56 | | - a_list_of_strings=a_list_of_strings, |
57 | | - a_list_of_objects=a_list_of_objects, |
| 48 | + nested_list_of_enums=nested_list_of_enums, |
58 | 49 | a_camel_date_time=a_camel_date_time, |
59 | 50 | a_date=a_date, |
60 | 51 | ) |
0 commit comments