tricc-oo 1.5.13__py3-none-any.whl → 1.6.8__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 (47) hide show
  1. tests/build.py +20 -28
  2. tests/test_build.py +260 -0
  3. tests/test_cql.py +48 -109
  4. tests/to_ocl.py +15 -17
  5. tricc_oo/__init__.py +0 -6
  6. tricc_oo/converters/codesystem_to_ocl.py +51 -40
  7. tricc_oo/converters/cql/cqlLexer.py +1 -0
  8. tricc_oo/converters/cql/cqlListener.py +1 -0
  9. tricc_oo/converters/cql/cqlParser.py +1 -0
  10. tricc_oo/converters/cql/cqlVisitor.py +1 -0
  11. tricc_oo/converters/cql_to_operation.py +129 -123
  12. tricc_oo/converters/datadictionnary.py +45 -54
  13. tricc_oo/converters/drawio_type_map.py +146 -65
  14. tricc_oo/converters/tricc_to_xls_form.py +58 -28
  15. tricc_oo/converters/utils.py +4 -4
  16. tricc_oo/converters/xml_to_tricc.py +296 -235
  17. tricc_oo/models/__init__.py +2 -1
  18. tricc_oo/models/base.py +333 -305
  19. tricc_oo/models/calculate.py +66 -51
  20. tricc_oo/models/lang.py +26 -27
  21. tricc_oo/models/ocl.py +146 -161
  22. tricc_oo/models/ordered_set.py +15 -19
  23. tricc_oo/models/tricc.py +149 -89
  24. tricc_oo/parsers/xml.py +15 -30
  25. tricc_oo/serializers/planuml.py +4 -6
  26. tricc_oo/serializers/xls_form.py +110 -153
  27. tricc_oo/strategies/input/base_input_strategy.py +28 -32
  28. tricc_oo/strategies/input/drawio.py +59 -71
  29. tricc_oo/strategies/output/base_output_strategy.py +151 -65
  30. tricc_oo/strategies/output/dhis2_form.py +908 -0
  31. tricc_oo/strategies/output/fhir_form.py +377 -0
  32. tricc_oo/strategies/output/html_form.py +224 -0
  33. tricc_oo/strategies/output/openmrs_form.py +694 -0
  34. tricc_oo/strategies/output/spice.py +106 -127
  35. tricc_oo/strategies/output/xls_form.py +322 -244
  36. tricc_oo/strategies/output/xlsform_cdss.py +627 -142
  37. tricc_oo/strategies/output/xlsform_cht.py +252 -125
  38. tricc_oo/strategies/output/xlsform_cht_hf.py +13 -24
  39. tricc_oo/visitors/tricc.py +1424 -1033
  40. tricc_oo/visitors/utils.py +16 -16
  41. tricc_oo/visitors/xform_pd.py +91 -89
  42. {tricc_oo-1.5.13.dist-info → tricc_oo-1.6.8.dist-info}/METADATA +128 -84
  43. tricc_oo-1.6.8.dist-info/RECORD +52 -0
  44. tricc_oo-1.6.8.dist-info/licenses/LICENSE +373 -0
  45. {tricc_oo-1.5.13.dist-info → tricc_oo-1.6.8.dist-info}/top_level.txt +0 -0
  46. tricc_oo-1.5.13.dist-info/RECORD +0 -46
  47. {tricc_oo-1.5.13.dist-info → tricc_oo-1.6.8.dist-info}/WHEEL +0 -0
@@ -1,185 +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'
73
- '',#'repeat_count'
74
- '',#'image'
75
- ''
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'
106
+ "",
76
107
  ]
77
108
  self.df_survey.loc[len(self.df_survey)] = [
78
- 'select_one wfa',
109
+ "select_one wfa",
79
110
  "wfa",
80
- *list(label.values()) ,
81
- *list(empty.values()) ,#hint
82
- *list(empty.values()) ,#help
83
- '',#default
84
- '',#'appearance', clean_name
85
- '',#'constraint',
86
- *list(empty.values()) ,#'constraint_message'
87
- '0',#'relevance'
88
- '',#'disabled'
89
- '1',#'required'
90
- *list(empty.values()) ,#'required message'
91
- '',#'read only'
92
- '',#'expression'
93
- '',#'repeat_count'
94
- '',#'image'
95
- ''
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'
127
+ "",
96
128
  ]
97
129
  self.df_survey.loc[len(self.df_survey)] = [
98
- 'select_one wfh',
130
+ "select_one wfh",
99
131
  "wfh",
100
- *list(label.values()) ,
101
- *list(empty.values()) ,#hint
102
- *list(empty.values()) ,#help
103
- '',#default
104
- '',#'appearance', clean_name
105
- '',#'constraint',
106
- *list(empty.values()) ,#'constraint_message'
107
- '0',#'relevance'
108
- '',#'disabled'
109
- '1',#'required'
110
- *list(empty.values()) ,#'required message'
111
- '',#'read only'
112
- '',#'expression'
113
- '',#'repeat_count'
114
- '',#'image'
115
- ''
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'
148
+ "",
116
149
  ]
117
-
150
+
118
151
  def add_tab_breaks_choice(self):
119
- label = langs.get_trads('hidden', force_dict =True)
120
- empty = langs.get_trads('', force_dict =True)
152
+ label = langs.get_trads("hidden", force_dict=True)
153
+ empty = langs.get_trads("", force_dict=True)
121
154
  self.df_survey.loc[len(self.df_survey)] = [
122
- 'select_one tab-label-4',
155
+ "select_one tab-label-4",
123
156
  "tab_label_4",
124
- *list(label.values()) ,
125
- *list(empty.values()) ,#hint
126
- *list(empty.values()) ,#help
127
- '',#default
128
- '',#'appearance', clean_name
129
- '',#'constraint',
130
- *list(empty.values()) ,#'constraint_message'
131
- '0',#'relevance'
132
- '',#'disabled'
133
- '1',#'required'
134
- *list(empty.values()) ,#'required message'
135
- '',#'read only'
136
- '',#'expression'
137
- '',#'repeat_count'
138
- '',#'image'
139
- ''
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'
173
+ "",
140
174
  ]
141
175
  new_rows = [
142
- ['tab-label-4', 0, langs.get_trads('--'),*list(empty.values()),'','','','','',''],
143
- ['tab-label-4', 1, langs.get_trads('--'),*list(empty.values()),'','','','','',''],
144
- ['tab-label-4', 2, langs.get_trads('1/2'),*list(empty.values()),'','','','','',''],
145
- ['tab-label-4', 3, langs.get_trads('1/2'),*list(empty.values()),'','','','','',''],
146
- ['tab-label-4', 4, langs.get_trads('1'),*list(empty.values()),'','','','','',''],
147
- ['tab-label-4', 5, langs.get_trads('1'),*list(empty.values()),'','','','','',''],
148
- ['tab-label-4', 6, langs.get_trads('1 and 1/2'),*list(empty.values()),'','','','','',''],
149
- ['tab-label-4', 7, langs.get_trads('1 and 1/2'),*list(empty.values()),'','','','','',''],
150
- ['tab-label-4', 8, langs.get_trads('2'),*list(empty.values()),'','','','','',''],
151
- ['tab-label-4', 9, langs.get_trads('2'),*list(empty.values()),'','','','','',''],
152
- ['tab-label-4', 10, langs.get_trads('2 and 1/2'),*list(empty.values()),'','','','','',''],
153
- ['tab-label-4', 11, langs.get_trads('2 and 1/2'),*list(empty.values()),'','','','','',''],
154
- ['tab-label-4', 12, langs.get_trads('3'),*list(empty.values()),'','','','','',''],
155
- ['tab-label-4', 13, langs.get_trads('3'),*list(empty.values()),'','','','','',''],
156
- ['tab-label-4', 14, langs.get_trads('3 and 1/2'),*list(empty.values()),'','','','','',''],
157
- ['tab-label-4', 15, langs.get_trads('3 and 1/2'),*list(empty.values()),'','','','','',''],
158
- ['tab-label-4', 16, langs.get_trads('4'),*list(empty.values()),'','','','','',''],
159
- ['tab-label-4', 17, langs.get_trads('4'),*list(empty.values()),'','','','','',''],
160
- ['tab-label-4', 18, langs.get_trads('4 and 1/2'),*list(empty.values()),'','','','','',''],
161
- ['tab-label-4', 19, langs.get_trads('4 and 1/2'),*list(empty.values()),'','','','','',''],
162
- ['tab-label-4', 20, langs.get_trads('5'),*list(empty.values()),'','','','','',''],
163
- ['tab-label-4', 21, langs.get_trads('5'),*list(empty.values()),'','','','','',''],
164
- ['tab-label-4', 22, langs.get_trads('5 and 1/2'),*list(empty.values()),'','','','','',''],
165
- ['tab-label-4', 23, langs.get_trads('5 and 1/2'),*list(empty.values()),'','','','','',''],
166
- ['tab-label-4', 24, langs.get_trads('6'),*list(empty.values()),'','','','','',''],
167
- ['tab-label-4', 25, langs.get_trads('6'),*list(empty.values()),'','','','','',''],
168
- ['tab-label-4', 26, langs.get_trads('6 and 1/2'),*list(empty.values()),'','','','','',''],
169
- ['tab-label-4', 27, langs.get_trads('6 and 1/2'),*list(empty.values()),'','','','','',''],
170
- ['tab-label-4', 28, langs.get_trads('7'),*list(empty.values()),'','','','','',''],
171
- ['tab-label-4', 29, langs.get_trads('7'),*list(empty.values()),'','','','','',''],
172
- ['tab-label-4', 30, langs.get_trads('7 and 1/2'),*list(empty.values()),'','','','','',''],
173
- ['tab-label-4', 31, langs.get_trads('7 and 1/2'),*list(empty.values()),'','','','','',''],
174
- ['tab-label-4', 32, langs.get_trads('8'),*list(empty.values()),'','','','','',''],
175
- ['tab-label-4', 33, langs.get_trads('8'),*list(empty.values()),'','','','','',''],
176
- ['tab-label-4', 34, langs.get_trads('8 and 1/2'),*list(empty.values()),'','','','','',''],
177
- ['tab-label-4', 35, langs.get_trads('8 and 1/2'),*list(empty.values()),'','','','','',''],
178
- ['tab-label-4', 36, langs.get_trads('9'),*list(empty.values()),'','','','','',''],
179
- ['tab-label-4', 37, langs.get_trads('9'),*list(empty.values()),'','','','','',''],
180
- ['tab-label-4', 38, langs.get_trads('9 and 1/2'),*list(empty.values()),'','','','','',''],
181
- ['tab-label-4', 39, langs.get_trads('9 and 1/2'),*list(empty.values()),'','','','','',''],
182
- ['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
+ ],
183
668
  ]
184
669
  for row in new_rows:
185
- self.df_choice.loc[len(self.df_choice)] = row
670
+ self.df_choice.loc[len(self.df_choice)] = row