@@ -28,6 +28,97 @@ class Attribute(Protocol):
2828 is_protected : Optional [bool ]
2929
3030
31+ # TODO: Consolidate them into on single set of classes
32+ # Classes for builtin schema attribute
33+ class String (Attribute ):
34+ value : str
35+
36+
37+ class StringOptional (Attribute ):
38+ value : Optional [str ]
39+
40+
41+ class Integer (Attribute ):
42+ value : int
43+
44+
45+ class IntegerOptional (Attribute ):
46+ value : Optional [int ]
47+
48+
49+ class Boolean (Attribute ):
50+ value : bool
51+
52+
53+ class BooleanOptional (Attribute ):
54+ value : Optional [bool ]
55+
56+
57+ class DateTime (Attribute ):
58+ value : str
59+
60+
61+ class DateTimeOptional (Attribute ):
62+ value : Optional [str ]
63+
64+
65+ class Enum (Attribute ):
66+ value : str
67+
68+
69+ class EnumOptional (Attribute ):
70+ value : Optional [str ]
71+
72+
73+ class URL (Attribute ):
74+ value : str
75+
76+
77+ class URLOptional (Attribute ):
78+ value : Optional [str ]
79+
80+
81+ class Dropdown (Attribute ):
82+ value : str
83+
84+
85+ class DropdownOptional (Attribute ):
86+ value : Optional [str ]
87+
88+
89+ class IPNetwork (Attribute ):
90+ value : Union [ipaddress .IPv4Network , ipaddress .IPv6Network ]
91+
92+
93+ class IPNetworkOptional (Attribute ):
94+ value : Optional [Union [ipaddress .IPv4Network , ipaddress .IPv6Network ]]
95+
96+
97+ class IPHost (Attribute ):
98+ value : Union [ipaddress .IPv4Address , ipaddress .IPv6Address ]
99+
100+
101+ class IPHostOptional (Attribute ):
102+ value : Optional [Union [ipaddress .IPv4Address , ipaddress .IPv6Address ]]
103+
104+
105+ class HashedPassword (Attribute ):
106+ value : str
107+
108+
109+ class HashedPasswordOptional (Attribute ):
110+ value : Any
111+
112+
113+ class JSONAttribute (Attribute ):
114+ value : Any
115+
116+
117+ class JSONAttributeOptional (Attribute ):
118+ value : Optional [Any ]
119+
120+
121+ # Classes for user defined schema attribute
31122class IDAttribute (Attribute ):
32123 value : int
33124
0 commit comments