python-datamodel 0.10.1__cp313-cp313-win32.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. datamodel/__init__.py +13 -0
  2. datamodel/abstract.py +383 -0
  3. datamodel/adaptive/__init__.py +0 -0
  4. datamodel/adaptive/models.py +598 -0
  5. datamodel/aliases/__init__.py +26 -0
  6. datamodel/base.py +180 -0
  7. datamodel/converters.c +43471 -0
  8. datamodel/converters.cp313-win32.pyd +0 -0
  9. datamodel/converters.html +17387 -0
  10. datamodel/converters.pyx +1489 -0
  11. datamodel/exceptions.c +13455 -0
  12. datamodel/exceptions.cp313-win32.pyd +0 -0
  13. datamodel/exceptions.html +1261 -0
  14. datamodel/exceptions.pxd +13 -0
  15. datamodel/exceptions.pyx +50 -0
  16. datamodel/fields.cp313-win32.pyd +0 -0
  17. datamodel/fields.cpp +17401 -0
  18. datamodel/fields.html +3912 -0
  19. datamodel/fields.pyx +309 -0
  20. datamodel/functions.cp313-win32.pyd +0 -0
  21. datamodel/functions.cpp +9068 -0
  22. datamodel/functions.html +1766 -0
  23. datamodel/functions.pxd +9 -0
  24. datamodel/functions.pyx +82 -0
  25. datamodel/jsonld/__init__.py +45 -0
  26. datamodel/jsonld/models.py +500 -0
  27. datamodel/libs/__init__.py +1 -0
  28. datamodel/libs/mapping.c +15067 -0
  29. datamodel/libs/mapping.cp313-win32.pyd +0 -0
  30. datamodel/libs/mapping.html +2618 -0
  31. datamodel/libs/mapping.pxd +11 -0
  32. datamodel/libs/mapping.pyx +135 -0
  33. datamodel/libs/mutables.py +127 -0
  34. datamodel/models.py +814 -0
  35. datamodel/parsers/__init__.py +0 -0
  36. datamodel/parsers/encoders.py +15 -0
  37. datamodel/parsers/json.cp313-win32.pyd +0 -0
  38. datamodel/parsers/json.cpp +17004 -0
  39. datamodel/parsers/json.html +3365 -0
  40. datamodel/parsers/json.pyx +250 -0
  41. datamodel/profiler.py +21 -0
  42. datamodel/py.typed +0 -0
  43. datamodel/rs_core/Cargo.toml +17 -0
  44. datamodel/rs_core/src/lib.rs +294 -0
  45. datamodel/rs_parsers/Cargo.toml +22 -0
  46. datamodel/rs_parsers/src/lib.rs +571 -0
  47. datamodel/rs_parsers.cp313-win32.pyd +0 -0
  48. datamodel/rs_validators/Cargo.toml +17 -0
  49. datamodel/rs_validators/src/lib.rs +0 -0
  50. datamodel/typedefs/__init__.py +9 -0
  51. datamodel/typedefs/singleton.c +9169 -0
  52. datamodel/typedefs/singleton.cp313-win32.pyd +0 -0
  53. datamodel/typedefs/singleton.html +629 -0
  54. datamodel/typedefs/singleton.pxd +9 -0
  55. datamodel/typedefs/singleton.pyx +24 -0
  56. datamodel/typedefs/types.c +11716 -0
  57. datamodel/typedefs/types.cp313-win32.pyd +0 -0
  58. datamodel/typedefs/types.html +732 -0
  59. datamodel/typedefs/types.pxd +11 -0
  60. datamodel/typedefs/types.pyx +39 -0
  61. datamodel/types.c +7165 -0
  62. datamodel/types.cp313-win32.pyd +0 -0
  63. datamodel/types.html +716 -0
  64. datamodel/types.pyx +100 -0
  65. datamodel/validation.cp313-win32.pyd +0 -0
  66. datamodel/validation.cpp +17085 -0
  67. datamodel/validation.html +4769 -0
  68. datamodel/validation.pyx +315 -0
  69. datamodel/version.py +13 -0
  70. examples/nn/examples.py +311 -0
  71. examples/nn/stores.py +151 -0
  72. examples/tests/sp_types.py +294 -0
  73. examples/tests/speed_dates.py +26 -0
  74. python_datamodel-0.10.1.dist-info/LICENSE +29 -0
  75. python_datamodel-0.10.1.dist-info/METADATA +320 -0
  76. python_datamodel-0.10.1.dist-info/RECORD +78 -0
  77. python_datamodel-0.10.1.dist-info/WHEEL +5 -0
  78. python_datamodel-0.10.1.dist-info/top_level.txt +7 -0
@@ -0,0 +1,732 @@
1
+ <!DOCTYPE html>
2
+ <!-- Generated by Cython 3.0.11 -->
3
+ <html>
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>Cython: types.pyx</title>
7
+ <style type="text/css">
8
+
9
+ body.cython { font-family: courier; font-size: 12; }
10
+
11
+ .cython.tag { }
12
+ .cython.line { color: #000000; margin: 0em }
13
+ .cython.code { font-size: 9; color: #444444; display: none; margin: 0px 0px 0px 8px; border-left: 8px none; }
14
+
15
+ .cython.line .run { background-color: #B0FFB0; }
16
+ .cython.line .mis { background-color: #FFB0B0; }
17
+ .cython.code.run { border-left: 8px solid #B0FFB0; }
18
+ .cython.code.mis { border-left: 8px solid #FFB0B0; }
19
+
20
+ .cython.code .py_c_api { color: red; }
21
+ .cython.code .py_macro_api { color: #FF7000; }
22
+ .cython.code .pyx_c_api { color: #FF3000; }
23
+ .cython.code .pyx_macro_api { color: #FF7000; }
24
+ .cython.code .refnanny { color: #FFA000; }
25
+ .cython.code .trace { color: #FFA000; }
26
+ .cython.code .error_goto { color: #FFA000; }
27
+
28
+ .cython.code .coerce { color: #008000; border: 1px dotted #008000 }
29
+ .cython.code .py_attr { color: #FF0000; font-weight: bold; }
30
+ .cython.code .c_attr { color: #0000FF; }
31
+ .cython.code .py_call { color: #FF0000; font-weight: bold; }
32
+ .cython.code .c_call { color: #0000FF; }
33
+
34
+ .cython.score-0 {background-color: #FFFFff;}
35
+ .cython.score-1 {background-color: #FFFFe7;}
36
+ .cython.score-2 {background-color: #FFFFd4;}
37
+ .cython.score-3 {background-color: #FFFFc4;}
38
+ .cython.score-4 {background-color: #FFFFb6;}
39
+ .cython.score-5 {background-color: #FFFFaa;}
40
+ .cython.score-6 {background-color: #FFFF9f;}
41
+ .cython.score-7 {background-color: #FFFF96;}
42
+ .cython.score-8 {background-color: #FFFF8d;}
43
+ .cython.score-9 {background-color: #FFFF86;}
44
+ .cython.score-10 {background-color: #FFFF7f;}
45
+ .cython.score-11 {background-color: #FFFF79;}
46
+ .cython.score-12 {background-color: #FFFF73;}
47
+ .cython.score-13 {background-color: #FFFF6e;}
48
+ .cython.score-14 {background-color: #FFFF6a;}
49
+ .cython.score-15 {background-color: #FFFF66;}
50
+ .cython.score-16 {background-color: #FFFF62;}
51
+ .cython.score-17 {background-color: #FFFF5e;}
52
+ .cython.score-18 {background-color: #FFFF5b;}
53
+ .cython.score-19 {background-color: #FFFF57;}
54
+ .cython.score-20 {background-color: #FFFF55;}
55
+ .cython.score-21 {background-color: #FFFF52;}
56
+ .cython.score-22 {background-color: #FFFF4f;}
57
+ .cython.score-23 {background-color: #FFFF4d;}
58
+ .cython.score-24 {background-color: #FFFF4b;}
59
+ .cython.score-25 {background-color: #FFFF48;}
60
+ .cython.score-26 {background-color: #FFFF46;}
61
+ .cython.score-27 {background-color: #FFFF44;}
62
+ .cython.score-28 {background-color: #FFFF43;}
63
+ .cython.score-29 {background-color: #FFFF41;}
64
+ .cython.score-30 {background-color: #FFFF3f;}
65
+ .cython.score-31 {background-color: #FFFF3e;}
66
+ .cython.score-32 {background-color: #FFFF3c;}
67
+ .cython.score-33 {background-color: #FFFF3b;}
68
+ .cython.score-34 {background-color: #FFFF39;}
69
+ .cython.score-35 {background-color: #FFFF38;}
70
+ .cython.score-36 {background-color: #FFFF37;}
71
+ .cython.score-37 {background-color: #FFFF36;}
72
+ .cython.score-38 {background-color: #FFFF35;}
73
+ .cython.score-39 {background-color: #FFFF34;}
74
+ .cython.score-40 {background-color: #FFFF33;}
75
+ .cython.score-41 {background-color: #FFFF32;}
76
+ .cython.score-42 {background-color: #FFFF31;}
77
+ .cython.score-43 {background-color: #FFFF30;}
78
+ .cython.score-44 {background-color: #FFFF2f;}
79
+ .cython.score-45 {background-color: #FFFF2e;}
80
+ .cython.score-46 {background-color: #FFFF2d;}
81
+ .cython.score-47 {background-color: #FFFF2c;}
82
+ .cython.score-48 {background-color: #FFFF2b;}
83
+ .cython.score-49 {background-color: #FFFF2b;}
84
+ .cython.score-50 {background-color: #FFFF2a;}
85
+ .cython.score-51 {background-color: #FFFF29;}
86
+ .cython.score-52 {background-color: #FFFF29;}
87
+ .cython.score-53 {background-color: #FFFF28;}
88
+ .cython.score-54 {background-color: #FFFF27;}
89
+ .cython.score-55 {background-color: #FFFF27;}
90
+ .cython.score-56 {background-color: #FFFF26;}
91
+ .cython.score-57 {background-color: #FFFF26;}
92
+ .cython.score-58 {background-color: #FFFF25;}
93
+ .cython.score-59 {background-color: #FFFF24;}
94
+ .cython.score-60 {background-color: #FFFF24;}
95
+ .cython.score-61 {background-color: #FFFF23;}
96
+ .cython.score-62 {background-color: #FFFF23;}
97
+ .cython.score-63 {background-color: #FFFF22;}
98
+ .cython.score-64 {background-color: #FFFF22;}
99
+ .cython.score-65 {background-color: #FFFF22;}
100
+ .cython.score-66 {background-color: #FFFF21;}
101
+ .cython.score-67 {background-color: #FFFF21;}
102
+ .cython.score-68 {background-color: #FFFF20;}
103
+ .cython.score-69 {background-color: #FFFF20;}
104
+ .cython.score-70 {background-color: #FFFF1f;}
105
+ .cython.score-71 {background-color: #FFFF1f;}
106
+ .cython.score-72 {background-color: #FFFF1f;}
107
+ .cython.score-73 {background-color: #FFFF1e;}
108
+ .cython.score-74 {background-color: #FFFF1e;}
109
+ .cython.score-75 {background-color: #FFFF1e;}
110
+ .cython.score-76 {background-color: #FFFF1d;}
111
+ .cython.score-77 {background-color: #FFFF1d;}
112
+ .cython.score-78 {background-color: #FFFF1c;}
113
+ .cython.score-79 {background-color: #FFFF1c;}
114
+ .cython.score-80 {background-color: #FFFF1c;}
115
+ .cython.score-81 {background-color: #FFFF1c;}
116
+ .cython.score-82 {background-color: #FFFF1b;}
117
+ .cython.score-83 {background-color: #FFFF1b;}
118
+ .cython.score-84 {background-color: #FFFF1b;}
119
+ .cython.score-85 {background-color: #FFFF1a;}
120
+ .cython.score-86 {background-color: #FFFF1a;}
121
+ .cython.score-87 {background-color: #FFFF1a;}
122
+ .cython.score-88 {background-color: #FFFF1a;}
123
+ .cython.score-89 {background-color: #FFFF19;}
124
+ .cython.score-90 {background-color: #FFFF19;}
125
+ .cython.score-91 {background-color: #FFFF19;}
126
+ .cython.score-92 {background-color: #FFFF19;}
127
+ .cython.score-93 {background-color: #FFFF18;}
128
+ .cython.score-94 {background-color: #FFFF18;}
129
+ .cython.score-95 {background-color: #FFFF18;}
130
+ .cython.score-96 {background-color: #FFFF18;}
131
+ .cython.score-97 {background-color: #FFFF17;}
132
+ .cython.score-98 {background-color: #FFFF17;}
133
+ .cython.score-99 {background-color: #FFFF17;}
134
+ .cython.score-100 {background-color: #FFFF17;}
135
+ .cython.score-101 {background-color: #FFFF16;}
136
+ .cython.score-102 {background-color: #FFFF16;}
137
+ .cython.score-103 {background-color: #FFFF16;}
138
+ .cython.score-104 {background-color: #FFFF16;}
139
+ .cython.score-105 {background-color: #FFFF16;}
140
+ .cython.score-106 {background-color: #FFFF15;}
141
+ .cython.score-107 {background-color: #FFFF15;}
142
+ .cython.score-108 {background-color: #FFFF15;}
143
+ .cython.score-109 {background-color: #FFFF15;}
144
+ .cython.score-110 {background-color: #FFFF15;}
145
+ .cython.score-111 {background-color: #FFFF15;}
146
+ .cython.score-112 {background-color: #FFFF14;}
147
+ .cython.score-113 {background-color: #FFFF14;}
148
+ .cython.score-114 {background-color: #FFFF14;}
149
+ .cython.score-115 {background-color: #FFFF14;}
150
+ .cython.score-116 {background-color: #FFFF14;}
151
+ .cython.score-117 {background-color: #FFFF14;}
152
+ .cython.score-118 {background-color: #FFFF13;}
153
+ .cython.score-119 {background-color: #FFFF13;}
154
+ .cython.score-120 {background-color: #FFFF13;}
155
+ .cython.score-121 {background-color: #FFFF13;}
156
+ .cython.score-122 {background-color: #FFFF13;}
157
+ .cython.score-123 {background-color: #FFFF13;}
158
+ .cython.score-124 {background-color: #FFFF13;}
159
+ .cython.score-125 {background-color: #FFFF12;}
160
+ .cython.score-126 {background-color: #FFFF12;}
161
+ .cython.score-127 {background-color: #FFFF12;}
162
+ .cython.score-128 {background-color: #FFFF12;}
163
+ .cython.score-129 {background-color: #FFFF12;}
164
+ .cython.score-130 {background-color: #FFFF12;}
165
+ .cython.score-131 {background-color: #FFFF12;}
166
+ .cython.score-132 {background-color: #FFFF11;}
167
+ .cython.score-133 {background-color: #FFFF11;}
168
+ .cython.score-134 {background-color: #FFFF11;}
169
+ .cython.score-135 {background-color: #FFFF11;}
170
+ .cython.score-136 {background-color: #FFFF11;}
171
+ .cython.score-137 {background-color: #FFFF11;}
172
+ .cython.score-138 {background-color: #FFFF11;}
173
+ .cython.score-139 {background-color: #FFFF11;}
174
+ .cython.score-140 {background-color: #FFFF11;}
175
+ .cython.score-141 {background-color: #FFFF10;}
176
+ .cython.score-142 {background-color: #FFFF10;}
177
+ .cython.score-143 {background-color: #FFFF10;}
178
+ .cython.score-144 {background-color: #FFFF10;}
179
+ .cython.score-145 {background-color: #FFFF10;}
180
+ .cython.score-146 {background-color: #FFFF10;}
181
+ .cython.score-147 {background-color: #FFFF10;}
182
+ .cython.score-148 {background-color: #FFFF10;}
183
+ .cython.score-149 {background-color: #FFFF10;}
184
+ .cython.score-150 {background-color: #FFFF0f;}
185
+ .cython.score-151 {background-color: #FFFF0f;}
186
+ .cython.score-152 {background-color: #FFFF0f;}
187
+ .cython.score-153 {background-color: #FFFF0f;}
188
+ .cython.score-154 {background-color: #FFFF0f;}
189
+ .cython.score-155 {background-color: #FFFF0f;}
190
+ .cython.score-156 {background-color: #FFFF0f;}
191
+ .cython.score-157 {background-color: #FFFF0f;}
192
+ .cython.score-158 {background-color: #FFFF0f;}
193
+ .cython.score-159 {background-color: #FFFF0f;}
194
+ .cython.score-160 {background-color: #FFFF0f;}
195
+ .cython.score-161 {background-color: #FFFF0e;}
196
+ .cython.score-162 {background-color: #FFFF0e;}
197
+ .cython.score-163 {background-color: #FFFF0e;}
198
+ .cython.score-164 {background-color: #FFFF0e;}
199
+ .cython.score-165 {background-color: #FFFF0e;}
200
+ .cython.score-166 {background-color: #FFFF0e;}
201
+ .cython.score-167 {background-color: #FFFF0e;}
202
+ .cython.score-168 {background-color: #FFFF0e;}
203
+ .cython.score-169 {background-color: #FFFF0e;}
204
+ .cython.score-170 {background-color: #FFFF0e;}
205
+ .cython.score-171 {background-color: #FFFF0e;}
206
+ .cython.score-172 {background-color: #FFFF0e;}
207
+ .cython.score-173 {background-color: #FFFF0d;}
208
+ .cython.score-174 {background-color: #FFFF0d;}
209
+ .cython.score-175 {background-color: #FFFF0d;}
210
+ .cython.score-176 {background-color: #FFFF0d;}
211
+ .cython.score-177 {background-color: #FFFF0d;}
212
+ .cython.score-178 {background-color: #FFFF0d;}
213
+ .cython.score-179 {background-color: #FFFF0d;}
214
+ .cython.score-180 {background-color: #FFFF0d;}
215
+ .cython.score-181 {background-color: #FFFF0d;}
216
+ .cython.score-182 {background-color: #FFFF0d;}
217
+ .cython.score-183 {background-color: #FFFF0d;}
218
+ .cython.score-184 {background-color: #FFFF0d;}
219
+ .cython.score-185 {background-color: #FFFF0d;}
220
+ .cython.score-186 {background-color: #FFFF0d;}
221
+ .cython.score-187 {background-color: #FFFF0c;}
222
+ .cython.score-188 {background-color: #FFFF0c;}
223
+ .cython.score-189 {background-color: #FFFF0c;}
224
+ .cython.score-190 {background-color: #FFFF0c;}
225
+ .cython.score-191 {background-color: #FFFF0c;}
226
+ .cython.score-192 {background-color: #FFFF0c;}
227
+ .cython.score-193 {background-color: #FFFF0c;}
228
+ .cython.score-194 {background-color: #FFFF0c;}
229
+ .cython.score-195 {background-color: #FFFF0c;}
230
+ .cython.score-196 {background-color: #FFFF0c;}
231
+ .cython.score-197 {background-color: #FFFF0c;}
232
+ .cython.score-198 {background-color: #FFFF0c;}
233
+ .cython.score-199 {background-color: #FFFF0c;}
234
+ .cython.score-200 {background-color: #FFFF0c;}
235
+ .cython.score-201 {background-color: #FFFF0c;}
236
+ .cython.score-202 {background-color: #FFFF0c;}
237
+ .cython.score-203 {background-color: #FFFF0b;}
238
+ .cython.score-204 {background-color: #FFFF0b;}
239
+ .cython.score-205 {background-color: #FFFF0b;}
240
+ .cython.score-206 {background-color: #FFFF0b;}
241
+ .cython.score-207 {background-color: #FFFF0b;}
242
+ .cython.score-208 {background-color: #FFFF0b;}
243
+ .cython.score-209 {background-color: #FFFF0b;}
244
+ .cython.score-210 {background-color: #FFFF0b;}
245
+ .cython.score-211 {background-color: #FFFF0b;}
246
+ .cython.score-212 {background-color: #FFFF0b;}
247
+ .cython.score-213 {background-color: #FFFF0b;}
248
+ .cython.score-214 {background-color: #FFFF0b;}
249
+ .cython.score-215 {background-color: #FFFF0b;}
250
+ .cython.score-216 {background-color: #FFFF0b;}
251
+ .cython.score-217 {background-color: #FFFF0b;}
252
+ .cython.score-218 {background-color: #FFFF0b;}
253
+ .cython.score-219 {background-color: #FFFF0b;}
254
+ .cython.score-220 {background-color: #FFFF0b;}
255
+ .cython.score-221 {background-color: #FFFF0b;}
256
+ .cython.score-222 {background-color: #FFFF0a;}
257
+ .cython.score-223 {background-color: #FFFF0a;}
258
+ .cython.score-224 {background-color: #FFFF0a;}
259
+ .cython.score-225 {background-color: #FFFF0a;}
260
+ .cython.score-226 {background-color: #FFFF0a;}
261
+ .cython.score-227 {background-color: #FFFF0a;}
262
+ .cython.score-228 {background-color: #FFFF0a;}
263
+ .cython.score-229 {background-color: #FFFF0a;}
264
+ .cython.score-230 {background-color: #FFFF0a;}
265
+ .cython.score-231 {background-color: #FFFF0a;}
266
+ .cython.score-232 {background-color: #FFFF0a;}
267
+ .cython.score-233 {background-color: #FFFF0a;}
268
+ .cython.score-234 {background-color: #FFFF0a;}
269
+ .cython.score-235 {background-color: #FFFF0a;}
270
+ .cython.score-236 {background-color: #FFFF0a;}
271
+ .cython.score-237 {background-color: #FFFF0a;}
272
+ .cython.score-238 {background-color: #FFFF0a;}
273
+ .cython.score-239 {background-color: #FFFF0a;}
274
+ .cython.score-240 {background-color: #FFFF0a;}
275
+ .cython.score-241 {background-color: #FFFF0a;}
276
+ .cython.score-242 {background-color: #FFFF0a;}
277
+ .cython.score-243 {background-color: #FFFF0a;}
278
+ .cython.score-244 {background-color: #FFFF0a;}
279
+ .cython.score-245 {background-color: #FFFF0a;}
280
+ .cython.score-246 {background-color: #FFFF09;}
281
+ .cython.score-247 {background-color: #FFFF09;}
282
+ .cython.score-248 {background-color: #FFFF09;}
283
+ .cython.score-249 {background-color: #FFFF09;}
284
+ .cython.score-250 {background-color: #FFFF09;}
285
+ .cython.score-251 {background-color: #FFFF09;}
286
+ .cython.score-252 {background-color: #FFFF09;}
287
+ .cython.score-253 {background-color: #FFFF09;}
288
+ .cython.score-254 {background-color: #FFFF09;}
289
+ </style>
290
+ </head>
291
+ <body class="cython">
292
+ <p><span style="border-bottom: solid 1px grey;">Generated by Cython 3.0.11</span></p>
293
+ <p>
294
+ <span style="background-color: #FFFF00">Yellow lines</span> hint at Python interaction.<br />
295
+ Click on a line that starts with a "<code>+</code>" to see the C code that Cython generated for it.
296
+ </p>
297
+ <p>Raw output: <a href="types.c">types.c</a></p>
298
+ <div class="cython"><pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">01</span>: # cython: language_level=3, embedsignature=True, boundscheck=False, wraparound=True, initializedcheck=False</pre>
299
+ <pre class='cython code score-8 '> __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyDict_NewPresized</span>(0);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)</span>
300
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
301
+ if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_d, __pyx_n_s_test, __pyx_t_2) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 1, __pyx_L1_error)</span>
302
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
303
+ </pre><pre class="cython line score-0">&#xA0;<span class="">02</span>: # Copyright (C) 2018-present Jesus Lara</pre>
304
+ <pre class="cython line score-0">&#xA0;<span class="">03</span>: #</pre>
305
+ <pre class="cython line score-0">&#xA0;<span class="">04</span>: </pre>
306
+ <pre class="cython line score-0">&#xA0;<span class="">05</span>: cdef class SafeDict(dict):</pre>
307
+ <pre class="cython line score-0">&#xA0;<span class="">06</span>: """</pre>
308
+ <pre class="cython line score-0">&#xA0;<span class="">07</span>: SafeDict.</pre>
309
+ <pre class="cython line score-0">&#xA0;<span class="">08</span>: </pre>
310
+ <pre class="cython line score-0">&#xA0;<span class="">09</span>: Allow to using partial format strings</pre>
311
+ <pre class="cython line score-0">&#xA0;<span class="">10</span>: </pre>
312
+ <pre class="cython line score-0">&#xA0;<span class="">11</span>: """</pre>
313
+ <pre class="cython line score-57" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">12</span>: def __missing__(self, str key):</pre>
314
+ <pre class='cython code score-57 '>/* Python wrapper */
315
+ static PyObject *__pyx_pw_9datamodel_8typedefs_5types_8SafeDict_1__missing__(PyObject *__pyx_v_self,
316
+ #if CYTHON_METH_FASTCALL
317
+ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
318
+ #else
319
+ PyObject *__pyx_args, PyObject *__pyx_kwds
320
+ #endif
321
+ ); /*proto*/
322
+ <span class='py_macro_api'>PyDoc_STRVAR</span>(__pyx_doc_9datamodel_8typedefs_5types_8SafeDict___missing__, "SafeDict.__missing__(self, unicode key)\nMissing method for SafeDict.");
323
+ static PyMethodDef __pyx_mdef_9datamodel_8typedefs_5types_8SafeDict_1__missing__ = {"__missing__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_8typedefs_5types_8SafeDict_1__missing__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_8typedefs_5types_8SafeDict___missing__};
324
+ static PyObject *__pyx_pw_9datamodel_8typedefs_5types_8SafeDict_1__missing__(PyObject *__pyx_v_self,
325
+ #if CYTHON_METH_FASTCALL
326
+ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
327
+ #else
328
+ PyObject *__pyx_args, PyObject *__pyx_kwds
329
+ #endif
330
+ ) {
331
+ PyObject *__pyx_v_key = 0;
332
+ #if !CYTHON_METH_FASTCALL
333
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
334
+ #endif
335
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
336
+ PyObject *__pyx_r = 0;
337
+ <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
338
+ <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__missing__ (wrapper)", 0);
339
+ #if !CYTHON_METH_FASTCALL
340
+ #if CYTHON_ASSUME_SAFE_MACROS
341
+ __pyx_nargs = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
342
+ #else
343
+ __pyx_nargs = <span class='py_c_api'>PyTuple_Size</span>(__pyx_args); if (unlikely(__pyx_nargs &lt; 0)) return NULL;
344
+ #endif
345
+ #endif
346
+ __pyx_kwvalues = <span class='pyx_c_api'>__Pyx_KwValues_FASTCALL</span>(__pyx_args, __pyx_nargs);
347
+ {
348
+ PyObject **__pyx_pyargnames[] = {&amp;__pyx_n_s_key,0};
349
+ PyObject* values[1] = {0};
350
+ if (__pyx_kwds) {
351
+ Py_ssize_t kw_args;
352
+ switch (__pyx_nargs) {
353
+ case 1: values[0] = <span class='pyx_c_api'>__Pyx_Arg_FASTCALL</span>(__pyx_args, 0);
354
+ CYTHON_FALLTHROUGH;
355
+ case 0: break;
356
+ default: goto __pyx_L5_argtuple_error;
357
+ }
358
+ kw_args = <span class='pyx_c_api'>__Pyx_NumKwargs_FASTCALL</span>(__pyx_kwds);
359
+ switch (__pyx_nargs) {
360
+ case 0:
361
+ if (likely((values[0] = <span class='pyx_c_api'>__Pyx_GetKwValue_FASTCALL</span>(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_key)) != 0)) {
362
+ (void)<span class='pyx_c_api'>__Pyx_Arg_NewRef_FASTCALL</span>(values[0]);
363
+ kw_args--;
364
+ }
365
+ else if (unlikely(<span class='py_c_api'>PyErr_Occurred</span>())) <span class='error_goto'>__PYX_ERR(0, 12, __pyx_L3_error)</span>
366
+ else goto __pyx_L5_argtuple_error;
367
+ }
368
+ if (unlikely(kw_args &gt; 0)) {
369
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
370
+ if (unlikely(<span class='pyx_c_api'>__Pyx_ParseOptionalKeywords</span>(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__missing__") &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 12, __pyx_L3_error)</span>
371
+ }
372
+ } else if (unlikely(__pyx_nargs != 1)) {
373
+ goto __pyx_L5_argtuple_error;
374
+ } else {
375
+ values[0] = <span class='pyx_c_api'>__Pyx_Arg_FASTCALL</span>(__pyx_args, 0);
376
+ }
377
+ __pyx_v_key = ((PyObject*)values[0]);
378
+ }
379
+ goto __pyx_L6_skip;
380
+ __pyx_L5_argtuple_error:;
381
+ <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__missing__", 1, 1, 1, __pyx_nargs); <span class='error_goto'>__PYX_ERR(0, 12, __pyx_L3_error)</span>
382
+ __pyx_L6_skip:;
383
+ goto __pyx_L4_argument_unpacking_done;
384
+ __pyx_L3_error:;
385
+ {
386
+ Py_ssize_t __pyx_temp;
387
+ for (__pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
388
+ <span class='pyx_c_api'>__Pyx_Arg_XDECREF_FASTCALL</span>(values[__pyx_temp]);
389
+ }
390
+ }
391
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("datamodel.typedefs.types.SafeDict.__missing__", __pyx_clineno, __pyx_lineno, __pyx_filename);
392
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
393
+ return NULL;
394
+ __pyx_L4_argument_unpacking_done:;
395
+ if (unlikely(!<span class='pyx_c_api'>__Pyx_ArgTypeTest</span>(((PyObject *)__pyx_v_key), (&amp;PyUnicode_Type), 1, "key", 1))) <span class='error_goto'>__PYX_ERR(0, 12, __pyx_L1_error)</span>
396
+ __pyx_r = __pyx_pf_9datamodel_8typedefs_5types_8SafeDict___missing__(((struct __pyx_obj_9datamodel_8typedefs_5types_SafeDict *)__pyx_v_self), __pyx_v_key);
397
+ int __pyx_lineno = 0;
398
+ const char *__pyx_filename = NULL;
399
+ int __pyx_clineno = 0;
400
+
401
+ /* function exit code */
402
+ goto __pyx_L0;
403
+ __pyx_L1_error:;
404
+ __pyx_r = NULL;
405
+ __pyx_L0:;
406
+ {
407
+ Py_ssize_t __pyx_temp;
408
+ for (__pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
409
+ <span class='pyx_c_api'>__Pyx_Arg_XDECREF_FASTCALL</span>(values[__pyx_temp]);
410
+ }
411
+ }
412
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
413
+ return __pyx_r;
414
+ }
415
+
416
+ static PyObject *__pyx_pf_9datamodel_8typedefs_5types_8SafeDict___missing__(CYTHON_UNUSED struct __pyx_obj_9datamodel_8typedefs_5types_SafeDict *__pyx_v_self, PyObject *__pyx_v_key) {
417
+ PyObject *__pyx_r = NULL;
418
+ /* … */
419
+ /* function exit code */
420
+ __pyx_L1_error:;
421
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
422
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
423
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("datamodel.typedefs.types.SafeDict.__missing__", __pyx_clineno, __pyx_lineno, __pyx_filename);
424
+ __pyx_r = NULL;
425
+ __pyx_L0:;
426
+ <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
427
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
428
+ return __pyx_r;
429
+ }
430
+ /* … */
431
+ __pyx_tuple__7 = <span class='py_c_api'>PyTuple_Pack</span>(2, __pyx_n_s_self, __pyx_n_s_key);<span class='error_goto'> if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 12, __pyx_L1_error)</span>
432
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_tuple__7);
433
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_tuple__7);
434
+ /* … */
435
+ __pyx_t_2 = <span class='pyx_c_api'>__Pyx_CyFunction_New</span>(&amp;__pyx_mdef_9datamodel_8typedefs_5types_8SafeDict_1__missing__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SafeDict___missing, NULL, __pyx_n_s_datamodel_typedefs_types, __pyx_d, ((PyObject *)__pyx_codeobj__8));<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error)</span>
436
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
437
+ if (<span class='pyx_c_api'>__Pyx_SetItemOnTypeDict</span>((PyObject *)__pyx_ptype_9datamodel_8typedefs_5types_SafeDict, __pyx_n_s_missing, __pyx_t_2) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 12, __pyx_L1_error)</span>
438
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
439
+ <span class='py_c_api'>PyType_Modified</span>(__pyx_ptype_9datamodel_8typedefs_5types_SafeDict);
440
+ __pyx_codeobj__8 = (PyObject*)<span class='pyx_c_api'>__Pyx_PyCode_New</span>(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_datamodel_typedefs_types_pyx, __pyx_n_s_missing, 12, __pyx_empty_bytes);<span class='error_goto'> if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(0, 12, __pyx_L1_error)</span>
441
+ </pre><pre class="cython line score-0">&#xA0;<span class="">13</span>: """Missing method for SafeDict."""</pre>
442
+ <pre class="cython line score-6" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">14</span>: return "{" + key + "}"</pre>
443
+ <pre class='cython code score-6 '> <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
444
+ __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyUnicode_ConcatSafe</span>(__pyx_kp_u_, __pyx_v_key);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error)</span>
445
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
446
+ __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyUnicode_ConcatInPlace</span>(__pyx_t_1, __pyx_kp_u__2);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error)</span>
447
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
448
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
449
+ __pyx_r = __pyx_t_2;
450
+ __pyx_t_2 = 0;
451
+ goto __pyx_L0;
452
+ </pre><pre class="cython line score-0">&#xA0;<span class="">15</span>: </pre>
453
+ <pre class="cython line score-0">&#xA0;<span class="">16</span>: </pre>
454
+ <pre class="cython line score-0">&#xA0;<span class="">17</span>: cdef class AttrDict(dict):</pre>
455
+ <pre class="cython line score-0">&#xA0;<span class="">18</span>: """</pre>
456
+ <pre class="cython line score-0">&#xA0;<span class="">19</span>: AttrDict.</pre>
457
+ <pre class="cython line score-0">&#xA0;<span class="">20</span>: Allow to using a dictionary like an object</pre>
458
+ <pre class="cython line score-0">&#xA0;<span class="">21</span>: """</pre>
459
+ <pre class="cython line score-25" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">22</span>: def __init__(self, *args, **kwargs):</pre>
460
+ <pre class='cython code score-25 '>/* Python wrapper */
461
+ static int __pyx_pw_9datamodel_8typedefs_5types_8AttrDict_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
462
+ static int __pyx_pw_9datamodel_8typedefs_5types_8AttrDict_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
463
+ PyObject *__pyx_v_args = 0;
464
+ PyObject *__pyx_v_kwargs = 0;
465
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
466
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
467
+ int __pyx_r;
468
+ <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
469
+ <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__init__ (wrapper)", 0);
470
+ #if CYTHON_ASSUME_SAFE_MACROS
471
+ __pyx_nargs = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
472
+ #else
473
+ __pyx_nargs = <span class='py_c_api'>PyTuple_Size</span>(__pyx_args); if (unlikely(__pyx_nargs &lt; 0)) return -1;
474
+ #endif
475
+ __pyx_kwvalues = <span class='pyx_c_api'>__Pyx_KwValues_VARARGS</span>(__pyx_args, __pyx_nargs);
476
+ if (unlikely(__pyx_kwds) &amp;&amp; unlikely(!<span class='pyx_c_api'>__Pyx_CheckKeywordStrings</span>(__pyx_kwds, "__init__", 1))) return -1;
477
+ if (unlikely(__pyx_kwds)) {
478
+ __pyx_v_kwargs = <span class='pyx_c_api'>__Pyx_KwargsAsDict_VARARGS</span>(__pyx_kwds, __pyx_kwvalues);
479
+ if (unlikely(!__pyx_v_kwargs)) return -1;
480
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_kwargs);
481
+ } else {
482
+ __pyx_v_kwargs = <span class='py_c_api'>PyDict_New</span>();
483
+ if (unlikely(!__pyx_v_kwargs)) return -1;
484
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_kwargs);
485
+ }
486
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_args);
487
+ __pyx_v_args = __pyx_args;
488
+ __pyx_r = __pyx_pf_9datamodel_8typedefs_5types_8AttrDict___init__(((struct __pyx_obj_9datamodel_8typedefs_5types_AttrDict *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);
489
+
490
+ /* function exit code */
491
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_args);
492
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_kwargs);
493
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
494
+ return __pyx_r;
495
+ }
496
+
497
+ static int __pyx_pf_9datamodel_8typedefs_5types_8AttrDict___init__(struct __pyx_obj_9datamodel_8typedefs_5types_AttrDict *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
498
+ int __pyx_r;
499
+ /* … */
500
+ /* function exit code */
501
+ __pyx_r = 0;
502
+ goto __pyx_L0;
503
+ __pyx_L1_error:;
504
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
505
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
506
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
507
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("datamodel.typedefs.types.AttrDict.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
508
+ __pyx_r = -1;
509
+ __pyx_L0:;
510
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
511
+ return __pyx_r;
512
+ }
513
+ </pre><pre class="cython line score-27" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">23</span>: super(AttrDict, self).__init__(*args, **kwargs)</pre>
514
+ <pre class='cython code score-27 '> __pyx_t_1 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)</span>
515
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
516
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>((PyObject *)__pyx_ptype_9datamodel_8typedefs_5types_AttrDict);
517
+ <span class='refnanny'>__Pyx_GIVEREF</span>((PyObject *)__pyx_ptype_9datamodel_8typedefs_5types_AttrDict);
518
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_9datamodel_8typedefs_5types_AttrDict))) <span class='error_goto'>__PYX_ERR(0, 23, __pyx_L1_error)</span>;
519
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>((PyObject *)__pyx_v_self);
520
+ <span class='refnanny'>__Pyx_GIVEREF</span>((PyObject *)__pyx_v_self);
521
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_1, 1, ((PyObject *)__pyx_v_self))) <span class='error_goto'>__PYX_ERR(0, 23, __pyx_L1_error)</span>;
522
+ __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_builtin_super, __pyx_t_1, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error)</span>
523
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
524
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
525
+ __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_2, __pyx_n_s_init);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)</span>
526
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
527
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
528
+ __pyx_t_2 = <span class='py_c_api'>PyDict_Copy</span>(__pyx_v_kwargs);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error)</span>
529
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
530
+ __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_1, __pyx_v_args, __pyx_t_2);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error)</span>
531
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
532
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
533
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
534
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
535
+ </pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">24</span>: self.__dict__ = self</pre>
536
+ <pre class='cython code score-2 '> if (<span class='pyx_c_api'>__Pyx_PyObject_SetAttrStr</span>(((PyObject *)__pyx_v_self), __pyx_n_s_dict, ((PyObject *)__pyx_v_self)) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 24, __pyx_L1_error)</span>
537
+ </pre><pre class="cython line score-0">&#xA0;<span class="">25</span>: </pre>
538
+ <pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">26</span>: def __getattr__(self, key):</pre>
539
+ <pre class='cython code score-5 '>/* Python wrapper */
540
+ static PyObject *__pyx_pw_9datamodel_8typedefs_5types_8AttrDict_3__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
541
+ static PyObject *__pyx_pw_9datamodel_8typedefs_5types_8AttrDict_3__getattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
542
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
543
+ PyObject *__pyx_r = 0;
544
+ <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
545
+ <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__getattr__ (wrapper)", 0);
546
+ __pyx_kwvalues = <span class='pyx_c_api'>__Pyx_KwValues_VARARGS</span>(__pyx_args, __pyx_nargs);
547
+ __pyx_r = __pyx_pf_9datamodel_8typedefs_5types_8AttrDict_2__getattr__(((struct __pyx_obj_9datamodel_8typedefs_5types_AttrDict *)__pyx_v_self), ((PyObject *)__pyx_v_key));
548
+
549
+ /* function exit code */
550
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
551
+ return __pyx_r;
552
+ }
553
+
554
+ static PyObject *__pyx_pf_9datamodel_8typedefs_5types_8AttrDict_2__getattr__(struct __pyx_obj_9datamodel_8typedefs_5types_AttrDict *__pyx_v_self, PyObject *__pyx_v_key) {
555
+ PyObject *__pyx_r = NULL;
556
+ /* … */
557
+ /* function exit code */
558
+ __pyx_L1_error:;
559
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
560
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("datamodel.typedefs.types.AttrDict.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
561
+ __pyx_r = NULL;
562
+ __pyx_L0:;
563
+ <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
564
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
565
+ return __pyx_r;
566
+ }
567
+ </pre><pre class="cython line score-3" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">27</span>: return self[key]</pre>
568
+ <pre class='cython code score-3 '> <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
569
+ __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_GetItem</span>(((PyObject *)__pyx_v_self), __pyx_v_key);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 27, __pyx_L1_error)</span>
570
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
571
+ __pyx_r = __pyx_t_1;
572
+ __pyx_t_1 = 0;
573
+ goto __pyx_L0;
574
+ </pre><pre class="cython line score-0">&#xA0;<span class="">28</span>: </pre>
575
+ <pre class="cython line score-4" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">29</span>: def __setattr__(self, key, value):</pre>
576
+ <pre class='cython code score-4 '>/* Python wrapper */
577
+ static int __pyx_pw_9datamodel_8typedefs_5types_8AttrDict_5__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/
578
+ static int __pyx_pw_9datamodel_8typedefs_5types_8AttrDict_5__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
579
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
580
+ int __pyx_r;
581
+ <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
582
+ <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__setattr__ (wrapper)", 0);
583
+ __pyx_kwvalues = <span class='pyx_c_api'>__Pyx_KwValues_VARARGS</span>(__pyx_args, __pyx_nargs);
584
+ __pyx_r = __pyx_pf_9datamodel_8typedefs_5types_8AttrDict_4__setattr__(((struct __pyx_obj_9datamodel_8typedefs_5types_AttrDict *)__pyx_v_self), ((PyObject *)__pyx_v_key), ((PyObject *)__pyx_v_value));
585
+
586
+ /* function exit code */
587
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
588
+ return __pyx_r;
589
+ }
590
+
591
+ static int __pyx_pf_9datamodel_8typedefs_5types_8AttrDict_4__setattr__(struct __pyx_obj_9datamodel_8typedefs_5types_AttrDict *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
592
+ int __pyx_r;
593
+ /* … */
594
+ /* function exit code */
595
+ __pyx_r = 0;
596
+ goto __pyx_L0;
597
+ __pyx_L1_error:;
598
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("datamodel.typedefs.types.AttrDict.__setattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
599
+ __pyx_r = -1;
600
+ __pyx_L0:;
601
+ return __pyx_r;
602
+ }
603
+ </pre><pre class="cython line score-5" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">30</span>: self[key] = value</pre>
604
+ <pre class='cython code score-5 '> if (unlikely((<span class='py_c_api'>PyObject_SetItem</span>(((PyObject *)__pyx_v_self), __pyx_v_key, __pyx_v_value) &lt; 0))) <span class='error_goto'>__PYX_ERR(0, 30, __pyx_L1_error)</span>
605
+ </pre><pre class="cython line score-0">&#xA0;<span class="">31</span>: </pre>
606
+ <pre class="cython line score-0">&#xA0;<span class="">32</span>: </pre>
607
+ <pre class="cython line score-0">&#xA0;<span class="">33</span>: cdef class NullDefault(dict):</pre>
608
+ <pre class="cython line score-0">&#xA0;<span class="">34</span>: """NullDefault.</pre>
609
+ <pre class="cython line score-0">&#xA0;<span class="">35</span>: </pre>
610
+ <pre class="cython line score-0">&#xA0;<span class="">36</span>: When an attribute is missing, return default.</pre>
611
+ <pre class="cython line score-0">&#xA0;<span class="">37</span>: """</pre>
612
+ <pre class="cython line score-46" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">38</span>: def __missing__(self, key):</pre>
613
+ <pre class='cython code score-46 '>/* Python wrapper */
614
+ static PyObject *__pyx_pw_9datamodel_8typedefs_5types_11NullDefault_1__missing__(PyObject *__pyx_v_self,
615
+ #if CYTHON_METH_FASTCALL
616
+ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
617
+ #else
618
+ PyObject *__pyx_args, PyObject *__pyx_kwds
619
+ #endif
620
+ ); /*proto*/
621
+ <span class='py_macro_api'>PyDoc_STRVAR</span>(__pyx_doc_9datamodel_8typedefs_5types_11NullDefault___missing__, "NullDefault.__missing__(self, key)");
622
+ static PyMethodDef __pyx_mdef_9datamodel_8typedefs_5types_11NullDefault_1__missing__ = {"__missing__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_9datamodel_8typedefs_5types_11NullDefault_1__missing__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_9datamodel_8typedefs_5types_11NullDefault___missing__};
623
+ static PyObject *__pyx_pw_9datamodel_8typedefs_5types_11NullDefault_1__missing__(PyObject *__pyx_v_self,
624
+ #if CYTHON_METH_FASTCALL
625
+ PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
626
+ #else
627
+ PyObject *__pyx_args, PyObject *__pyx_kwds
628
+ #endif
629
+ ) {
630
+ CYTHON_UNUSED PyObject *__pyx_v_key = 0;
631
+ #if !CYTHON_METH_FASTCALL
632
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
633
+ #endif
634
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
635
+ PyObject *__pyx_r = 0;
636
+ <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
637
+ <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__missing__ (wrapper)", 0);
638
+ #if !CYTHON_METH_FASTCALL
639
+ #if CYTHON_ASSUME_SAFE_MACROS
640
+ __pyx_nargs = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
641
+ #else
642
+ __pyx_nargs = <span class='py_c_api'>PyTuple_Size</span>(__pyx_args); if (unlikely(__pyx_nargs &lt; 0)) return NULL;
643
+ #endif
644
+ #endif
645
+ __pyx_kwvalues = <span class='pyx_c_api'>__Pyx_KwValues_FASTCALL</span>(__pyx_args, __pyx_nargs);
646
+ {
647
+ PyObject **__pyx_pyargnames[] = {&amp;__pyx_n_s_key,0};
648
+ PyObject* values[1] = {0};
649
+ if (__pyx_kwds) {
650
+ Py_ssize_t kw_args;
651
+ switch (__pyx_nargs) {
652
+ case 1: values[0] = <span class='pyx_c_api'>__Pyx_Arg_FASTCALL</span>(__pyx_args, 0);
653
+ CYTHON_FALLTHROUGH;
654
+ case 0: break;
655
+ default: goto __pyx_L5_argtuple_error;
656
+ }
657
+ kw_args = <span class='pyx_c_api'>__Pyx_NumKwargs_FASTCALL</span>(__pyx_kwds);
658
+ switch (__pyx_nargs) {
659
+ case 0:
660
+ if (likely((values[0] = <span class='pyx_c_api'>__Pyx_GetKwValue_FASTCALL</span>(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_key)) != 0)) {
661
+ (void)<span class='pyx_c_api'>__Pyx_Arg_NewRef_FASTCALL</span>(values[0]);
662
+ kw_args--;
663
+ }
664
+ else if (unlikely(<span class='py_c_api'>PyErr_Occurred</span>())) <span class='error_goto'>__PYX_ERR(0, 38, __pyx_L3_error)</span>
665
+ else goto __pyx_L5_argtuple_error;
666
+ }
667
+ if (unlikely(kw_args &gt; 0)) {
668
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
669
+ if (unlikely(<span class='pyx_c_api'>__Pyx_ParseOptionalKeywords</span>(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__missing__") &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 38, __pyx_L3_error)</span>
670
+ }
671
+ } else if (unlikely(__pyx_nargs != 1)) {
672
+ goto __pyx_L5_argtuple_error;
673
+ } else {
674
+ values[0] = <span class='pyx_c_api'>__Pyx_Arg_FASTCALL</span>(__pyx_args, 0);
675
+ }
676
+ __pyx_v_key = values[0];
677
+ }
678
+ goto __pyx_L6_skip;
679
+ __pyx_L5_argtuple_error:;
680
+ <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__missing__", 1, 1, 1, __pyx_nargs); <span class='error_goto'>__PYX_ERR(0, 38, __pyx_L3_error)</span>
681
+ __pyx_L6_skip:;
682
+ goto __pyx_L4_argument_unpacking_done;
683
+ __pyx_L3_error:;
684
+ {
685
+ Py_ssize_t __pyx_temp;
686
+ for (__pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
687
+ <span class='pyx_c_api'>__Pyx_Arg_XDECREF_FASTCALL</span>(values[__pyx_temp]);
688
+ }
689
+ }
690
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("datamodel.typedefs.types.NullDefault.__missing__", __pyx_clineno, __pyx_lineno, __pyx_filename);
691
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
692
+ return NULL;
693
+ __pyx_L4_argument_unpacking_done:;
694
+ __pyx_r = __pyx_pf_9datamodel_8typedefs_5types_11NullDefault___missing__(((struct __pyx_obj_9datamodel_8typedefs_5types_NullDefault *)__pyx_v_self), __pyx_v_key);
695
+ int __pyx_lineno = 0;
696
+ const char *__pyx_filename = NULL;
697
+ int __pyx_clineno = 0;
698
+
699
+ /* function exit code */
700
+ {
701
+ Py_ssize_t __pyx_temp;
702
+ for (__pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
703
+ <span class='pyx_c_api'>__Pyx_Arg_XDECREF_FASTCALL</span>(values[__pyx_temp]);
704
+ }
705
+ }
706
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
707
+ return __pyx_r;
708
+ }
709
+
710
+ static PyObject *__pyx_pf_9datamodel_8typedefs_5types_11NullDefault___missing__(CYTHON_UNUSED struct __pyx_obj_9datamodel_8typedefs_5types_NullDefault *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_key) {
711
+ PyObject *__pyx_r = NULL;
712
+ /* … */
713
+ /* function exit code */
714
+ __pyx_L0:;
715
+ <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
716
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
717
+ return __pyx_r;
718
+ }
719
+ /* … */
720
+ __pyx_t_2 = <span class='pyx_c_api'>__Pyx_CyFunction_New</span>(&amp;__pyx_mdef_9datamodel_8typedefs_5types_11NullDefault_1__missing__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_NullDefault___missing, NULL, __pyx_n_s_datamodel_typedefs_types, __pyx_d, ((PyObject *)__pyx_codeobj__15));<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 38, __pyx_L1_error)</span>
721
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
722
+ if (<span class='pyx_c_api'>__Pyx_SetItemOnTypeDict</span>((PyObject *)__pyx_ptype_9datamodel_8typedefs_5types_NullDefault, __pyx_n_s_missing, __pyx_t_2) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 38, __pyx_L1_error)</span>
723
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
724
+ <span class='py_c_api'>PyType_Modified</span>(__pyx_ptype_9datamodel_8typedefs_5types_NullDefault);
725
+ /* … */
726
+ __pyx_codeobj__15 = (PyObject*)<span class='pyx_c_api'>__Pyx_PyCode_New</span>(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_datamodel_typedefs_types_pyx, __pyx_n_s_missing, 38, __pyx_empty_bytes);<span class='error_goto'> if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(0, 38, __pyx_L1_error)</span>
727
+ </pre><pre class="cython line score-2" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">39</span>: return ''</pre>
728
+ <pre class='cython code score-2 '> <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
729
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_kp_u__3);
730
+ __pyx_r = __pyx_kp_u__3;
731
+ goto __pyx_L0;
732
+ </pre></div></body></html>