tricc-oo 1.5.8__py3-none-any.whl → 1.5.10__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.
@@ -67,22 +67,22 @@ def get_last_version(name, processed_nodes, _list=None):
67
67
  # node is the node to calculate
68
68
  # processed_nodes are the list of processed nodes
69
69
  def get_node_expressions(node, processed_nodes, process=None):
70
- is_calculate = issubclass(node.__class__, TriccNodeCalculateBase) and not issubclass(node.__class__, (TriccNodeDisplayBridge,TriccNodeBridge))
70
+ get_overall_exp = issubclass(node.__class__, TriccNodeCalculateBase) and not issubclass(node.__class__, (TriccNodeDisplayBridge,TriccNodeBridge))
71
71
  expression = None
72
72
  # in case of recursive call processed_nodes will be None
73
73
  if processed_nodes is None or is_ready_to_process(node, processed_nodes=processed_nodes):
74
- expression = get_node_expression(node, processed_nodes=processed_nodes, is_calculate=is_calculate, process=process)
74
+ expression = get_node_expression(node, processed_nodes=processed_nodes, get_overall_exp=get_overall_exp, process=process)
75
75
 
76
- if is_calculate:
77
- if expression and (not isinstance(expression, str) or expression != '') and expression is not TriccStatic(True) :
78
- num_expression = TriccOperation(
79
- TriccOperator.CAST_NUMBER,
80
- [expression]
81
- )
82
- elif expression is TriccStatic(True) or (not expression and is_calculate):
83
- expression = TriccStatic(True)
84
- else:
85
- expression = ''
76
+ # if get_overall_exp:
77
+ # if expression and (not isinstance(expression, str) or expression != '') and expression is not TriccStatic(True) :
78
+ # num_expression = TriccOperation(
79
+ # TriccOperator.CAST_NUMBER,
80
+ # [expression]
81
+ # )
82
+ # elif expression is TriccStatic(True) or (not expression and get_overall_exp):
83
+ # expression = TriccStatic(True)
84
+ # else:
85
+ # expression = None
86
86
  if (
87
87
  issubclass(node.__class__, TriccNodeCalculateBase)
88
88
  and not isinstance(expression, (TriccStatic, TriccReference, TriccOperation))
@@ -99,7 +99,7 @@ def set_last_version_false(node, processed_nodes):
99
99
  last_version = processed_nodes.find_prev(node, version_filter(node_name))
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 = get_next_version(node.name, processed_nodes, last_version.version + 1, 0)
102
+ node.version = get_next_version(node.name, processed_nodes, last_version.version, 0)
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
@@ -194,7 +194,7 @@ def process_calculate(node,processed_nodes, stashed_nodes, calculates, used_calc
194
194
  last_version = set_last_version_false(node, processed_nodes)
195
195
  if last_version:
196
196
  last_version = get_version_inheritance(node, last_version, processed_nodes)
197
- generate_calculates(node,calculates, used_calculates,processed_nodes=processed_nodes)
197
+ generate_calculates(node,calculates, used_calculates,processed_nodes=processed_nodes, process=process)
198
198
 
199
199
 
200
200
 
@@ -254,8 +254,7 @@ def process_calculate(node,processed_nodes, stashed_nodes, calculates, used_calc
254
254
 
255
255
  elif hasattr(node, 'relevance'):
256
256
  node.relevance = version_relevance
257
-
258
- #update_calc_version(calculates,node_name)
257
+
259
258
  #if hasattr(node, 'next_nodes'):
260
259
  #node.next_nodes=reorder_node_list(node.next_nodes, node.group)
261
260
  process_reference(
@@ -283,16 +282,7 @@ def process_calculate(node,processed_nodes, stashed_nodes, calculates, used_calc
283
282
 
284
283
  return False
285
284
 
286
- def update_calc_version(calculates,name):
287
- if name in calculates and len(calculates[name])>1:
288
- ordered_list = sorted(list(calculates[name].values()), key=lambda x:x.path_len)
289
- i = 1
290
- len_max=len(calculates[name])
291
- for elm in ordered_list:
292
- elm.version=i
293
- elm.last= (i == len_max)
294
- i+=1
295
-
285
+
296
286
 
297
287
  def get_max_named_version(calculates,name):
298
288
  max = 0
@@ -417,7 +407,7 @@ def inject_node_before(before, node, activity):
417
407
 
418
408
 
419
409
 
420
- def generate_calculates(node,calculates, used_calculates,processed_nodes):
410
+ def generate_calculates(node,calculates, used_calculates,processed_nodes, process):
421
411
  list_calc = []
422
412
  count_node = None
423
413
  ## add select calcualte
@@ -473,7 +463,10 @@ def generate_calculates(node,calculates, used_calculates,processed_nodes):
473
463
  calculate_name=node.save
474
464
  if node.name != calculate_name:
475
465
  calc_id = generate_id(f"autosave{node.id}")
476
-
466
+ if issubclass(node.__class__, TriccNodeSelect) or isinstance(node, TriccNodeSelectNotAvailable):
467
+ expression = get_count_terms_details( node, processed_nodes, True, False, process)
468
+ else:
469
+ expression = get_node_expression(node,processed_nodes,True,True)
477
470
  calc_node = TriccNodeCalculate(
478
471
  name=calculate_name,
479
472
  id = calc_id,
@@ -483,7 +476,7 @@ def generate_calculates(node,calculates, used_calculates,processed_nodes):
483
476
  label = "save: " +node.get_name(),
484
477
  path_len=node.path_len+ 1,
485
478
  last=True,
486
- expression=get_node_expression(node,processed_nodes,True,True)
479
+ expression=expression
487
480
  )
488
481
  node.activity.calculates.append(calc_node)
489
482
  last_version = set_last_version_false(calc_node, processed_nodes)
@@ -816,8 +809,6 @@ def walktrhough_tricc_node_processed_stached(node, callback, processed_nodes, st
816
809
  # put the stached node from that group first
817
810
  # if has next, walkthrough them (support options)
818
811
  # if len(stashed_nodes)>1:
819
- if not recursive:
820
- reorder_node_list(stashed_nodes, node.group, processed_nodes)
821
812
  if isinstance(node, (TriccNodeActivityStart, TriccNodeMainStart)):
822
813
  if recursive:
823
814
  for gp in node.activity.groups.values():
@@ -901,6 +892,9 @@ def walktrhough_tricc_node_processed_stached(node, callback, processed_nodes, st
901
892
  for nn in node.next_nodes:
902
893
  if nn not in stashed_nodes:
903
894
  stashed_nodes.insert_at_top(nn)
895
+ if not recursive:
896
+ reorder_node_list(stashed_nodes, node.group, processed_nodes)
897
+
904
898
 
905
899
 
906
900
  else:
@@ -1410,37 +1404,52 @@ def replace_next_node(prev_node,next_node,old_node):
1410
1404
  for n_p_node in list_nodes:
1411
1405
  if n_p_node == old_node :
1412
1406
  set_prev_next_node(prev_node, next_node, old_node)
1413
-
1414
- def reorder_node_list(list_node, group, processed_nodes):
1415
- active_activities = set(n.activity for n in processed_nodes)
1416
-
1417
- # Define a lambda to assign numeric priorities
1418
- def filter_logic(l_node):
1419
- priority = int(getattr(l_node, "priority", None) or 400) / 1000
1420
- if (
1421
- isinstance(l_node, TriccNodeWait)
1422
- and any(isinstance(rn, TriccNodeActivity) and any(sn.activity == rn for sn in list_node) for rn in l_node.reference)
1423
- ):
1424
- pass
1425
- elif group is not None and hasattr(l_node, 'group') and l_node.group and l_node.group.id == group.id:
1426
- priority += 7 # Highest priority: Same group
1427
- elif issubclass(l_node.__class__, TriccRhombusMixIn) :
1428
- priority += 1
1429
- elif hasattr(group, 'group') and group.group and l_node.group and l_node.group.id == group.group.id:
1430
- priority += 6 # Second priority: Parent group
1431
- elif not isinstance(l_node.activity.root, TriccNodeActivityStart) and l_node.activity in active_activities:
1432
- priority += 5 # Third priority: Active activities
1433
- elif not isinstance(l_node.activity.root, TriccNodeActivityStart):
1434
- priority += 4 # Third priority: Active activities
1435
- elif l_node.activity in active_activities:
1436
- priority += 3 # Third priority: Active activities
1407
+
1408
+
1409
+ # Priority constants
1410
+ SAME_GROUP_PRIORITY = 7000
1411
+ PARENT_GROUP_PRIORITY = 6000
1412
+ ACTIVE_ACTIVITY_PRIORITY = 5000
1413
+ NON_START_ACTIVITY_PRIORITY = 4000
1414
+ ACTIVE_ACTIVITY_LOWER_PRIORITY = 3000
1415
+ RHOMBUS_PRIORITY = 1000
1416
+ DEFAULT_PRIORITY = 2000
1417
+
1418
+ def reorder_node_list(node_list, group, processed_nodes):
1419
+ # Cache active activities for O(1) lookup
1420
+ active_activities = {n.activity for n in processed_nodes}
1421
+
1422
+ def get_priority(node):
1423
+ # Cache attributes to avoid repeated getattr calls
1424
+ priority = int(getattr(node, "priority", 0) or 0)
1425
+ node_group = getattr(node, "group", None)
1426
+ activity = getattr(node, "activity", None)
1427
+
1428
+ # Check for same group
1429
+ if group is not None and node_group and node_group.id == group.id:
1430
+ priority += SAME_GROUP_PRIORITY
1431
+ # Check for parent group
1432
+ elif hasattr(group, "group") and group.group and node_group and node_group.id == group.group.id:
1433
+ priority += PARENT_GROUP_PRIORITY
1434
+ # Check for active activities (not start nodes)
1435
+ elif activity and not isinstance(activity.root, TriccNodeActivityStart) and activity in active_activities:
1436
+ priority += ACTIVE_ACTIVITY_PRIORITY
1437
+ # Check for non-start activities
1438
+ elif activity and not isinstance(activity.root, TriccNodeActivityStart):
1439
+ priority += NON_START_ACTIVITY_PRIORITY
1440
+ # Check for active activities (lower priority)
1441
+ elif activity and activity in active_activities:
1442
+ priority += ACTIVE_ACTIVITY_LOWER_PRIORITY
1443
+ # Check for rhombus nodes
1444
+ elif issubclass(node.__class__, TriccRhombusMixIn):
1445
+ priority += RHOMBUS_PRIORITY
1437
1446
  else:
1438
- priority += 2 # Lowest priority: Others
1447
+ priority += DEFAULT_PRIORITY
1448
+
1439
1449
  return priority
1440
-
1441
- # Sort list_node in place using filter_logic as the key
1442
- list_node.sort(key=filter_logic, reverse=True)
1443
- return None
1450
+
1451
+ # Sort in place, highest priority first
1452
+ node_list.sort(key=get_priority, reverse=True)
1444
1453
 
1445
1454
  def loop_info(loop, **kwargs):
1446
1455
  logger.critical("dependency details")
@@ -1478,17 +1487,17 @@ def get_extended_next_nodes(node):
1478
1487
 
1479
1488
 
1480
1489
  # calculate or retrieve a node expression
1481
- def get_node_expression( in_node, processed_nodes, is_calculate=False, is_prev=False, negate=False, process=None):
1490
+ def get_node_expression( in_node, processed_nodes, get_overall_exp=False, is_prev=False, negate=False, process=None):
1482
1491
  # in case of calculate we only use the select multiple if none is not selected
1483
1492
  expression = None
1484
1493
  negate_expression = None
1485
1494
  node = in_node
1486
1495
  if isinstance(node, (TriccNodeActivityStart,TriccNodeMainStart)):
1487
- if is_prev and is_calculate:
1496
+ if is_prev and get_overall_exp:
1488
1497
  expression = get_node_expression(
1489
1498
  node.activity,
1490
1499
  processed_nodes=processed_nodes,
1491
- is_calculate=is_calculate,
1500
+ get_overall_exp=True,
1492
1501
  is_prev=is_prev,
1493
1502
  negate=negate,
1494
1503
  process=process
@@ -1504,7 +1513,7 @@ def get_node_expression( in_node, processed_nodes, is_calculate=False, is_prev=F
1504
1513
  return get_node_expression(
1505
1514
  node.path,
1506
1515
  processed_nodes=processed_nodes,
1507
- is_calculate=is_calculate,
1516
+ get_overall_exp=get_overall_exp,
1508
1517
  is_prev=True,
1509
1518
  process=process
1510
1519
  )
@@ -1529,7 +1538,7 @@ def get_node_expression( in_node, processed_nodes, is_calculate=False, is_prev=F
1529
1538
  prev_exp = get_node_expression(
1530
1539
  node.path,
1531
1540
  processed_nodes=processed_nodes,
1532
- is_calculate=False,
1541
+ get_overall_exp=get_overall_exp,
1533
1542
  is_prev=True,
1534
1543
  process=process)
1535
1544
  if prev_exp and expression:
@@ -1547,8 +1556,6 @@ def get_node_expression( in_node, processed_nodes, is_calculate=False, is_prev=F
1547
1556
  logger.critical(f"Rhombus without expression {node.get_name()}")
1548
1557
  elif is_prev and issubclass(node.__class__, TriccNodeDisplayCalculateBase):
1549
1558
  expression = TriccOperation(TriccOperator.ISTRUE, [node])
1550
- elif is_prev and is_calculate and (issubclass(node.__class__, TriccNodeSelect) or isinstance(node, TriccNodeSelectNotAvailable)):
1551
- expression = get_count_terms_details( node, processed_nodes, is_calculate, negate, process)
1552
1559
  elif hasattr(node, 'expression_reference') and isinstance(node.expression_reference, TriccOperation):
1553
1560
  # if issubclass(node.__class__, TriccNodeDisplayCalculateBase):
1554
1561
  # expression = TriccOperation(
@@ -1572,17 +1579,17 @@ def get_node_expression( in_node, processed_nodes, is_calculate=False, is_prev=F
1572
1579
  )
1573
1580
  elif issubclass(node.__class__, TriccNodeCalculateBase):
1574
1581
  if negate:
1575
- negate_expression = get_calculation_terms(node, processed_nodes=processed_nodes, is_calculate=is_calculate, negate=True, process=process)
1582
+ negate_expression = get_calculation_terms(node, processed_nodes=processed_nodes, get_overall_exp=get_overall_exp, negate=True, process=process)
1576
1583
  else:
1577
- expression = get_calculation_terms(node, processed_nodes=processed_nodes, is_calculate=is_calculate, process=process)
1584
+ expression = get_calculation_terms(node, processed_nodes=processed_nodes, get_overall_exp=get_overall_exp, process=process)
1578
1585
 
1579
1586
  elif (not is_prev or not ONE_QUESTION_AT_A_TIME) and hasattr(node, 'relevance') and isinstance(node.relevance, (TriccOperation, TriccStatic)):
1580
1587
  expression = node.relevance
1581
- elif ONE_QUESTION_AT_A_TIME and is_prev and not is_calculate and hasattr(node, 'required') and node.required:
1588
+ elif ONE_QUESTION_AT_A_TIME and is_prev and not get_overall_exp and hasattr(node, 'required') and node.required:
1582
1589
  expression = get_required_node_expression(node)
1583
1590
 
1584
1591
  if expression is None:
1585
- expression = get_prev_node_expression(node, processed_nodes=processed_nodes, is_calculate=is_calculate, process=process)
1592
+ expression = get_prev_node_expression(node, processed_nodes=processed_nodes, get_overall_exp=get_overall_exp, process=process)
1586
1593
  # in_node not in processed_nodes is need for calculates that can but run after the end of the activity
1587
1594
  #if isinstance(node, TriccNodeActivitiy) and not prev:
1588
1595
  # expression = get_applicability_expression(node, processed_nodes, process, expression)
@@ -1625,7 +1632,7 @@ def get_prev_instance_skip_expression(node, processed_nodes, process, expression
1625
1632
  get_node_expression(
1626
1633
  past_instance,
1627
1634
  processed_nodes=processed_nodes,
1628
- is_calculate=False,
1635
+ get_overall_exp=True,
1629
1636
  is_prev=True,
1630
1637
  process=process
1631
1638
  )
@@ -1686,7 +1693,7 @@ def export_proposed_diags(activity, diags=None, **kwargs):
1686
1693
  return diags
1687
1694
 
1688
1695
 
1689
- def get_accept_diagnostic_node(code, display, severity, activity):
1696
+ def get_accept_diagnostic_node(code, display, severity, priority, activity):
1690
1697
  node = TriccNodeAcceptDiagnostic(
1691
1698
  id=generate_id("pre_final." + code),
1692
1699
  name="pre_final." + code,
@@ -1694,24 +1701,28 @@ def get_accept_diagnostic_node(code, display, severity, activity):
1694
1701
  list_name="acc_rej",
1695
1702
  activity=activity,
1696
1703
  group=activity,
1697
- severity=severity
1704
+ severity=severity,
1705
+ priority=priority
1698
1706
  )
1699
1707
  node.options = get_select_accept_reject_options(node, node.activity)
1700
1708
  return node
1701
1709
 
1702
1710
  def get_diagnostic_node(code, display, severity, priority, activity):
1703
- node = TriccNodeAcceptDiagnostic(
1711
+ node = TriccNodeCalculate(
1704
1712
  id=generate_id("final." + code),
1705
1713
  name="final." + code,
1706
1714
  label=display,
1707
- list_name="acc_rej",
1708
1715
  activity=activity,
1709
1716
  group=activity,
1710
- severity=severity,
1711
- priority=priority
1712
-
1717
+ priority=priority,
1718
+ expression_reference=or_join([
1719
+ TriccOperation(TriccOperator.ISTRUE, [TriccReference("pre_final." + code)]),
1720
+ TriccOperation(
1721
+ TriccOperator.SELECTED,
1722
+ [TriccReference('tricc.manual.diag'), TriccStatic(code)]
1723
+ )
1724
+ ])
1713
1725
  )
1714
- node.options = get_select_accept_reject_options(node, node.activity)
1715
1726
  return node
1716
1727
 
1717
1728
  def get_select_accept_reject_options(node, group):
@@ -1752,7 +1763,6 @@ def create_determine_diagnosis_activity(diags):
1752
1763
  start.activity = activity
1753
1764
  start.group = activity
1754
1765
  diags_conf = []
1755
- r_diags_conf = []
1756
1766
  end = TriccNodeActivityEnd(
1757
1767
  id=generate_id("end.determine-diagnosis"),
1758
1768
  name="end.determine-diagnosis",
@@ -1760,10 +1770,23 @@ def create_determine_diagnosis_activity(diags):
1760
1770
  group=activity,
1761
1771
  )
1762
1772
  activity.nodes[end.id]=end
1773
+
1774
+ f = TriccNodeSelectMultiple(
1775
+ name="tricc.manual.diag",
1776
+ label="Add diagnosis",
1777
+ list_name='manual_diag',
1778
+ id=generate_id("tricc.manual.diag"),
1779
+ activity=activity,
1780
+ group=activity,
1781
+ required=TriccStatic(False),
1782
+
1783
+ )
1763
1784
  for proposed in diags:
1764
- d = get_diagnostic_node(proposed.name, proposed.label, proposed.severity, proposed.priority, activity)
1785
+ d = get_accept_diagnostic_node(proposed.name, proposed.label, proposed.severity, proposed.priority, activity)
1786
+ c = get_diagnostic_node(proposed.name, proposed.label, proposed.severity, proposed.priority, activity)
1765
1787
  diags_conf.append(d)
1766
1788
  r = TriccNodeRhombus(
1789
+ path=start,
1767
1790
  id=generate_id(f"proposed-rhombus{proposed.id}"),
1768
1791
  expression_reference=TriccOperation(
1769
1792
  TriccOperator.ISTRUE,
@@ -1771,26 +1794,19 @@ def create_determine_diagnosis_activity(diags):
1771
1794
  ),
1772
1795
  reference=[TriccReference(proposed.name)],
1773
1796
  activity=activity,
1774
- group=activity )
1775
- r_diags_conf.append(r)
1776
- set_prev_next_node(start, r, edge_only=False)
1797
+ priority=proposed.priority,
1798
+ group=activity)
1799
+ activity.calculates.append(r)
1800
+ activity.calculates.append(c)
1777
1801
  set_prev_next_node(r, d, edge_only=False)
1778
- set_prev_next_node(d, end, edge_only=False)
1802
+ set_prev_next_node(d, f, edge_only=False)
1779
1803
  activity.nodes[d.options[0].id] = d.options[0]
1780
1804
  activity.nodes[d.options[1].id] = d.options[1]
1781
1805
  activity.nodes[d.id]=d
1782
1806
  activity.nodes[r.id]=r
1807
+ activity.nodes[c.id]=c
1783
1808
  # fallback
1784
- f = TriccNodeSelectMultiple(
1785
- name="tricc.manual.diag",
1786
- label="Add diagnosis",
1787
- list_name='manual_diag',
1788
- id=generate_id("tricc.manual.diag"),
1789
- activity=activity,
1790
- group=activity,
1791
- required=TriccStatic(False),
1792
-
1793
- )
1809
+
1794
1810
  options = [
1795
1811
  TriccNodeSelectOption(
1796
1812
  id=generate_id(d.name),
@@ -1802,14 +1818,12 @@ def create_determine_diagnosis_activity(diags):
1802
1818
  ) for d in diags
1803
1819
  ]
1804
1820
  f.options=dict(zip(range(0, len(options)), options))
1805
- wait2 = get_activity_wait([activity.root], diags_conf, [f], edge_only=False)
1806
- activity.nodes[wait2.id]=wait2
1807
1821
  activity.nodes[f.id]=f
1808
-
1822
+ set_prev_next_node(f, end, edge_only=False)
1809
1823
 
1810
1824
  return activity
1811
1825
 
1812
- def get_prev_node_expression( node, processed_nodes, is_calculate=False, excluded_name=None, process=None):
1826
+ def get_prev_node_expression( node, processed_nodes, get_overall_exp=False, excluded_name=None, process=None):
1813
1827
  expression = None
1814
1828
  if node is None:
1815
1829
  pass
@@ -1826,18 +1840,18 @@ def get_prev_node_expression( node, processed_nodes, is_calculate=False, exclude
1826
1840
  prev_activities[prev_node.activity.id].append(prev_node)
1827
1841
 
1828
1842
  for act_id in prev_activities:
1843
+ act_expression_inputs = []
1829
1844
  for prev_node in prev_activities[act_id]:
1830
- act_expression_inputs = []
1831
1845
  if excluded_name is None or prev_node != excluded_name or (
1832
1846
  isinstance(excluded_name, str) and hasattr(prev_node, 'name') and prev_node.name != excluded_name): # or isinstance(prev_node, TriccNodeActivityEnd):
1833
1847
  # the rhombus should calculate only reference
1834
1848
  sub = get_node_expression(
1835
1849
  prev_node,
1836
1850
  processed_nodes=processed_nodes,
1837
- is_calculate=is_calculate,
1851
+ get_overall_exp=get_overall_exp,
1838
1852
  is_prev=True,
1839
1853
  process=process)
1840
- if isinstance(node, TriccNodeActivity) or is_calculate:
1854
+ if isinstance(node, TriccNodeActivity) or get_overall_exp:
1841
1855
  add_sub_expression(act_expression_inputs, sub )
1842
1856
  else:
1843
1857
  add_sub_expression(expression_inputs, sub )
@@ -1845,14 +1859,14 @@ def get_prev_node_expression( node, processed_nodes, is_calculate=False, exclude
1845
1859
  if act_expression_inputs:
1846
1860
  act_sub = or_join(act_expression_inputs)
1847
1861
  if act_sub == TriccStatic(True):
1848
- act_sub = get_node_expression(
1849
- prev_node.activity,
1850
- processed_nodes=processed_nodes,
1851
- is_calculate=True,
1852
- is_prev=True,
1853
- negate=False,
1854
- process=process
1855
- )
1862
+ act_sub = get_node_expression(
1863
+ prev_node.activity,
1864
+ processed_nodes=processed_nodes,
1865
+ get_overall_exp=True,
1866
+ is_prev=True,
1867
+ negate=False,
1868
+ process=process
1869
+ )
1856
1870
  add_sub_expression(expression_inputs, act_sub )
1857
1871
  # avoid void is there is not conditions to avoid looping too much itme
1858
1872
  # expression_inputs = clean_or_list(
@@ -1882,17 +1896,17 @@ def get_activity_end_terms( node, processed_nodes, process=None):
1882
1896
  get_node_expression(
1883
1897
  end_node,
1884
1898
  processed_nodes=processed_nodes,
1885
- is_calculate=False,
1899
+ get_overall_exp=False,
1886
1900
  is_prev=True,
1887
1901
  process=process))
1888
1902
 
1889
1903
  return or_join(expression_inputs)
1890
1904
 
1891
- def get_count_terms( node, processed_nodes, is_calculate, negate=False, process=None):
1905
+ def get_count_terms( node, processed_nodes, get_overall_exp, negate=False, process=None):
1892
1906
  terms = []
1893
1907
 
1894
1908
  for prev_node in node.prev_nodes:
1895
- term = get_count_terms_details( prev_node, processed_nodes, is_calculate, negate, process)
1909
+ term = get_count_terms_details( prev_node, processed_nodes, get_overall_exp, negate, process)
1896
1910
  if term:
1897
1911
  terms.append(term)
1898
1912
  if len(terms) == 1:
@@ -1911,7 +1925,7 @@ def get_count_terms( node, processed_nodes, is_calculate, negate=False, process=
1911
1925
  ]
1912
1926
  )
1913
1927
 
1914
- def get_count_terms_details( prev_node, processed_nodes, is_calculate, negate=False, process=None):
1928
+ def get_count_terms_details( prev_node, processed_nodes, get_overall_exp, negate=False, process=None):
1915
1929
  operation_none = TriccOperation(
1916
1930
  TriccOperator.SELECTED,
1917
1931
  [
@@ -1974,7 +1988,7 @@ def get_count_terms_details( prev_node, processed_nodes, is_calculate, negate=Fa
1974
1988
  get_node_expression(
1975
1989
  prev_node,
1976
1990
  processed_nodes=processed_nodes,
1977
- is_calculate=False,
1991
+ get_overall_exp=True,
1978
1992
  is_prev=True,
1979
1993
  process=process)
1980
1994
  ]),
@@ -1991,7 +2005,7 @@ def get_count_terms_details( prev_node, processed_nodes, is_calculate, negate=Fa
1991
2005
  get_node_expression(
1992
2006
  prev_node,
1993
2007
  processed_nodes=processed_nodes,
1994
- is_calculate=False,
2008
+ get_overall_exp=True,
1995
2009
  is_prev=True,
1996
2010
  process=process)
1997
2011
  ]
@@ -1999,7 +2013,7 @@ def get_count_terms_details( prev_node, processed_nodes, is_calculate, negate=Fa
1999
2013
 
2000
2014
 
2001
2015
 
2002
- def get_add_terms( node, processed_nodes, is_calculate=False, negate=False, process=None):
2016
+ def get_add_terms( node, processed_nodes, get_overall_exp=False, negate=False, process=None):
2003
2017
  if negate:
2004
2018
  logger.warning("negate not supported for Add node {}".format(node.get_name()))
2005
2019
  terms = []
@@ -2022,7 +2036,7 @@ def get_add_terms( node, processed_nodes, is_calculate=False, negate=False, proc
2022
2036
  get_node_expression(
2023
2037
  prev_node,
2024
2038
  processed_nodes=processed_nodes,
2025
- is_calculate=False,
2039
+ get_overall_exp=True,
2026
2040
  is_prev=True,
2027
2041
  process=process)
2028
2042
  ]
@@ -2041,7 +2055,7 @@ def get_add_terms( node, processed_nodes, is_calculate=False, negate=False, proc
2041
2055
  )
2042
2056
  return operation
2043
2057
 
2044
- def get_rhombus_terms( node, processed_nodes, is_calculate=False, negate=False, process=None):
2058
+ def get_rhombus_terms( node, processed_nodes, get_overall_exp=False, negate=False, process=None):
2045
2059
  expression = None
2046
2060
  left_term = None
2047
2061
  operator = None
@@ -2059,7 +2073,7 @@ def get_rhombus_terms( node, processed_nodes, is_calculate=False, negate=False,
2059
2073
  expression = get_node_expression(
2060
2074
  ref,
2061
2075
  processed_nodes=processed_nodes,
2062
- is_calculate=True,
2076
+ get_overall_exp=True,
2063
2077
  is_prev=True,
2064
2078
  process=process
2065
2079
  )
@@ -2099,7 +2113,7 @@ def get_rhombus_terms( node, processed_nodes, is_calculate=False, negate=False,
2099
2113
  get_node_expression(
2100
2114
  expression,
2101
2115
  processed_nodes=processed_nodes,
2102
- is_calculate=True,
2116
+ get_overall_exp=True,
2103
2117
  is_prev=True,
2104
2118
  process=process
2105
2119
  )
@@ -2129,9 +2143,9 @@ def get_rhombus_terms( node, processed_nodes, is_calculate=False, negate=False,
2129
2143
  # function that generate the calculation terms return by calculate node
2130
2144
  # @param node calculate node to assess
2131
2145
  # @param processed_nodes list of node already processed, importnat because only processed node could be use
2132
- # @param is_calculate used when this funciton is called in the evaluation of another calculate
2146
+ # @param get_overall_exp used when this funciton is called in the evaluation of another calculate
2133
2147
  # @param negate use to retriece the negation of a calculation
2134
- def get_calculation_terms( node, processed_nodes, is_calculate=False, negate=False, process=None):
2148
+ def get_calculation_terms( node, processed_nodes, get_overall_exp=False, negate=False, process=None):
2135
2149
  # returns something directly only if the negate is managed
2136
2150
  expression = None
2137
2151
  if isinstance(node, TriccNodeAdd):
@@ -2142,7 +2156,7 @@ def get_calculation_terms( node, processed_nodes, is_calculate=False, negate=Fal
2142
2156
  return get_rhombus_terms(
2143
2157
  node,
2144
2158
  processed_nodes=processed_nodes,
2145
- is_calculate=False,
2159
+ get_overall_exp=False,
2146
2160
  negate=negate,
2147
2161
  process=process
2148
2162
  )
@@ -2151,11 +2165,11 @@ def get_calculation_terms( node, processed_nodes, is_calculate=False, negate=Fal
2151
2165
  expression = None
2152
2166
  # in case of calulate expression evaluation, we need to get the relevance of the activity
2153
2167
  # because calculate are not the the activity group
2154
- elif isinstance(node, (TriccNodeActivityStart)) and is_calculate:
2155
- expression = get_prev_node_expression(node.activity, processed_nodes=processed_nodes, is_calculate=is_calculate, negate=negate, process=process)
2168
+ elif isinstance(node, (TriccNodeActivityStart)) and get_overall_exp:
2169
+ expression = get_prev_node_expression(node.activity, processed_nodes=processed_nodes, get_overall_exp=get_overall_exp, negate=negate, process=process)
2156
2170
  elif isinstance(node, (TriccNodeActivityStart, TriccNodeActivityEnd)):
2157
2171
  # the group have the relevance for the activity, not needed to replicate it
2158
- expression = None #return get_prev_node_expression(node.activity, processed_nodes, is_calculate=False, excluded_name=None)
2172
+ expression = None #return get_prev_node_expression(node.activity, processed_nodes, get_overall_exp=False, excluded_name=None)
2159
2173
  elif isinstance(node, TriccNodeExclusive):
2160
2174
  if len(node.prev_nodes) == 1:
2161
2175
  iterator = iter(node.prev_nodes)
@@ -2167,6 +2181,7 @@ def get_calculation_terms( node, processed_nodes, is_calculate=False, negate=Fal
2167
2181
  return get_node_expression(
2168
2182
  node_to_negate,
2169
2183
  processed_nodes=processed_nodes,
2184
+ get_overall_exp=True,
2170
2185
  is_prev=True,
2171
2186
  negate=True,
2172
2187
  process=process
@@ -2175,7 +2190,7 @@ def get_calculation_terms( node, processed_nodes, is_calculate=False, negate=Fal
2175
2190
  return get_node_expression(
2176
2191
  node_to_negate,
2177
2192
  processed_nodes=processed_nodes,
2178
- is_calculate=False,
2193
+ get_overall_exp=True,
2179
2194
  is_prev=True,
2180
2195
  negate=True,
2181
2196
  process=process
@@ -2191,14 +2206,14 @@ def get_calculation_terms( node, processed_nodes, is_calculate=False, negate=Fal
2191
2206
  if isinstance(node.expression_reference, (TriccOperation, TriccStatic)):
2192
2207
  expression = node.expression_reference
2193
2208
  elif node.reference is not None and node.expression_reference is not None :
2194
- expression = get_prev_node_expression(node, processed_nodes=processed_nodes, is_calculate=is_calculate, process=process)
2209
+ expression = get_prev_node_expression(node, processed_nodes=processed_nodes, get_overall_exp=get_overall_exp, process=process)
2195
2210
  ref_expression = node.expression_reference.format(*[get_export_name(ref) for ref in node.reference])
2196
2211
  if expression is not None and expression != '':
2197
2212
  expression = and_join([expression,ref_expression])
2198
2213
  else:
2199
2214
  expression = ref_expression
2200
2215
  elif expression is None:
2201
- expression = get_prev_node_expression(node, processed_nodes=processed_nodes, is_calculate=is_calculate, process=process)
2216
+ expression = get_prev_node_expression(node, processed_nodes=processed_nodes, get_overall_exp=get_overall_exp, process=process)
2202
2217
 
2203
2218
  # manage the generic negation
2204
2219
  if negate:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tricc-oo
3
- Version: 1.5.8
3
+ Version: 1.5.10
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