tricc-oo 1.4.23__tar.gz → 1.4.24__tar.gz

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 (51) hide show
  1. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/PKG-INFO +1 -1
  2. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/pyproject.toml +1 -1
  3. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/converters/tricc_to_xls_form.py +7 -3
  4. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/models/tricc.py +2 -2
  5. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/serializers/xls_form.py +2 -0
  6. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/strategies/output/xls_form.py +8 -3
  7. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/visitors/tricc.py +31 -32
  8. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo.egg-info/PKG-INFO +1 -1
  9. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/README.md +0 -0
  10. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/setup.cfg +0 -0
  11. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tests/build.py +0 -0
  12. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tests/test_cql.py +0 -0
  13. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tests/to_ocl.py +0 -0
  14. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/__init__.py +0 -0
  15. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/converters/__init__.py +0 -0
  16. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/converters/codesystem_to_ocl.py +0 -0
  17. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/converters/cql/cqlLexer.py +0 -0
  18. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/converters/cql/cqlListener.py +0 -0
  19. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/converters/cql/cqlParser.py +0 -0
  20. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/converters/cql/cqlVisitor.py +0 -0
  21. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/converters/cql_to_operation.py +0 -0
  22. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/converters/datadictionnary.py +0 -0
  23. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/converters/drawio_type_map.py +0 -0
  24. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/converters/utils.py +0 -0
  25. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/converters/xml_to_tricc.py +0 -0
  26. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/models/__init__.py +0 -0
  27. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/models/base.py +0 -0
  28. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/models/calculate.py +0 -0
  29. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/models/lang.py +0 -0
  30. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/models/ocl.py +0 -0
  31. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/models/ordered_set.py +0 -0
  32. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/parsers/__init__.py +0 -0
  33. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/parsers/xml.py +0 -0
  34. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/serializers/__init__.py +0 -0
  35. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/serializers/planuml.py +0 -0
  36. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/strategies/__init__.py +0 -0
  37. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/strategies/input/__init__.py +0 -0
  38. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/strategies/input/base_input_strategy.py +0 -0
  39. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/strategies/input/drawio.py +0 -0
  40. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/strategies/output/base_output_strategy.py +0 -0
  41. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/strategies/output/spice.py +0 -0
  42. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/strategies/output/xlsform_cdss.py +0 -0
  43. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/strategies/output/xlsform_cht.py +0 -0
  44. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/strategies/output/xlsform_cht_hf.py +0 -0
  45. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/visitors/__init__.py +0 -0
  46. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/visitors/utils.py +0 -0
  47. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo/visitors/xform_pd.py +0 -0
  48. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo.egg-info/SOURCES.txt +0 -0
  49. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo.egg-info/dependency_links.txt +0 -0
  50. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo.egg-info/requires.txt +0 -0
  51. {tricc_oo-1.4.23 → tricc_oo-1.4.24}/tricc_oo.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tricc-oo
3
- Version: 1.4.23
3
+ Version: 1.4.24
4
4
  Summary: Python library that converts CDSS L2 in L3
5
5
  Project-URL: Homepage, https://github.com/SwissTPH/tricc
6
6
  Project-URL: Issues, https://github.com/SwissTPH/tricc/issues
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "tricc-oo"
7
- version = "1.4.23"
7
+ version = "1.4.24"
8
8
  description = "Python library that converts CDSS L2 in L3"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
@@ -35,10 +35,14 @@ def get_export_name(node, replace_dots=True):
35
35
  node.gen_name()
36
36
  if isinstance(node, TriccNodeSelectOption):
37
37
  node.export_name = node.name
38
- elif node.last == False:
38
+ elif node.last != True:
39
39
  node.export_name = clean_name(node.name + VERSION_SEPARATOR + str(node.version), replace_dots=replace_dots)
40
- elif node.activity.instance>1:
41
- node.export_name = clean_name(node.name + INSTANCE_SEPARATOR + str(node.activity.instance), replace_dots=replace_dots)
40
+ # elif node.activity.instance>1:
41
+ # if node.version:
42
+ # node.export_name = clean_name(node.name + VERSION_SEPARATOR + str(node.version), replace_dots=replace_dots)
43
+ # else:
44
+ # node.export_name = clean_name(node.name + INSTANCE_SEPARATOR + str(node.activity.instance), replace_dots=replace_dots)
45
+
42
46
  elif isinstance(node, TriccNodeInput):
43
47
  node.export_name = clean_name('load.' +node.name, replace_dots=replace_dots)
44
48
  else:
@@ -299,7 +299,7 @@ class TriccNodeSelectOption(TriccNodeDisplayModel):
299
299
  select: TriccNodeInputModel
300
300
  list_name: str
301
301
  def get_datatype(self):
302
- if isnumeric(self.name):
302
+ if self.name.isnumeric():
303
303
  return 'number'
304
304
  else:
305
305
  return 'string'
@@ -323,7 +323,7 @@ class TriccNodeSelect(TriccNodeInputModel):
323
323
  list_name: str
324
324
  def get_datatype(self):
325
325
  rtype = set()
326
- for k,o in options.items():
326
+ for k,o in self.options.items():
327
327
  rtype.add(o.get_datatype())
328
328
  if len(rtype)>1:
329
329
  return 'mixed'
@@ -21,6 +21,8 @@ from tricc_oo.visitors.tricc import (
21
21
  get_applicability_expression,
22
22
  get_prev_instance_skip_expression,
23
23
  get_process_skip_expression,
24
+ get_next_version,
25
+ set_last_version_false,
24
26
  )
25
27
 
26
28
  logger = logging.getLogger("default")
@@ -26,7 +26,8 @@ from tricc_oo.visitors.tricc import (
26
26
  process_reference,
27
27
  get_node_expressions,
28
28
  TRICC_TRUE_VALUE,
29
- TRICC_FALSE_VALUE
29
+ TRICC_FALSE_VALUE,
30
+ set_last_version_false
30
31
  )
31
32
  from tricc_oo.serializers.xls_form import (
32
33
  CHOICE_MAP,
@@ -607,14 +608,18 @@ class XLSFormStrategy(BaseOutPutStrategy):
607
608
  # function update the calcualte in the XLSFORM format
608
609
  # @param left part
609
610
  # @param right part
610
- def generate_xls_form_calculate(self, node, processed_nodes, stashed_nodes, **kwargs):
611
- if is_ready_to_process(node, processed_nodes):
611
+ def generate_xls_form_calculate(self, node, processed_nodes, stashed_nodes, calculates, **kwargs):
612
+ if is_ready_to_process(node, processed_nodes, strict=False) and process_reference(node, processed_nodes, calculates, replace_reference=False, codesystems= kwargs.get('codesystems', None)):
612
613
  if node not in processed_nodes:
613
614
  if kwargs.get('warn', True):
614
615
  logger.debug("generation of calculate for node {}".format(node.get_name()))
615
616
  if hasattr(node, 'expression') and (node.expression is None) and issubclass(node.__class__,TriccNodeCalculateBase):
616
617
  node.expression = get_node_expressions(node, processed_nodes, process=kwargs.get('process', 'main '))
617
618
  # continue walk
619
+ if issubclass(node.__class__, (TriccNodeDisplayModel, TriccNodeDisplayCalculateBase)):
620
+ last_version = set_last_version_false(node, processed_nodes)
621
+ if not last_version:
622
+ node.last = True
618
623
  return True
619
624
  return False
620
625
 
@@ -95,11 +95,11 @@ def get_node_expressions(node, processed_nodes, process=None):
95
95
 
96
96
  def set_last_version_false(node, processed_nodes):
97
97
  node_name = node.name if not isinstance(node, TriccNodeEnd) else node.get_reference()
98
- last_version = get_last_version(node_name, processed_nodes) if issubclass(node.__class__, (TriccNodeDisplayModel, TriccNodeDisplayCalculateBase, TriccNodeEnd)) and not isinstance(node, TriccNodeSelectOption) else None
99
- #last_version = processed_nodes.find_prev(node, lambda item: hasattr(item, 'name') and item.name == node.name)
98
+ #last_version = get_last_version(node_name, processed_nodes) if issubclass(node.__class__, (TriccNodeDisplayModel, TriccNodeDisplayCalculateBase, TriccNodeEnd)) and not isinstance(node, TriccNodeSelectOption) else None
99
+ last_version = processed_nodes.find_prev(node, lambda item: hasattr(item, 'name') and item.name == node.name and issubclass(node.__class__, (TriccNodeDisplayModel, TriccNodeDisplayCalculateBase, TriccNodeEnd)) and not isinstance(node, TriccNodeSelectOption))
100
100
  if last_version and getattr(node, 'process', '') != 'pause':
101
101
  # 0-100 for manually specified instance. 100-200 for auto instance
102
- node.version = last_version.version + 1
102
+ node.version = get_next_version(node.name, processed_nodes, last_version.version + 1)
103
103
  last_version.last = False
104
104
  node.path_len = max(node.path_len, last_version.path_len + 1)
105
105
  return last_version
@@ -116,23 +116,7 @@ def get_version_inheritance(node, last_version, processed_nodes):
116
116
  set_prev_next_node(last_version, node)
117
117
  else:
118
118
  expression = node.expression or node.expression_reference or getattr(node, 'relevance', None)
119
- datatype = expression.get_datatype()
120
- if datatype == 'boolean':
121
- expression_reference = TriccOperation(
122
- TriccOperator.OR,
123
- [TriccOperation(TriccOperator.ISTRUE, [last_version]), expression]
124
- )
125
-
126
- elif datatype == 'number':
127
- expression = TriccOperation(
128
- TriccOperator.PLUS,
129
- [last_version, expression]
130
- )
131
- else:
132
- expression = TriccOperation(
133
- TriccOperator.COALESCE,
134
- [last_version, expression]
135
- )
119
+ expression = merge_expression(expression, last_version)
136
120
  if node.expression:
137
121
  node.expression = expression
138
122
  elif node.expression_reference:
@@ -141,24 +125,20 @@ def get_version_inheritance(node, last_version, processed_nodes):
141
125
  node.relevance = expression
142
126
  else:
143
127
  node.last = False
144
-
145
-
146
128
  calc = TriccNodeCalculate(
147
129
  id=generate_id(f"save{node.id}"),
148
130
  name=node.name,
149
131
  path_len=node.path_len+1,
150
- version=get_next_version(node.name, processed_nodes, node.version+2),
151
- expression=TriccOperation(
152
- TriccOperator.COALESCE,
153
- [node, last_version, TriccStatic("''")]
154
- ),
132
+ #version=get_next_version(node.name, processed_nodes, node.version+2),
133
+ expression= merge_expression(node, last_version),
134
+ label= f"merge{node.id}",
155
135
  last=True,
156
136
  activity=node.activity,
157
137
  group=node.group
158
138
  )
159
139
  node.activity.nodes[calc.id]=calc
160
140
  node.activity.calculates.append(calc)
161
- set_last_version_false(calc, processed_nodes)
141
+ #set_last_version_false(calc, processed_nodes)
162
142
  processed_nodes.add(calc)
163
143
  if issubclass(node.__class__, TriccNodeInputModel):
164
144
  node.expression = TriccOperation(
@@ -168,6 +148,26 @@ def get_version_inheritance(node, last_version, processed_nodes):
168
148
  last_version
169
149
  ]
170
150
  )
151
+
152
+ def merge_expression(expression, last_version):
153
+ datatype = expression.get_datatype()
154
+ if datatype == 'boolean':
155
+ expression = TriccOperation(
156
+ TriccOperator.OR,
157
+ [TriccOperation(TriccOperator.ISTRUE, [last_version]), expression]
158
+ )
159
+
160
+ elif datatype == 'number':
161
+ expression = TriccOperation(
162
+ TriccOperator.PLUS,
163
+ [last_version, expression]
164
+ )
165
+ else:
166
+ expression = TriccOperation(
167
+ TriccOperator.COALESCE,
168
+ [last_version, expression]
169
+ )
170
+ return expression
171
171
 
172
172
  def process_calculate(node,processed_nodes, stashed_nodes, calculates, used_calculates,
173
173
  warn = False, process=None, **kwargs ):
@@ -479,12 +479,11 @@ def generate_calculates(node,calculates, used_calculates,processed_nodes):
479
479
  calc_node.label = "save select: " +node.get_name()
480
480
  elif node.name != calculate_name:
481
481
  calc_id = generate_id(f"autosave{node.id}")
482
-
483
482
  calc_node = TriccNodeCalculate(
484
483
  name=calculate_name,
485
484
  id = calc_id,
486
485
  group = node.group,
487
- version=get_next_version(calculate_name, processed_nodes, node.version+2),
486
+ #version=get_next_version(calculate_name, processed_nodes, node.version+2),
488
487
  activity = node.activity,
489
488
  label = "save: " +node.get_name(),
490
489
  path_len=node.path_len+ 1,
@@ -965,8 +964,8 @@ def walkthrough_tricc_option(node, callback, processed_nodes, stashed_nodes, pat
965
964
  warn = warn,
966
965
  node_path = node_path.copy(), **kwargs)
967
966
 
968
- def get_next_version(name, processed_nodes, version=0,):
969
- return max(version, 100,*[(getattr(n,'version',0) or getattr(n,'instance',0) or 0) for n in get_versions(name, processed_nodes)])
967
+ def get_next_version(name, processed_nodes, version=0, min=100):
968
+ return max(version, min,*[(getattr(n,'version',0) or getattr(n,'instance',0) or 0) for n in get_versions(name, processed_nodes)])
970
969
 
971
970
 
972
971
  def get_data_for_log(node):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tricc-oo
3
- Version: 1.4.23
3
+ Version: 1.4.24
4
4
  Summary: Python library that converts CDSS L2 in L3
5
5
  Project-URL: Homepage, https://github.com/SwissTPH/tricc
6
6
  Project-URL: Issues, https://github.com/SwissTPH/tricc/issues
File without changes
File without changes
File without changes
File without changes
File without changes