1
1
import enum
2
2
from typing import Any
3
3
4
- from six import with_metaclass
5
4
6
- _ATTR_OBJECT_TYPE = 1 << 0
7
- _ATTR_STRING_TYPE = 1 << 1
8
- _ATTR_TEXT_TYPE = 1 << 2
9
- _ATTR_BOOL_TYPE = 1 << 3
10
- _ATTR_GROUP_TYPE = 1 << 4
11
- _ATTR_DATE_TYPE = 1 << 5
12
- _ATTR_ROLE_TYPE = 1 << 6
13
- _ATTR_ARRAY_TYPE = 1 << 10
14
- _ATTR_NAMED_TYPE = 1 << 11
5
+ @enum .unique
6
+ class AttrType (enum .IntFlag ):
7
+ OBJECT = 1 << 0
8
+ STRING = 1 << 1
9
+ TEXT = 1 << 2
10
+ BOOLEAN = 1 << 3
11
+ GROUP = 1 << 4
12
+ DATE = 1 << 5
13
+ ROLE = 1 << 6
14
+ _ARRAY = 1 << 10
15
+ _NAMED = 1 << 11
16
+ NAMED_OBJECT = _NAMED | OBJECT
17
+ ARRAY_OBJECT = _ARRAY | OBJECT
18
+ ARRAY_STRING = _ARRAY | STRING
19
+ ARRAY_NAMED_OBJECT = _ARRAY | _NAMED | OBJECT
20
+ ARRAY_NAMED_OBJECT_BOOLEAN = 3081 # unmanaged by AttrTypeXXX
21
+ ARRAY_GROUP = _ARRAY | GROUP
22
+ ARRAY_ROLE = _ARRAY | ROLE
15
23
16
24
17
25
class MetaAttrType (type ):
@@ -22,7 +30,6 @@ def __eq__(cls, comp):
22
30
return cls .NAME == comp
23
31
else :
24
32
return cls .TYPE == comp .TYPE
25
- return False
26
33
27
34
def __ne__ (cls , comp ):
28
35
return not cls == comp
@@ -34,82 +41,82 @@ def __int__(cls):
34
41
return cls .TYPE
35
42
36
43
37
- class AttrTypeObj (with_metaclass ( MetaAttrType ) ):
44
+ class AttrTypeObj (metaclass = MetaAttrType ):
38
45
NAME = "entry"
39
- TYPE = _ATTR_OBJECT_TYPE
46
+ TYPE = AttrType . OBJECT
40
47
DEFAULT_VALUE = None
41
48
42
49
43
50
# STRING-type restricts data size to AttributeValue.MAXIMUM_VALUE_LENGTH
44
- class AttrTypeStr (with_metaclass ( MetaAttrType ) ):
51
+ class AttrTypeStr (metaclass = MetaAttrType ):
45
52
NAME = "string"
46
- TYPE = _ATTR_STRING_TYPE
53
+ TYPE = AttrType . STRING
47
54
DEFAULT_VALUE = ""
48
55
49
56
50
- class AttrTypeNamedObj (with_metaclass ( MetaAttrType ) ):
57
+ class AttrTypeNamedObj (metaclass = MetaAttrType ):
51
58
NAME = "named_entry"
52
- TYPE = _ATTR_OBJECT_TYPE | _ATTR_NAMED_TYPE
59
+ TYPE = AttrType . NAMED_OBJECT
53
60
DEFAULT_VALUE = {"name" : "" , "id" : None }
54
61
55
62
56
- class AttrTypeArrObj (with_metaclass ( MetaAttrType ) ):
63
+ class AttrTypeArrObj (metaclass = MetaAttrType ):
57
64
NAME = "array_entry"
58
- TYPE = _ATTR_OBJECT_TYPE | _ATTR_ARRAY_TYPE
65
+ TYPE = AttrType . ARRAY_OBJECT
59
66
DEFAULT_VALUE = []
60
67
61
68
62
- class AttrTypeArrStr (with_metaclass ( MetaAttrType ) ):
69
+ class AttrTypeArrStr (metaclass = MetaAttrType ):
63
70
NAME = "array_string"
64
- TYPE = _ATTR_STRING_TYPE | _ATTR_ARRAY_TYPE
71
+ TYPE = AttrType . ARRAY_STRING
65
72
DEFAULT_VALUE = []
66
73
67
74
68
- class AttrTypeArrNamedObj (with_metaclass ( MetaAttrType ) ):
75
+ class AttrTypeArrNamedObj (metaclass = MetaAttrType ):
69
76
NAME = "array_named_entry"
70
- TYPE = _ATTR_OBJECT_TYPE | _ATTR_NAMED_TYPE | _ATTR_ARRAY_TYPE
77
+ TYPE = AttrType . ARRAY_NAMED_OBJECT
71
78
DEFAULT_VALUE : Any = dict ().values ()
72
79
73
80
74
- class AttrTypeArrGroup (with_metaclass ( MetaAttrType ) ):
81
+ class AttrTypeArrGroup (metaclass = MetaAttrType ):
75
82
NAME = "array_group"
76
- TYPE = _ATTR_GROUP_TYPE | _ATTR_ARRAY_TYPE
83
+ TYPE = AttrType . ARRAY_GROUP
77
84
DEFAULT_VALUE = []
78
85
79
86
80
- class AttrTypeText (with_metaclass ( MetaAttrType ) ):
87
+ class AttrTypeText (metaclass = MetaAttrType ):
81
88
NAME = "textarea"
82
- TYPE = _ATTR_TEXT_TYPE
89
+ TYPE = AttrType . TEXT
83
90
DEFAULT_VALUE = ""
84
91
85
92
86
- class AttrTypeBoolean (with_metaclass ( MetaAttrType ) ):
93
+ class AttrTypeBoolean (metaclass = MetaAttrType ):
87
94
NAME = "boolean"
88
- TYPE = _ATTR_BOOL_TYPE
95
+ TYPE = AttrType . BOOLEAN
89
96
DEFAULT_VALUE = False
90
97
91
98
92
- class AttrTypeGroup (with_metaclass ( MetaAttrType ) ):
99
+ class AttrTypeGroup (metaclass = MetaAttrType ):
93
100
NAME = "group"
94
- TYPE = _ATTR_GROUP_TYPE
101
+ TYPE = AttrType . GROUP
95
102
DEFAULT_VALUE = None
96
103
97
104
98
- class AttrTypeDate (with_metaclass ( MetaAttrType ) ):
105
+ class AttrTypeDate (metaclass = MetaAttrType ):
99
106
NAME = "date"
100
- TYPE = _ATTR_DATE_TYPE
107
+ TYPE = AttrType . DATE
101
108
DEFAULT_VALUE = None
102
109
103
110
104
- class AttrTypeRole (with_metaclass ( MetaAttrType ) ):
111
+ class AttrTypeRole (metaclass = MetaAttrType ):
105
112
NAME = "role"
106
- TYPE = _ATTR_ROLE_TYPE
113
+ TYPE = AttrType . ROLE
107
114
DEFAULT_VALUE = None
108
115
109
116
110
- class AttrTypeArrRole (with_metaclass ( MetaAttrType ) ):
117
+ class AttrTypeArrRole (metaclass = MetaAttrType ):
111
118
NAME = "array_role"
112
- TYPE = _ATTR_ROLE_TYPE | _ATTR_ARRAY_TYPE
119
+ TYPE = AttrType . ARRAY_ROLE
113
120
DEFAULT_VALUE = []
114
121
115
122
@@ -129,51 +136,34 @@ class AttrTypeArrRole(with_metaclass(MetaAttrType)):
129
136
AttrTypeArrRole ,
130
137
]
131
138
AttrTypeValue = {
132
- "object" : AttrTypeObj . TYPE ,
133
- "string" : AttrTypeStr . TYPE ,
134
- "named" : _ATTR_NAMED_TYPE ,
135
- "named_object" : AttrTypeNamedObj . TYPE ,
136
- "array" : _ATTR_ARRAY_TYPE ,
137
- "array_object" : AttrTypeArrObj . TYPE ,
138
- "array_string" : AttrTypeArrStr . TYPE ,
139
- "array_named_object" : AttrTypeArrNamedObj . TYPE ,
140
- "array_group" : AttrTypeArrGroup . TYPE ,
141
- "array_role" : AttrTypeArrRole . TYPE ,
142
- "text" : AttrTypeText . TYPE ,
143
- "boolean" : AttrTypeBoolean . TYPE ,
144
- "group" : AttrTypeGroup . TYPE ,
145
- "date" : AttrTypeDate . TYPE ,
146
- "role" : AttrTypeRole . TYPE ,
139
+ "object" : AttrType . OBJECT ,
140
+ "string" : AttrType . STRING ,
141
+ "named" : AttrType . _NAMED ,
142
+ "named_object" : AttrType . NAMED_OBJECT ,
143
+ "array" : AttrType . _ARRAY ,
144
+ "array_object" : AttrType . ARRAY_OBJECT ,
145
+ "array_string" : AttrType . ARRAY_STRING ,
146
+ "array_named_object" : AttrType . ARRAY_NAMED_OBJECT ,
147
+ "array_group" : AttrType . ARRAY_GROUP ,
148
+ "array_role" : AttrType . ARRAY_ROLE ,
149
+ "text" : AttrType . TEXT ,
150
+ "boolean" : AttrType . BOOLEAN ,
151
+ "group" : AttrType . GROUP ,
152
+ "date" : AttrType . DATE ,
153
+ "role" : AttrType . ROLE ,
147
154
}
148
- AttrDefaultValue = {
149
- AttrTypeValue [ "object" ] : AttrTypeObj .DEFAULT_VALUE ,
150
- AttrTypeValue [ "string" ] : AttrTypeStr .DEFAULT_VALUE ,
151
- AttrTypeValue [ "named_object" ] : AttrTypeNamedObj .DEFAULT_VALUE ,
152
- AttrTypeValue [ "array_object" ] : AttrTypeArrObj .DEFAULT_VALUE ,
153
- AttrTypeValue [ "array_string" ] : AttrTypeArrStr .DEFAULT_VALUE ,
154
- AttrTypeValue [ "array_named_object" ] : AttrTypeArrNamedObj .DEFAULT_VALUE ,
155
- AttrTypeValue [ "array_group" ] : AttrTypeArrGroup .DEFAULT_VALUE ,
156
- AttrTypeValue [ "array_role" ] : AttrTypeArrRole .DEFAULT_VALUE ,
157
- AttrTypeValue [ "text" ] : AttrTypeText .DEFAULT_VALUE ,
158
- AttrTypeValue [ "boolean" ] : AttrTypeBoolean .DEFAULT_VALUE ,
159
- AttrTypeValue [ "group" ] : AttrTypeGroup .DEFAULT_VALUE ,
160
- AttrTypeValue [ "date" ] : AttrTypeDate .DEFAULT_VALUE ,
161
- AttrTypeValue [ "role" ] : AttrTypeRole .DEFAULT_VALUE ,
155
+ AttrDefaultValue : dict [ int , Any ] = {
156
+ AttrType . OBJECT : AttrTypeObj .DEFAULT_VALUE ,
157
+ AttrType . STRING : AttrTypeStr .DEFAULT_VALUE ,
158
+ AttrType . NAMED_OBJECT : AttrTypeNamedObj .DEFAULT_VALUE ,
159
+ AttrType . ARRAY_OBJECT : AttrTypeArrObj .DEFAULT_VALUE ,
160
+ AttrType . ARRAY_STRING : AttrTypeArrStr .DEFAULT_VALUE ,
161
+ AttrType . ARRAY_NAMED_OBJECT : AttrTypeArrNamedObj .DEFAULT_VALUE ,
162
+ AttrType . ARRAY_GROUP : AttrTypeArrGroup .DEFAULT_VALUE ,
163
+ AttrType . ARRAY_ROLE : AttrTypeArrRole .DEFAULT_VALUE ,
164
+ AttrType . TEXT : AttrTypeText .DEFAULT_VALUE ,
165
+ AttrType . BOOLEAN : AttrTypeBoolean .DEFAULT_VALUE ,
166
+ AttrType . GROUP : AttrTypeGroup .DEFAULT_VALUE ,
167
+ AttrType . DATE : AttrTypeDate .DEFAULT_VALUE ,
168
+ AttrType . ROLE : AttrTypeRole .DEFAULT_VALUE ,
162
169
}
163
-
164
-
165
- class AttrType (enum .IntEnum ):
166
- OBJECT = AttrTypeObj .TYPE
167
- STRING = AttrTypeStr .TYPE
168
- NAMED_OBJECT = AttrTypeNamedObj .TYPE
169
- ARRAY_OBJECT = AttrTypeArrObj .TYPE
170
- ARRAY_STRING = AttrTypeArrStr .TYPE
171
- ARRAY_NAMED_OBJECT = AttrTypeArrNamedObj .TYPE
172
- ARRAY_NAMED_OBJECT_BOOLEAN = 3081 # unmanaged by AttrTypeXXX
173
- ARRAY_GROUP = AttrTypeArrGroup .TYPE
174
- ARRAY_ROLE = AttrTypeArrRole .TYPE
175
- TEXT = AttrTypeText .TYPE
176
- BOOLEAN = AttrTypeBoolean .TYPE
177
- GROUP = AttrTypeGroup .TYPE
178
- DATE = AttrTypeDate .TYPE
179
- ROLE = AttrTypeRole .TYPE
0 commit comments