1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
from dataclasses import dataclass
from enum import Enum
from typing import Optional, List, Set, Union, Dict
@dataclass
class ForwardRef:
inner: "LongUnion"
@dataclass
class Simple:
attr_string: str
attr_int: int
attr_list: List[str]
attr_set: Set[float]
attr_string_opt: Optional[str] = None
@dataclass
class Nested:
nested1: Simple
nested2: Simple
nested_list: List[Simple]
nested_dict: Dict[str, Simple]
@dataclass
class LongUnion:
simple_type_union: Union[set, dict, tuple, str, bool]
unrealistically_complex_union: Union[int, str, bool, set, list, Simple, Nested]
unrealistically_complex_union2: Union[int, str, bool, set, Simple, Nested, List[Nested]]
@dataclass
class UnionCollection:
collection: List[Union[int, str, bool, set, list, dict, Simple, Nested, List[Nested]]]
class E(Enum):
X = "x"
Y = "y"
Z = "z"
@dataclass
class Cast:
e: E
|