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,629 @@
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: singleton.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="singleton.c">singleton.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>: cdef class Singleton(type):</pre>
306
+ <pre class="cython line score-0">&#xA0;<span class="">05</span>: """Singleton.</pre>
307
+ <pre class="cython line score-0">&#xA0;<span class="">06</span>: Metaclass for Singleton instances.</pre>
308
+ <pre class="cython line score-0">&#xA0;<span class="">07</span>: Returns:</pre>
309
+ <pre class="cython line score-0">&#xA0;<span class="">08</span>: cls: a singleton version of the class, there are only one</pre>
310
+ <pre class="cython line score-0">&#xA0;<span class="">09</span>: version of the instance any time.</pre>
311
+ <pre class="cython line score-0">&#xA0;<span class="">10</span>: """</pre>
312
+ <pre class="cython line score-75" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">11</span>: def __init__(cls, name, bases, attrs, **kwargs):</pre>
313
+ <pre class='cython code score-75 '>/* Python wrapper */
314
+ static int __pyx_pw_9datamodel_8typedefs_9singleton_9Singleton_1__init__(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
315
+ static int __pyx_pw_9datamodel_8typedefs_9singleton_9Singleton_1__init__(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
316
+ PyObject *__pyx_v_name = 0;
317
+ PyObject *__pyx_v_bases = 0;
318
+ PyObject *__pyx_v_attrs = 0;
319
+ CYTHON_UNUSED PyObject *__pyx_v_kwargs = 0;
320
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
321
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
322
+ int __pyx_r;
323
+ <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
324
+ <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__init__ (wrapper)", 0);
325
+ #if CYTHON_ASSUME_SAFE_MACROS
326
+ __pyx_nargs = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
327
+ #else
328
+ __pyx_nargs = <span class='py_c_api'>PyTuple_Size</span>(__pyx_args); if (unlikely(__pyx_nargs &lt; 0)) return -1;
329
+ #endif
330
+ __pyx_kwvalues = <span class='pyx_c_api'>__Pyx_KwValues_VARARGS</span>(__pyx_args, __pyx_nargs);
331
+ __pyx_v_kwargs = <span class='py_c_api'>PyDict_New</span>(); if (unlikely(!__pyx_v_kwargs)) return -1;
332
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_kwargs);
333
+ {
334
+ PyObject **__pyx_pyargnames[] = {&amp;__pyx_n_s_name,&amp;__pyx_n_s_bases,&amp;__pyx_n_s_attrs,0};
335
+ PyObject* values[3] = {0,0,0};
336
+ if (__pyx_kwds) {
337
+ Py_ssize_t kw_args;
338
+ switch (__pyx_nargs) {
339
+ case 3: values[2] = <span class='pyx_c_api'>__Pyx_Arg_VARARGS</span>(__pyx_args, 2);
340
+ CYTHON_FALLTHROUGH;
341
+ case 2: values[1] = <span class='pyx_c_api'>__Pyx_Arg_VARARGS</span>(__pyx_args, 1);
342
+ CYTHON_FALLTHROUGH;
343
+ case 1: values[0] = <span class='pyx_c_api'>__Pyx_Arg_VARARGS</span>(__pyx_args, 0);
344
+ CYTHON_FALLTHROUGH;
345
+ case 0: break;
346
+ default: goto __pyx_L5_argtuple_error;
347
+ }
348
+ kw_args = <span class='pyx_c_api'>__Pyx_NumKwargs_VARARGS</span>(__pyx_kwds);
349
+ switch (__pyx_nargs) {
350
+ case 0:
351
+ if (likely((values[0] = <span class='pyx_c_api'>__Pyx_GetKwValue_VARARGS</span>(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) {
352
+ (void)<span class='pyx_c_api'>__Pyx_Arg_NewRef_VARARGS</span>(values[0]);
353
+ kw_args--;
354
+ }
355
+ else if (unlikely(<span class='py_c_api'>PyErr_Occurred</span>())) <span class='error_goto'>__PYX_ERR(0, 11, __pyx_L3_error)</span>
356
+ else goto __pyx_L5_argtuple_error;
357
+ CYTHON_FALLTHROUGH;
358
+ case 1:
359
+ if (likely((values[1] = <span class='pyx_c_api'>__Pyx_GetKwValue_VARARGS</span>(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_bases)) != 0)) {
360
+ (void)<span class='pyx_c_api'>__Pyx_Arg_NewRef_VARARGS</span>(values[1]);
361
+ kw_args--;
362
+ }
363
+ else if (unlikely(<span class='py_c_api'>PyErr_Occurred</span>())) <span class='error_goto'>__PYX_ERR(0, 11, __pyx_L3_error)</span>
364
+ else {
365
+ <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__init__", 1, 3, 3, 1); <span class='error_goto'>__PYX_ERR(0, 11, __pyx_L3_error)</span>
366
+ }
367
+ CYTHON_FALLTHROUGH;
368
+ case 2:
369
+ if (likely((values[2] = <span class='pyx_c_api'>__Pyx_GetKwValue_VARARGS</span>(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_attrs)) != 0)) {
370
+ (void)<span class='pyx_c_api'>__Pyx_Arg_NewRef_VARARGS</span>(values[2]);
371
+ kw_args--;
372
+ }
373
+ else if (unlikely(<span class='py_c_api'>PyErr_Occurred</span>())) <span class='error_goto'>__PYX_ERR(0, 11, __pyx_L3_error)</span>
374
+ else {
375
+ <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__init__", 1, 3, 3, 2); <span class='error_goto'>__PYX_ERR(0, 11, __pyx_L3_error)</span>
376
+ }
377
+ }
378
+ if (unlikely(kw_args &gt; 0)) {
379
+ const Py_ssize_t kwd_pos_args = __pyx_nargs;
380
+ if (unlikely(<span class='pyx_c_api'>__Pyx_ParseOptionalKeywords</span>(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, __pyx_v_kwargs, values + 0, kwd_pos_args, "__init__") &lt; 0)) <span class='error_goto'>__PYX_ERR(0, 11, __pyx_L3_error)</span>
381
+ }
382
+ } else if (unlikely(__pyx_nargs != 3)) {
383
+ goto __pyx_L5_argtuple_error;
384
+ } else {
385
+ values[0] = <span class='pyx_c_api'>__Pyx_Arg_VARARGS</span>(__pyx_args, 0);
386
+ values[1] = <span class='pyx_c_api'>__Pyx_Arg_VARARGS</span>(__pyx_args, 1);
387
+ values[2] = <span class='pyx_c_api'>__Pyx_Arg_VARARGS</span>(__pyx_args, 2);
388
+ }
389
+ __pyx_v_name = values[0];
390
+ __pyx_v_bases = values[1];
391
+ __pyx_v_attrs = values[2];
392
+ }
393
+ goto __pyx_L6_skip;
394
+ __pyx_L5_argtuple_error:;
395
+ <span class='pyx_c_api'>__Pyx_RaiseArgtupleInvalid</span>("__init__", 1, 3, 3, __pyx_nargs); <span class='error_goto'>__PYX_ERR(0, 11, __pyx_L3_error)</span>
396
+ __pyx_L6_skip:;
397
+ goto __pyx_L4_argument_unpacking_done;
398
+ __pyx_L3_error:;
399
+ {
400
+ Py_ssize_t __pyx_temp;
401
+ for (__pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
402
+ <span class='pyx_c_api'>__Pyx_Arg_XDECREF_VARARGS</span>(values[__pyx_temp]);
403
+ }
404
+ }
405
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_kwargs); __pyx_v_kwargs = 0;
406
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("datamodel.typedefs.singleton.Singleton.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
407
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
408
+ return -1;
409
+ __pyx_L4_argument_unpacking_done:;
410
+ __pyx_r = __pyx_pf_9datamodel_8typedefs_9singleton_9Singleton___init__(((struct __pyx_obj_9datamodel_8typedefs_9singleton_Singleton *)__pyx_v_cls), __pyx_v_name, __pyx_v_bases, __pyx_v_attrs, __pyx_v_kwargs);
411
+ int __pyx_lineno = 0;
412
+ const char *__pyx_filename = NULL;
413
+ int __pyx_clineno = 0;
414
+
415
+ /* function exit code */
416
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_kwargs);
417
+ {
418
+ Py_ssize_t __pyx_temp;
419
+ for (__pyx_temp=0; __pyx_temp &lt; (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
420
+ <span class='pyx_c_api'>__Pyx_Arg_XDECREF_VARARGS</span>(values[__pyx_temp]);
421
+ }
422
+ }
423
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
424
+ return __pyx_r;
425
+ }
426
+
427
+ static int __pyx_pf_9datamodel_8typedefs_9singleton_9Singleton___init__(struct __pyx_obj_9datamodel_8typedefs_9singleton_Singleton *__pyx_v_cls, PyObject *__pyx_v_name, PyObject *__pyx_v_bases, PyObject *__pyx_v_attrs, CYTHON_UNUSED PyObject *__pyx_v_kwargs) {
428
+ int __pyx_r;
429
+ /* … */
430
+ /* function exit code */
431
+ __pyx_r = 0;
432
+ goto __pyx_L0;
433
+ __pyx_L1_error:;
434
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_1);
435
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
436
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
437
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("datamodel.typedefs.singleton.Singleton.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
438
+ __pyx_r = -1;
439
+ __pyx_L0:;
440
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
441
+ return __pyx_r;
442
+ }
443
+ </pre><pre class="cython line score-32" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">12</span>: super().__init__(name, bases, attrs)</pre>
444
+ <pre class='cython code score-32 '> __pyx_t_2 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error)</span>
445
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
446
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>((PyObject *)__pyx_ptype_9datamodel_8typedefs_9singleton_Singleton);
447
+ <span class='refnanny'>__Pyx_GIVEREF</span>((PyObject *)__pyx_ptype_9datamodel_8typedefs_9singleton_Singleton);
448
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_9datamodel_8typedefs_9singleton_Singleton))) <span class='error_goto'>__PYX_ERR(0, 12, __pyx_L1_error)</span>;
449
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>((PyObject *)__pyx_v_cls);
450
+ <span class='refnanny'>__Pyx_GIVEREF</span>((PyObject *)__pyx_v_cls);
451
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_2, 1, ((PyObject *)__pyx_v_cls))) <span class='error_goto'>__PYX_ERR(0, 12, __pyx_L1_error)</span>;
452
+ __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_builtin_super, __pyx_t_2, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error)</span>
453
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
454
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
455
+ __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_3, __pyx_n_s_init);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error)</span>
456
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
457
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
458
+ __pyx_t_3 = NULL;
459
+ __pyx_t_4 = 0;
460
+ #if CYTHON_UNPACK_METHODS
461
+ if (likely(<span class='py_c_api'>PyMethod_Check</span>(__pyx_t_2))) {
462
+ __pyx_t_3 = <span class='py_macro_api'>PyMethod_GET_SELF</span>(__pyx_t_2);
463
+ if (likely(__pyx_t_3)) {
464
+ PyObject* function = <span class='py_macro_api'>PyMethod_GET_FUNCTION</span>(__pyx_t_2);
465
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_t_3);
466
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(function);
467
+ <span class='pyx_macro_api'>__Pyx_DECREF_SET</span>(__pyx_t_2, function);
468
+ __pyx_t_4 = 1;
469
+ }
470
+ }
471
+ #endif
472
+ {
473
+ PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_name, __pyx_v_bases, __pyx_v_attrs};
474
+ __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyObject_FastCall</span>(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
475
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
476
+ if (unlikely(!__pyx_t_1)) <span class='error_goto'>__PYX_ERR(0, 12, __pyx_L1_error)</span>
477
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
478
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
479
+ }
480
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
481
+ </pre><pre class="cython line score-3" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">13</span>: cls._instances = {}</pre>
482
+ <pre class='cython code score-3 '> __pyx_t_1 = <span class='pyx_c_api'>__Pyx_PyDict_NewPresized</span>(0);<span class='error_goto'> if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 13, __pyx_L1_error)</span>
483
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_1);
484
+ <span class='refnanny'>__Pyx_GIVEREF</span>(__pyx_t_1);
485
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_cls-&gt;_instances);
486
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_cls-&gt;_instances);
487
+ __pyx_v_cls-&gt;_instances = ((PyObject*)__pyx_t_1);
488
+ __pyx_t_1 = 0;
489
+ </pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">14</span>: cls.__initialized__ = False</pre>
490
+ <pre class='cython code score-0 '> __pyx_v_cls-&gt;__pyx___initialized__ = 0;
491
+ </pre><pre class="cython line score-0">&#xA0;<span class="">15</span>: </pre>
492
+ <pre class="cython line score-26" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">16</span>: def __call__(cls, *args, **kwargs):</pre>
493
+ <pre class='cython code score-26 '>/* Python wrapper */
494
+ static PyObject *__pyx_pw_9datamodel_8typedefs_9singleton_9Singleton_3__call__(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
495
+ static PyObject *__pyx_pw_9datamodel_8typedefs_9singleton_9Singleton_3__call__(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
496
+ PyObject *__pyx_v_args = 0;
497
+ PyObject *__pyx_v_kwargs = 0;
498
+ CYTHON_UNUSED Py_ssize_t __pyx_nargs;
499
+ CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
500
+ PyObject *__pyx_r = 0;
501
+ <span class='refnanny'>__Pyx_RefNannyDeclarations</span>
502
+ <span class='refnanny'>__Pyx_RefNannySetupContext</span>("__call__ (wrapper)", 0);
503
+ #if CYTHON_ASSUME_SAFE_MACROS
504
+ __pyx_nargs = <span class='py_macro_api'>PyTuple_GET_SIZE</span>(__pyx_args);
505
+ #else
506
+ __pyx_nargs = <span class='py_c_api'>PyTuple_Size</span>(__pyx_args); if (unlikely(__pyx_nargs &lt; 0)) return NULL;
507
+ #endif
508
+ __pyx_kwvalues = <span class='pyx_c_api'>__Pyx_KwValues_VARARGS</span>(__pyx_args, __pyx_nargs);
509
+ if (unlikely(__pyx_kwds) &amp;&amp; unlikely(!<span class='pyx_c_api'>__Pyx_CheckKeywordStrings</span>(__pyx_kwds, "__call__", 1))) return NULL;
510
+ if (unlikely(__pyx_kwds)) {
511
+ __pyx_v_kwargs = <span class='pyx_c_api'>__Pyx_KwargsAsDict_VARARGS</span>(__pyx_kwds, __pyx_kwvalues);
512
+ if (unlikely(!__pyx_v_kwargs)) return NULL;
513
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_kwargs);
514
+ } else {
515
+ __pyx_v_kwargs = <span class='py_c_api'>PyDict_New</span>();
516
+ if (unlikely(!__pyx_v_kwargs)) return NULL;
517
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_v_kwargs);
518
+ }
519
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>(__pyx_args);
520
+ __pyx_v_args = __pyx_args;
521
+ __pyx_r = __pyx_pf_9datamodel_8typedefs_9singleton_9Singleton_2__call__(((struct __pyx_obj_9datamodel_8typedefs_9singleton_Singleton *)__pyx_v_cls), __pyx_v_args, __pyx_v_kwargs);
522
+
523
+ /* function exit code */
524
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_args);
525
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_v_kwargs);
526
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
527
+ return __pyx_r;
528
+ }
529
+
530
+ static PyObject *__pyx_pf_9datamodel_8typedefs_9singleton_9Singleton_2__call__(struct __pyx_obj_9datamodel_8typedefs_9singleton_Singleton *__pyx_v_cls, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
531
+ CYTHON_UNUSED PyObject *__pyx_v_instance = NULL;
532
+ PyObject *__pyx_r = NULL;
533
+ /* … */
534
+ /* function exit code */
535
+ __pyx_L1_error:;
536
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_2);
537
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_3);
538
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_t_4);
539
+ <span class='pyx_c_api'>__Pyx_AddTraceback</span>("datamodel.typedefs.singleton.Singleton.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
540
+ __pyx_r = NULL;
541
+ __pyx_L0:;
542
+ <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_v_instance);
543
+ <span class='refnanny'>__Pyx_XGIVEREF</span>(__pyx_r);
544
+ <span class='refnanny'>__Pyx_RefNannyFinishContext</span>();
545
+ return __pyx_r;
546
+ }
547
+ </pre><pre class="cython line score-7" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">17</span>: if cls not in cls._instances:</pre>
548
+ <pre class='cython code score-7 '> if (unlikely(__pyx_v_cls-&gt;_instances == Py_None)) {
549
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not iterable");
550
+ <span class='error_goto'>__PYX_ERR(0, 17, __pyx_L1_error)</span>
551
+ }
552
+ __pyx_t_1 = (<span class='pyx_c_api'>__Pyx_PyDict_ContainsTF</span>(((PyObject *)__pyx_v_cls), __pyx_v_cls-&gt;_instances, Py_NE)); if (unlikely((__pyx_t_1 &lt; 0))) <span class='error_goto'>__PYX_ERR(0, 17, __pyx_L1_error)</span>
553
+ if (__pyx_t_1) {
554
+ /* … */
555
+ goto __pyx_L3;
556
+ }
557
+ </pre><pre class="cython line score-0">&#xA0;<span class="">18</span>: # First time creating an instance for this class</pre>
558
+ <pre class="cython line score-37" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">19</span>: cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)</pre>
559
+ <pre class='cython code score-37 '> __pyx_t_2 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error)</span>
560
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
561
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>((PyObject *)__pyx_ptype_9datamodel_8typedefs_9singleton_Singleton);
562
+ <span class='refnanny'>__Pyx_GIVEREF</span>((PyObject *)__pyx_ptype_9datamodel_8typedefs_9singleton_Singleton);
563
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_9datamodel_8typedefs_9singleton_Singleton))) <span class='error_goto'>__PYX_ERR(0, 19, __pyx_L1_error)</span>;
564
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>((PyObject *)__pyx_v_cls);
565
+ <span class='refnanny'>__Pyx_GIVEREF</span>((PyObject *)__pyx_v_cls);
566
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_2, 1, ((PyObject *)__pyx_v_cls))) <span class='error_goto'>__PYX_ERR(0, 19, __pyx_L1_error)</span>;
567
+ __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_builtin_super, __pyx_t_2, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error)</span>
568
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
569
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
570
+ __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_3, __pyx_n_s_call);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error)</span>
571
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
572
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
573
+ __pyx_t_3 = <span class='py_c_api'>PyDict_Copy</span>(__pyx_v_kwargs);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 19, __pyx_L1_error)</span>
574
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
575
+ __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_2, __pyx_v_args, __pyx_t_3);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 19, __pyx_L1_error)</span>
576
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
577
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
578
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
579
+ if (unlikely(__pyx_v_cls-&gt;_instances == Py_None)) {
580
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not subscriptable");
581
+ <span class='error_goto'>__PYX_ERR(0, 19, __pyx_L1_error)</span>
582
+ }
583
+ if (unlikely((<span class='py_c_api'>PyDict_SetItem</span>(__pyx_v_cls-&gt;_instances, ((PyObject *)__pyx_v_cls), __pyx_t_4) &lt; 0))) <span class='error_goto'>__PYX_ERR(0, 19, __pyx_L1_error)</span>
584
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
585
+ </pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">20</span>: cls.__initialized__ = True</pre>
586
+ <pre class='cython code score-0 '> __pyx_v_cls-&gt;__pyx___initialized__ = 1;
587
+ </pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">21</span>: elif not cls.__initialized__:</pre>
588
+ <pre class='cython code score-0 '> __pyx_t_1 = (!__pyx_v_cls-&gt;__pyx___initialized__);
589
+ if (__pyx_t_1) {
590
+ /* … */
591
+ }
592
+ __pyx_L3:;
593
+ </pre><pre class="cython line score-26" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">22</span>: instance = super(Singleton, cls).__call__(*args, **kwargs)</pre>
594
+ <pre class='cython code score-26 '> __pyx_t_4 = <span class='py_c_api'>PyTuple_New</span>(2);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 22, __pyx_L1_error)</span>
595
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
596
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>((PyObject *)__pyx_ptype_9datamodel_8typedefs_9singleton_Singleton);
597
+ <span class='refnanny'>__Pyx_GIVEREF</span>((PyObject *)__pyx_ptype_9datamodel_8typedefs_9singleton_Singleton);
598
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_4, 0, ((PyObject *)__pyx_ptype_9datamodel_8typedefs_9singleton_Singleton))) <span class='error_goto'>__PYX_ERR(0, 22, __pyx_L1_error)</span>;
599
+ <span class='pyx_macro_api'>__Pyx_INCREF</span>((PyObject *)__pyx_v_cls);
600
+ <span class='refnanny'>__Pyx_GIVEREF</span>((PyObject *)__pyx_v_cls);
601
+ if (<span class='pyx_c_api'>__Pyx_PyTuple_SET_ITEM</span>(__pyx_t_4, 1, ((PyObject *)__pyx_v_cls))) <span class='error_goto'>__PYX_ERR(0, 22, __pyx_L1_error)</span>;
602
+ __pyx_t_3 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_builtin_super, __pyx_t_4, NULL);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 22, __pyx_L1_error)</span>
603
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
604
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
605
+ __pyx_t_4 = <span class='pyx_c_api'>__Pyx_PyObject_GetAttrStr</span>(__pyx_t_3, __pyx_n_s_call);<span class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 22, __pyx_L1_error)</span>
606
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
607
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
608
+ __pyx_t_3 = <span class='py_c_api'>PyDict_Copy</span>(__pyx_v_kwargs);<span class='error_goto'> if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 22, __pyx_L1_error)</span>
609
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
610
+ __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyObject_Call</span>(__pyx_t_4, __pyx_v_args, __pyx_t_3);<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error)</span>
611
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
612
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 0;
613
+ <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 = 0;
614
+ __pyx_v_instance = __pyx_t_2;
615
+ __pyx_t_2 = 0;
616
+ </pre><pre class="cython line score-0" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">23</span>: cls.__initialized__ = True</pre>
617
+ <pre class='cython code score-0 '> __pyx_v_cls-&gt;__pyx___initialized__ = 1;
618
+ </pre><pre class="cython line score-8" onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span class="">24</span>: return cls._instances[cls]</pre>
619
+ <pre class='cython code score-8 '> <span class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
620
+ if (unlikely(__pyx_v_cls-&gt;_instances == Py_None)) {
621
+ <span class='py_c_api'>PyErr_SetString</span>(PyExc_TypeError, "'NoneType' object is not subscriptable");
622
+ <span class='error_goto'>__PYX_ERR(0, 24, __pyx_L1_error)</span>
623
+ }
624
+ __pyx_t_2 = <span class='pyx_c_api'>__Pyx_PyDict_GetItem</span>(__pyx_v_cls-&gt;_instances, ((PyObject *)__pyx_v_cls));<span class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error)</span>
625
+ <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
626
+ __pyx_r = __pyx_t_2;
627
+ __pyx_t_2 = 0;
628
+ goto __pyx_L0;
629
+ </pre></div></body></html>
@@ -0,0 +1,9 @@
1
+ # singleton.pxd
2
+
3
+ cdef class Singleton(type):
4
+ """
5
+ Singleton.
6
+ Metaclass for Singleton instances.
7
+ """
8
+ cdef dict _instances
9
+ cdef bint __initialized__