tricc-oo 1.5.22__py3-none-any.whl → 1.5.24__py3-none-any.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 (45) hide show
  1. tests/build.py +17 -23
  2. tests/test_cql.py +37 -108
  3. tests/to_ocl.py +15 -17
  4. tricc_oo/__init__.py +0 -6
  5. tricc_oo/converters/codesystem_to_ocl.py +51 -40
  6. tricc_oo/converters/cql/cqlLexer.py +1 -0
  7. tricc_oo/converters/cql/cqlListener.py +1 -0
  8. tricc_oo/converters/cql/cqlParser.py +1 -0
  9. tricc_oo/converters/cql/cqlVisitor.py +1 -0
  10. tricc_oo/converters/cql_to_operation.py +125 -123
  11. tricc_oo/converters/datadictionnary.py +45 -54
  12. tricc_oo/converters/drawio_type_map.py +143 -61
  13. tricc_oo/converters/tricc_to_xls_form.py +14 -24
  14. tricc_oo/converters/utils.py +3 -3
  15. tricc_oo/converters/xml_to_tricc.py +286 -231
  16. tricc_oo/models/__init__.py +2 -1
  17. tricc_oo/models/base.py +300 -308
  18. tricc_oo/models/calculate.py +63 -49
  19. tricc_oo/models/lang.py +26 -27
  20. tricc_oo/models/ocl.py +146 -161
  21. tricc_oo/models/ordered_set.py +15 -19
  22. tricc_oo/models/tricc.py +145 -89
  23. tricc_oo/parsers/xml.py +15 -30
  24. tricc_oo/serializers/planuml.py +4 -6
  25. tricc_oo/serializers/xls_form.py +81 -135
  26. tricc_oo/strategies/input/base_input_strategy.py +28 -32
  27. tricc_oo/strategies/input/drawio.py +59 -71
  28. tricc_oo/strategies/output/base_output_strategy.py +142 -67
  29. tricc_oo/strategies/output/fhir_form.py +377 -0
  30. tricc_oo/strategies/output/html_form.py +224 -0
  31. tricc_oo/strategies/output/openmrs_form.py +647 -0
  32. tricc_oo/strategies/output/spice.py +106 -127
  33. tricc_oo/strategies/output/xls_form.py +263 -222
  34. tricc_oo/strategies/output/xlsform_cdss.py +623 -142
  35. tricc_oo/strategies/output/xlsform_cht.py +108 -115
  36. tricc_oo/strategies/output/xlsform_cht_hf.py +13 -24
  37. tricc_oo/visitors/tricc.py +1297 -1016
  38. tricc_oo/visitors/utils.py +16 -16
  39. tricc_oo/visitors/xform_pd.py +91 -89
  40. {tricc_oo-1.5.22.dist-info → tricc_oo-1.5.24.dist-info}/METADATA +127 -84
  41. tricc_oo-1.5.24.dist-info/RECORD +50 -0
  42. tricc_oo-1.5.24.dist-info/licenses/LICENSE +373 -0
  43. tricc_oo-1.5.22.dist-info/RECORD +0 -46
  44. {tricc_oo-1.5.22.dist-info → tricc_oo-1.5.24.dist-info}/WHEEL +0 -0
  45. {tricc_oo-1.5.22.dist-info → tricc_oo-1.5.24.dist-info}/top_level.txt +0 -0
@@ -1,189 +1,670 @@
1
1
  import logging
2
2
  from tricc_oo.models.tricc import TriccNodeActivity
3
- from tricc_oo.models.calculate import TriccNodeProposedDiagnosis, TriccNodeInput
4
- from tricc_oo.converters.tricc_to_xls_form import get_export_name
3
+ from tricc_oo.models.calculate import TriccNodeInput
5
4
  from tricc_oo.strategies.output.xls_form import XLSFormStrategy
6
5
  from tricc_oo.models.lang import SingletonLangClass
7
- from tricc_oo.converters.utils import clean_name
8
6
 
9
7
  langs = SingletonLangClass()
10
8
  logger = logging.getLogger("default")
11
9
 
12
10
 
13
-
14
11
  class XLSFormCDSSStrategy(XLSFormStrategy):
15
-
16
- def process_export(self, start_pages, **kwargs):
17
- diags = []
12
+
13
+ def process_export(self, start_pages, **kwargs):
18
14
  self.activity_export(start_pages[self.processes[0]], **kwargs)
19
- #self.add_tab_breaks_choice()
15
+ # self.add_tab_breaks_choice()
20
16
  self.add_wfx_choice()
21
-
22
-
23
- def export_inputs(self, activity, inputs = [], **kwargs):
17
+
18
+ def export_inputs(self, activity, inputs=[], **kwargs):
24
19
  for node in activity.nodes.values():
25
20
  if isinstance(node, TriccNodeActivity):
26
21
  inputs = self.export_inputs(node, inputs, **kwargs)
27
22
  if isinstance(node, TriccNodeInput):
28
23
  inputs.append(node)
29
24
  return inputs
30
-
25
+
31
26
  def tricc_operation_has_qualifier(self, ref_expressions):
32
- raise NotImplementedError(f"This type of opreration is not supported in this strategy")
27
+ raise NotImplementedError("This type of opreration is not supported in this strategy")
28
+
33
29
  def tricc_operation_age_day(self, ref_expressions):
34
- dob_node_name= ref_expressions[0].value if ref_expressions else 'birthday'
35
- return f'int((today()-date(${{{dob_node_name}}})))'
30
+ dob_node_name = ref_expressions[0].value if ref_expressions else "birthday"
31
+ return f"int((today()-date(${{{dob_node_name}}})))"
32
+
36
33
  def tricc_operation_age_month(self, ref_expressions):
37
- dob_node_name= ref_expressions[0].value if ref_expressions else 'birthday'
38
- return f'int((today()-date(${{{dob_node_name}}})) div 30.25)'
34
+ dob_node_name = ref_expressions[0].value if ref_expressions else "birthday"
35
+ return f"int((today()-date(${{{dob_node_name}}})) div 30.25)"
36
+
39
37
  def tricc_operation_age_year(self, ref_expressions):
40
- dob_node_name= ref_expressions[0].value if ref_expressions else 'birthday'
41
- return f'int((today()-date(${{{dob_node_name}}})) div 365.25)'
42
-
43
-
38
+ dob_node_name = ref_expressions[0].value if ref_expressions else "birthday"
39
+ return f"int((today()-date(${{{dob_node_name}}})) div 365.25)"
40
+
44
41
  def add_wfx_choice(self):
45
- empty = langs.get_trads('', force_dict =True)
42
+ empty = langs.get_trads("", force_dict=True)
46
43
  new_rows = [
47
- ['wfl', 'y45_0', *list(empty.values()),*list(empty.values()), 'f', 0, 110, -0.3833, 0.09029, 2.4607],
48
- ['wfa', 'y45_1', *list(empty.values()),*list(empty.values()), 'f', 0, 18500, -0.3833, 0.0903, 2.4777],
49
- ['wfh', 'y45_2', *list(empty.values()),*list(empty.values()), 'f', 0, 125, -0.3833, 0.0903, 2.4947],
44
+ [
45
+ "wfl",
46
+ "y45_0",
47
+ *list(empty.values()),
48
+ *list(empty.values()),
49
+ "f",
50
+ 0,
51
+ 110,
52
+ -0.3833,
53
+ 0.09029,
54
+ 2.4607,
55
+ ],
56
+ [
57
+ "wfa",
58
+ "y45_1",
59
+ *list(empty.values()),
60
+ *list(empty.values()),
61
+ "f",
62
+ 0,
63
+ 18500,
64
+ -0.3833,
65
+ 0.0903,
66
+ 2.4777,
67
+ ],
68
+ [
69
+ "wfh",
70
+ "y45_2",
71
+ *list(empty.values()),
72
+ *list(empty.values()),
73
+ "f",
74
+ 0,
75
+ 125,
76
+ -0.3833,
77
+ 0.0903,
78
+ 2.4947,
79
+ ],
50
80
  ]
51
-
81
+
52
82
  for row in new_rows:
53
83
  self.df_choice.loc[len(self.df_choice)] = row
54
-
55
- label = langs.get_trads('hidden', force_dict =True)
56
- empty = langs.get_trads('', force_dict =True)
84
+
85
+ label = langs.get_trads("hidden", force_dict=True)
86
+ empty = langs.get_trads("", force_dict=True)
57
87
  self.df_survey.loc[len(self.df_survey)] = [
58
- 'select_one wfl',
88
+ "select_one wfl",
59
89
  "wfl",
60
- *list(label.values()) ,
61
- *list(empty.values()) ,#hint
62
- *list(empty.values()) ,#help
63
- '',#default
64
- '',#'appearance', clean_name
65
- '',#'constraint',
66
- *list(empty.values()) ,#'constraint_message'
67
- '0',#'relevance'
68
- '',#'disabled'
69
- '1',#'required'
70
- *list(empty.values()) ,#'required message'
71
- '',#'read only'
72
- '',#'expression'
90
+ *list(label.values()),
91
+ *list(empty.values()), # hint
92
+ *list(empty.values()), # help
93
+ "", # default
94
+ "", # 'appearance', clean_name
95
+ "", # 'constraint',
96
+ *list(empty.values()), # 'constraint_message'
97
+ "0", # 'relevance'
98
+ "", # 'disabled'
99
+ "1", # 'required'
100
+ *list(empty.values()), # 'required message'
101
+ "", # 'read only'
102
+ "", # 'expression'
103
+ "",
104
+ "", # 'repeat_count'
105
+ "", # 'image'
73
106
  "",
74
- '',#'repeat_count'
75
- '',#'image'
76
- ''
77
107
  ]
78
108
  self.df_survey.loc[len(self.df_survey)] = [
79
- 'select_one wfa',
109
+ "select_one wfa",
80
110
  "wfa",
81
- *list(label.values()) ,
82
- *list(empty.values()) ,#hint
83
- *list(empty.values()) ,#help
84
- '',#default
85
- '',#'appearance', clean_name
86
- '',#'constraint',
87
- *list(empty.values()) ,#'constraint_message'
88
- '0',#'relevance'
89
- '',#'disabled'
90
- '1',#'required'
91
- *list(empty.values()) ,#'required message'
92
- '',#'read only'
93
- '',#'expression'
111
+ *list(label.values()),
112
+ *list(empty.values()), # hint
113
+ *list(empty.values()), # help
114
+ "", # default
115
+ "", # 'appearance', clean_name
116
+ "", # 'constraint',
117
+ *list(empty.values()), # 'constraint_message'
118
+ "0", # 'relevance'
119
+ "", # 'disabled'
120
+ "1", # 'required'
121
+ *list(empty.values()), # 'required message'
122
+ "", # 'read only'
123
+ "", # 'expression'
124
+ "",
125
+ "", # 'repeat_count'
126
+ "", # 'image'
94
127
  "",
95
- '',#'repeat_count'
96
- '',#'image'
97
- ''
98
128
  ]
99
129
  self.df_survey.loc[len(self.df_survey)] = [
100
- 'select_one wfh',
130
+ "select_one wfh",
101
131
  "wfh",
102
- *list(label.values()) ,
103
- *list(empty.values()) ,#hint
104
- *list(empty.values()) ,#help
105
- '',#default
106
- '',#'appearance', clean_name
107
- '',#'constraint',
108
- *list(empty.values()) ,#'constraint_message'
109
- '0',#'relevance'
110
- '',#'disabled'
111
- '1',#'required'
112
- *list(empty.values()) ,#'required message'
113
- '',#'read only'
114
- '',#'expression'
132
+ *list(label.values()),
133
+ *list(empty.values()), # hint
134
+ *list(empty.values()), # help
135
+ "", # default
136
+ "", # 'appearance', clean_name
137
+ "", # 'constraint',
138
+ *list(empty.values()), # 'constraint_message'
139
+ "0", # 'relevance'
140
+ "", # 'disabled'
141
+ "1", # 'required'
142
+ *list(empty.values()), # 'required message'
143
+ "", # 'read only'
144
+ "", # 'expression'
145
+ "",
146
+ "", # 'repeat_count'
147
+ "", # 'image'
115
148
  "",
116
- '',#'repeat_count'
117
- '',#'image'
118
- ''
119
149
  ]
120
-
150
+
121
151
  def add_tab_breaks_choice(self):
122
- label = langs.get_trads('hidden', force_dict =True)
123
- empty = langs.get_trads('', force_dict =True)
152
+ label = langs.get_trads("hidden", force_dict=True)
153
+ empty = langs.get_trads("", force_dict=True)
124
154
  self.df_survey.loc[len(self.df_survey)] = [
125
- 'select_one tab-label-4',
155
+ "select_one tab-label-4",
126
156
  "tab_label_4",
127
- *list(label.values()) ,
128
- *list(empty.values()) ,#hint
129
- *list(empty.values()) ,#help
130
- '',#default
131
- '',#'appearance', clean_name
132
- '',#'constraint',
133
- *list(empty.values()) ,#'constraint_message'
134
- '0',#'relevance'
135
- '',#'disabled'
136
- '1',#'required'
137
- *list(empty.values()) ,#'required message'
138
- '',#'read only'
157
+ *list(label.values()),
158
+ *list(empty.values()), # hint
159
+ *list(empty.values()), # help
160
+ "", # default
161
+ "", # 'appearance', clean_name
162
+ "", # 'constraint',
163
+ *list(empty.values()), # 'constraint_message'
164
+ "0", # 'relevance'
165
+ "", # 'disabled'
166
+ "1", # 'required'
167
+ *list(empty.values()), # 'required message'
168
+ "", # 'read only'
169
+ "",
170
+ "", # 'expression'
171
+ "", # 'repeat_count'
172
+ "", # 'image'
139
173
  "",
140
- '',#'expression'
141
- '',#'repeat_count'
142
- '',#'image'
143
- ''
144
174
  ]
145
175
  new_rows = [
146
- ['tab-label-4', 0, langs.get_trads('--'),*list(empty.values()),'','','','','',''],
147
- ['tab-label-4', 1, langs.get_trads('--'),*list(empty.values()),'','','','','',''],
148
- ['tab-label-4', 2, langs.get_trads('1/2'),*list(empty.values()),'','','','','',''],
149
- ['tab-label-4', 3, langs.get_trads('1/2'),*list(empty.values()),'','','','','',''],
150
- ['tab-label-4', 4, langs.get_trads('1'),*list(empty.values()),'','','','','',''],
151
- ['tab-label-4', 5, langs.get_trads('1'),*list(empty.values()),'','','','','',''],
152
- ['tab-label-4', 6, langs.get_trads('1 and 1/2'),*list(empty.values()),'','','','','',''],
153
- ['tab-label-4', 7, langs.get_trads('1 and 1/2'),*list(empty.values()),'','','','','',''],
154
- ['tab-label-4', 8, langs.get_trads('2'),*list(empty.values()),'','','','','',''],
155
- ['tab-label-4', 9, langs.get_trads('2'),*list(empty.values()),'','','','','',''],
156
- ['tab-label-4', 10, langs.get_trads('2 and 1/2'),*list(empty.values()),'','','','','',''],
157
- ['tab-label-4', 11, langs.get_trads('2 and 1/2'),*list(empty.values()),'','','','','',''],
158
- ['tab-label-4', 12, langs.get_trads('3'),*list(empty.values()),'','','','','',''],
159
- ['tab-label-4', 13, langs.get_trads('3'),*list(empty.values()),'','','','','',''],
160
- ['tab-label-4', 14, langs.get_trads('3 and 1/2'),*list(empty.values()),'','','','','',''],
161
- ['tab-label-4', 15, langs.get_trads('3 and 1/2'),*list(empty.values()),'','','','','',''],
162
- ['tab-label-4', 16, langs.get_trads('4'),*list(empty.values()),'','','','','',''],
163
- ['tab-label-4', 17, langs.get_trads('4'),*list(empty.values()),'','','','','',''],
164
- ['tab-label-4', 18, langs.get_trads('4 and 1/2'),*list(empty.values()),'','','','','',''],
165
- ['tab-label-4', 19, langs.get_trads('4 and 1/2'),*list(empty.values()),'','','','','',''],
166
- ['tab-label-4', 20, langs.get_trads('5'),*list(empty.values()),'','','','','',''],
167
- ['tab-label-4', 21, langs.get_trads('5'),*list(empty.values()),'','','','','',''],
168
- ['tab-label-4', 22, langs.get_trads('5 and 1/2'),*list(empty.values()),'','','','','',''],
169
- ['tab-label-4', 23, langs.get_trads('5 and 1/2'),*list(empty.values()),'','','','','',''],
170
- ['tab-label-4', 24, langs.get_trads('6'),*list(empty.values()),'','','','','',''],
171
- ['tab-label-4', 25, langs.get_trads('6'),*list(empty.values()),'','','','','',''],
172
- ['tab-label-4', 26, langs.get_trads('6 and 1/2'),*list(empty.values()),'','','','','',''],
173
- ['tab-label-4', 27, langs.get_trads('6 and 1/2'),*list(empty.values()),'','','','','',''],
174
- ['tab-label-4', 28, langs.get_trads('7'),*list(empty.values()),'','','','','',''],
175
- ['tab-label-4', 29, langs.get_trads('7'),*list(empty.values()),'','','','','',''],
176
- ['tab-label-4', 30, langs.get_trads('7 and 1/2'),*list(empty.values()),'','','','','',''],
177
- ['tab-label-4', 31, langs.get_trads('7 and 1/2'),*list(empty.values()),'','','','','',''],
178
- ['tab-label-4', 32, langs.get_trads('8'),*list(empty.values()),'','','','','',''],
179
- ['tab-label-4', 33, langs.get_trads('8'),*list(empty.values()),'','','','','',''],
180
- ['tab-label-4', 34, langs.get_trads('8 and 1/2'),*list(empty.values()),'','','','','',''],
181
- ['tab-label-4', 35, langs.get_trads('8 and 1/2'),*list(empty.values()),'','','','','',''],
182
- ['tab-label-4', 36, langs.get_trads('9'),*list(empty.values()),'','','','','',''],
183
- ['tab-label-4', 37, langs.get_trads('9'),*list(empty.values()),'','','','','',''],
184
- ['tab-label-4', 38, langs.get_trads('9 and 1/2'),*list(empty.values()),'','','','','',''],
185
- ['tab-label-4', 39, langs.get_trads('9 and 1/2'),*list(empty.values()),'','','','','',''],
186
- ['tab-label-4', 40, langs.get_trads('10'),*list(empty.values()),'','','','','','']
176
+ [
177
+ "tab-label-4",
178
+ 0,
179
+ langs.get_trads("--"),
180
+ *list(empty.values()),
181
+ "",
182
+ "",
183
+ "",
184
+ "",
185
+ "",
186
+ "",
187
+ ],
188
+ [
189
+ "tab-label-4",
190
+ 1,
191
+ langs.get_trads("--"),
192
+ *list(empty.values()),
193
+ "",
194
+ "",
195
+ "",
196
+ "",
197
+ "",
198
+ "",
199
+ ],
200
+ [
201
+ "tab-label-4",
202
+ 2,
203
+ langs.get_trads("1/2"),
204
+ *list(empty.values()),
205
+ "",
206
+ "",
207
+ "",
208
+ "",
209
+ "",
210
+ "",
211
+ ],
212
+ [
213
+ "tab-label-4",
214
+ 3,
215
+ langs.get_trads("1/2"),
216
+ *list(empty.values()),
217
+ "",
218
+ "",
219
+ "",
220
+ "",
221
+ "",
222
+ "",
223
+ ],
224
+ [
225
+ "tab-label-4",
226
+ 4,
227
+ langs.get_trads("1"),
228
+ *list(empty.values()),
229
+ "",
230
+ "",
231
+ "",
232
+ "",
233
+ "",
234
+ "",
235
+ ],
236
+ [
237
+ "tab-label-4",
238
+ 5,
239
+ langs.get_trads("1"),
240
+ *list(empty.values()),
241
+ "",
242
+ "",
243
+ "",
244
+ "",
245
+ "",
246
+ "",
247
+ ],
248
+ [
249
+ "tab-label-4",
250
+ 6,
251
+ langs.get_trads("1 and 1/2"),
252
+ *list(empty.values()),
253
+ "",
254
+ "",
255
+ "",
256
+ "",
257
+ "",
258
+ "",
259
+ ],
260
+ [
261
+ "tab-label-4",
262
+ 7,
263
+ langs.get_trads("1 and 1/2"),
264
+ *list(empty.values()),
265
+ "",
266
+ "",
267
+ "",
268
+ "",
269
+ "",
270
+ "",
271
+ ],
272
+ [
273
+ "tab-label-4",
274
+ 8,
275
+ langs.get_trads("2"),
276
+ *list(empty.values()),
277
+ "",
278
+ "",
279
+ "",
280
+ "",
281
+ "",
282
+ "",
283
+ ],
284
+ [
285
+ "tab-label-4",
286
+ 9,
287
+ langs.get_trads("2"),
288
+ *list(empty.values()),
289
+ "",
290
+ "",
291
+ "",
292
+ "",
293
+ "",
294
+ "",
295
+ ],
296
+ [
297
+ "tab-label-4",
298
+ 10,
299
+ langs.get_trads("2 and 1/2"),
300
+ *list(empty.values()),
301
+ "",
302
+ "",
303
+ "",
304
+ "",
305
+ "",
306
+ "",
307
+ ],
308
+ [
309
+ "tab-label-4",
310
+ 11,
311
+ langs.get_trads("2 and 1/2"),
312
+ *list(empty.values()),
313
+ "",
314
+ "",
315
+ "",
316
+ "",
317
+ "",
318
+ "",
319
+ ],
320
+ [
321
+ "tab-label-4",
322
+ 12,
323
+ langs.get_trads("3"),
324
+ *list(empty.values()),
325
+ "",
326
+ "",
327
+ "",
328
+ "",
329
+ "",
330
+ "",
331
+ ],
332
+ [
333
+ "tab-label-4",
334
+ 13,
335
+ langs.get_trads("3"),
336
+ *list(empty.values()),
337
+ "",
338
+ "",
339
+ "",
340
+ "",
341
+ "",
342
+ "",
343
+ ],
344
+ [
345
+ "tab-label-4",
346
+ 14,
347
+ langs.get_trads("3 and 1/2"),
348
+ *list(empty.values()),
349
+ "",
350
+ "",
351
+ "",
352
+ "",
353
+ "",
354
+ "",
355
+ ],
356
+ [
357
+ "tab-label-4",
358
+ 15,
359
+ langs.get_trads("3 and 1/2"),
360
+ *list(empty.values()),
361
+ "",
362
+ "",
363
+ "",
364
+ "",
365
+ "",
366
+ "",
367
+ ],
368
+ [
369
+ "tab-label-4",
370
+ 16,
371
+ langs.get_trads("4"),
372
+ *list(empty.values()),
373
+ "",
374
+ "",
375
+ "",
376
+ "",
377
+ "",
378
+ "",
379
+ ],
380
+ [
381
+ "tab-label-4",
382
+ 17,
383
+ langs.get_trads("4"),
384
+ *list(empty.values()),
385
+ "",
386
+ "",
387
+ "",
388
+ "",
389
+ "",
390
+ "",
391
+ ],
392
+ [
393
+ "tab-label-4",
394
+ 18,
395
+ langs.get_trads("4 and 1/2"),
396
+ *list(empty.values()),
397
+ "",
398
+ "",
399
+ "",
400
+ "",
401
+ "",
402
+ "",
403
+ ],
404
+ [
405
+ "tab-label-4",
406
+ 19,
407
+ langs.get_trads("4 and 1/2"),
408
+ *list(empty.values()),
409
+ "",
410
+ "",
411
+ "",
412
+ "",
413
+ "",
414
+ "",
415
+ ],
416
+ [
417
+ "tab-label-4",
418
+ 20,
419
+ langs.get_trads("5"),
420
+ *list(empty.values()),
421
+ "",
422
+ "",
423
+ "",
424
+ "",
425
+ "",
426
+ "",
427
+ ],
428
+ [
429
+ "tab-label-4",
430
+ 21,
431
+ langs.get_trads("5"),
432
+ *list(empty.values()),
433
+ "",
434
+ "",
435
+ "",
436
+ "",
437
+ "",
438
+ "",
439
+ ],
440
+ [
441
+ "tab-label-4",
442
+ 22,
443
+ langs.get_trads("5 and 1/2"),
444
+ *list(empty.values()),
445
+ "",
446
+ "",
447
+ "",
448
+ "",
449
+ "",
450
+ "",
451
+ ],
452
+ [
453
+ "tab-label-4",
454
+ 23,
455
+ langs.get_trads("5 and 1/2"),
456
+ *list(empty.values()),
457
+ "",
458
+ "",
459
+ "",
460
+ "",
461
+ "",
462
+ "",
463
+ ],
464
+ [
465
+ "tab-label-4",
466
+ 24,
467
+ langs.get_trads("6"),
468
+ *list(empty.values()),
469
+ "",
470
+ "",
471
+ "",
472
+ "",
473
+ "",
474
+ "",
475
+ ],
476
+ [
477
+ "tab-label-4",
478
+ 25,
479
+ langs.get_trads("6"),
480
+ *list(empty.values()),
481
+ "",
482
+ "",
483
+ "",
484
+ "",
485
+ "",
486
+ "",
487
+ ],
488
+ [
489
+ "tab-label-4",
490
+ 26,
491
+ langs.get_trads("6 and 1/2"),
492
+ *list(empty.values()),
493
+ "",
494
+ "",
495
+ "",
496
+ "",
497
+ "",
498
+ "",
499
+ ],
500
+ [
501
+ "tab-label-4",
502
+ 27,
503
+ langs.get_trads("6 and 1/2"),
504
+ *list(empty.values()),
505
+ "",
506
+ "",
507
+ "",
508
+ "",
509
+ "",
510
+ "",
511
+ ],
512
+ [
513
+ "tab-label-4",
514
+ 28,
515
+ langs.get_trads("7"),
516
+ *list(empty.values()),
517
+ "",
518
+ "",
519
+ "",
520
+ "",
521
+ "",
522
+ "",
523
+ ],
524
+ [
525
+ "tab-label-4",
526
+ 29,
527
+ langs.get_trads("7"),
528
+ *list(empty.values()),
529
+ "",
530
+ "",
531
+ "",
532
+ "",
533
+ "",
534
+ "",
535
+ ],
536
+ [
537
+ "tab-label-4",
538
+ 30,
539
+ langs.get_trads("7 and 1/2"),
540
+ *list(empty.values()),
541
+ "",
542
+ "",
543
+ "",
544
+ "",
545
+ "",
546
+ "",
547
+ ],
548
+ [
549
+ "tab-label-4",
550
+ 31,
551
+ langs.get_trads("7 and 1/2"),
552
+ *list(empty.values()),
553
+ "",
554
+ "",
555
+ "",
556
+ "",
557
+ "",
558
+ "",
559
+ ],
560
+ [
561
+ "tab-label-4",
562
+ 32,
563
+ langs.get_trads("8"),
564
+ *list(empty.values()),
565
+ "",
566
+ "",
567
+ "",
568
+ "",
569
+ "",
570
+ "",
571
+ ],
572
+ [
573
+ "tab-label-4",
574
+ 33,
575
+ langs.get_trads("8"),
576
+ *list(empty.values()),
577
+ "",
578
+ "",
579
+ "",
580
+ "",
581
+ "",
582
+ "",
583
+ ],
584
+ [
585
+ "tab-label-4",
586
+ 34,
587
+ langs.get_trads("8 and 1/2"),
588
+ *list(empty.values()),
589
+ "",
590
+ "",
591
+ "",
592
+ "",
593
+ "",
594
+ "",
595
+ ],
596
+ [
597
+ "tab-label-4",
598
+ 35,
599
+ langs.get_trads("8 and 1/2"),
600
+ *list(empty.values()),
601
+ "",
602
+ "",
603
+ "",
604
+ "",
605
+ "",
606
+ "",
607
+ ],
608
+ [
609
+ "tab-label-4",
610
+ 36,
611
+ langs.get_trads("9"),
612
+ *list(empty.values()),
613
+ "",
614
+ "",
615
+ "",
616
+ "",
617
+ "",
618
+ "",
619
+ ],
620
+ [
621
+ "tab-label-4",
622
+ 37,
623
+ langs.get_trads("9"),
624
+ *list(empty.values()),
625
+ "",
626
+ "",
627
+ "",
628
+ "",
629
+ "",
630
+ "",
631
+ ],
632
+ [
633
+ "tab-label-4",
634
+ 38,
635
+ langs.get_trads("9 and 1/2"),
636
+ *list(empty.values()),
637
+ "",
638
+ "",
639
+ "",
640
+ "",
641
+ "",
642
+ "",
643
+ ],
644
+ [
645
+ "tab-label-4",
646
+ 39,
647
+ langs.get_trads("9 and 1/2"),
648
+ *list(empty.values()),
649
+ "",
650
+ "",
651
+ "",
652
+ "",
653
+ "",
654
+ "",
655
+ ],
656
+ [
657
+ "tab-label-4",
658
+ 40,
659
+ langs.get_trads("10"),
660
+ *list(empty.values()),
661
+ "",
662
+ "",
663
+ "",
664
+ "",
665
+ "",
666
+ "",
667
+ ],
187
668
  ]
188
669
  for row in new_rows:
189
- self.df_choice.loc[len(self.df_choice)] = row
670
+ self.df_choice.loc[len(self.df_choice)] = row