tricc-oo 1.6.18__py3-none-any.whl → 1.6.20__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.
@@ -101,7 +101,7 @@ def check_and_add_concept(code_system: CodeSystem, code: str, display: str, attr
101
101
  for p in new_concept.property:
102
102
  if p.code == k:
103
103
  # TODO support other type of Codesystem Concept Property Value
104
- existing_attributes
104
+ existing_attributes = True
105
105
  if p.valueString != v:
106
106
  logger.warning(f"conflicting value for concept `{concept.code}` property ` {k}`: {p.valueString} != {v}")
107
107
  if not existing_attributes:
@@ -127,6 +127,7 @@ class XLSFormStrategy(BaseOutPutStrategy):
127
127
  "df_calculate": self.df_calculate,
128
128
  "calculates": self.calculates,
129
129
  }
130
+
130
131
 
131
132
  def generate_export(self, node, **kwargs):
132
133
  return generate_xls_form_export(self, node, **kwargs)
@@ -374,12 +375,14 @@ class XLSFormStrategy(BaseOutPutStrategy):
374
375
 
375
376
  def get_tricc_operation_expression(self, operation):
376
377
  ref_expressions = []
378
+ original_references = []
377
379
  if not hasattr(operation, "reference"):
378
380
  return self.get_tricc_operation_operand(operation)
379
381
 
380
382
  operator = getattr(operation, "operator", "")
381
383
  coalesce_fallback = OPERATOR_COALESCE_FALLBACK[operator] if operator in OPERATOR_COALESCE_FALLBACK else "''"
382
384
  for r in operation.reference:
385
+ original_references.append(r)
383
386
  if isinstance(r, list):
384
387
  r_expr = [
385
388
  (
@@ -400,43 +403,43 @@ class XLSFormStrategy(BaseOutPutStrategy):
400
403
  # build lower level
401
404
  if hasattr(self, f"tricc_operation_{operation.operator}"):
402
405
  callable = getattr(self, f"tricc_operation_{operation.operator}")
403
- return callable(ref_expressions)
406
+ return callable(ref_expressions, original_references)
404
407
  else:
405
408
  raise NotImplementedError(
406
409
  f"This type of opreation '{operation.operator}' is not supported in this strategy"
407
410
  )
408
411
 
409
- def tricc_operation_count(self, ref_expressions):
412
+ def tricc_operation_count(self, ref_expressions, original_references=None):
410
413
  return f"count-selected({self.clean_coalesce(ref_expressions[0])})"
411
414
 
412
- def tricc_operation_multiplied(self, ref_expressions):
415
+ def tricc_operation_multiplied(self, ref_expressions, original_references=None):
413
416
  return "*".join(map(str, ref_expressions))
414
417
 
415
- def tricc_operation_divided(self, ref_expressions):
418
+ def tricc_operation_divided(self, ref_expressions, original_references=None):
416
419
  return f"{ref_expressions[0]} div {ref_expressions[1]}"
417
420
 
418
- def tricc_operation_modulo(self, ref_expressions):
421
+ def tricc_operation_modulo(self, ref_expressions, original_references=None):
419
422
  return f"{ref_expressions[0]} mod {ref_expressions[1]}"
420
423
 
421
- def tricc_operation_coalesce(self, ref_expressions):
424
+ def tricc_operation_coalesce(self, ref_expressions, original_references=None):
422
425
  return f"coalesce({','.join(map(self.clean_coalesce, ref_expressions))})"
423
426
 
424
- def tricc_operation_module(self, ref_expressions):
427
+ def tricc_operation_module(self, ref_expressions, original_references=None):
425
428
  return f"{ref_expressions[0]} mod {ref_expressions[1]}"
426
429
 
427
- def tricc_operation_minus(self, ref_expressions):
430
+ def tricc_operation_minus(self, ref_expressions, original_references=None):
428
431
  if len(ref_expressions) > 1:
429
432
  return " - ".join(map(str, ref_expressions))
430
433
  elif len(ref_expressions) == 1:
431
434
  return f"-{ref_expressions[0]}"
432
435
 
433
- def tricc_operation_plus(self, ref_expressions):
436
+ def tricc_operation_plus(self, ref_expressions, original_references=None):
434
437
  return " + ".join(map(str, ref_expressions))
435
438
 
436
- def tricc_operation_not(self, ref_expressions):
439
+ def tricc_operation_not(self, ref_expressions, original_references=None):
437
440
  return f"not({ref_expressions[0]})"
438
441
 
439
- def tricc_operation_and(self, ref_expressions):
442
+ def tricc_operation_and(self, ref_expressions, original_references=None):
440
443
  if len(ref_expressions) == 1:
441
444
  return ref_expressions[0]
442
445
  if len(ref_expressions) > 1:
@@ -448,7 +451,7 @@ class XLSFormStrategy(BaseOutPutStrategy):
448
451
  else:
449
452
  return "1"
450
453
 
451
- def tricc_operation_or(self, ref_expressions):
454
+ def tricc_operation_or(self, ref_expressions, original_references=None):
452
455
  if len(ref_expressions) == 1:
453
456
  return ref_expressions[0]
454
457
  if len(ref_expressions) > 1:
@@ -460,7 +463,7 @@ class XLSFormStrategy(BaseOutPutStrategy):
460
463
  else:
461
464
  return "1"
462
465
 
463
- def tricc_operation_native(self, ref_expressions):
466
+ def tricc_operation_native(self, ref_expressions, original_references=None):
464
467
 
465
468
  if len(ref_expressions) > 0:
466
469
  if ref_expressions[0].startswith(("'", "`",)):
@@ -477,22 +480,22 @@ class XLSFormStrategy(BaseOutPutStrategy):
477
480
  else:
478
481
  return f"{ref_expressions[0]}({','.join(map(str, ref_expressions[1:]))})"
479
482
 
480
- def tricc_operation_istrue(self, ref_expressions):
483
+ def tricc_operation_istrue(self, ref_expressions, original_references=None):
481
484
  if str(BOOLEAN_MAP[str(TRICC_TRUE_VALUE)]).isnumeric():
482
485
  return f"{ref_expressions[0]}>={BOOLEAN_MAP[str(TRICC_TRUE_VALUE)]}"
483
486
  else:
484
487
  return f"{ref_expressions[0]}={BOOLEAN_MAP[str(TRICC_TRUE_VALUE)]}"
485
488
 
486
- def tricc_operation_isfalse(self, ref_expressions):
489
+ def tricc_operation_isfalse(self, ref_expressions, original_references=None):
487
490
  if str(BOOLEAN_MAP[str(TRICC_FALSE_VALUE)]).isnumeric():
488
491
  return f"{ref_expressions[0]}={BOOLEAN_MAP[str(TRICC_FALSE_VALUE)]}"
489
492
  else:
490
493
  return f"{ref_expressions[0]}={BOOLEAN_MAP[str(TRICC_FALSE_VALUE)]}"
491
494
 
492
- def tricc_operation_parenthesis(self, ref_expressions):
495
+ def tricc_operation_parenthesis(self, ref_expressions, original_references=None):
493
496
  return f"({ref_expressions[0]})"
494
497
 
495
- def tricc_operation_selected(self, ref_expressions):
498
+ def tricc_operation_selected(self, ref_expressions, original_references=None):
496
499
  parts = []
497
500
  for s in ref_expressions[1:]:
498
501
  # for option with numeric value
@@ -508,49 +511,49 @@ class XLSFormStrategy(BaseOutPutStrategy):
508
511
  else:
509
512
  return self.tricc_operation_or(parts)
510
513
 
511
- def tricc_operation_more_or_equal(self, ref_expressions):
514
+ def tricc_operation_more_or_equal(self, ref_expressions, original_references=None):
512
515
  return f"{ref_expressions[0]}>={ref_expressions[1]}"
513
516
 
514
- def tricc_operation_less_or_equal(self, ref_expressions):
517
+ def tricc_operation_less_or_equal(self, ref_expressions, original_references=None):
515
518
  return f"{ref_expressions[0]}<={ref_expressions[1]}"
516
519
 
517
- def tricc_operation_more(self, ref_expressions):
520
+ def tricc_operation_more(self, ref_expressions, original_references=None):
518
521
  return f"{ref_expressions[0]}>{ref_expressions[1]}"
519
522
 
520
- def tricc_operation_less(self, ref_expressions):
523
+ def tricc_operation_less(self, ref_expressions, original_references=None):
521
524
  return f"{ref_expressions[0]}<{ref_expressions[1]}"
522
525
 
523
- def tricc_operation_between(self, ref_expressions):
526
+ def tricc_operation_between(self, ref_expressions, original_references=None):
524
527
  return f"{ref_expressions[0]}>={ref_expressions[1]} and {ref_expressions[0]} < {ref_expressions[2]}"
525
528
 
526
- def tricc_operation_equal(self, ref_expressions):
529
+ def tricc_operation_equal(self, ref_expressions, original_references=None):
527
530
  return f"{ref_expressions[0]}={ref_expressions[1]}"
528
531
 
529
- def tricc_operation_not_equal(self, ref_expressions):
532
+ def tricc_operation_not_equal(self, ref_expressions, original_references=None):
530
533
  return f"{ref_expressions[0]}!={ref_expressions[1]}"
531
534
 
532
- def tricc_operation_isnull(self, ref_expressions):
535
+ def tricc_operation_isnull(self, ref_expressions, original_references=None):
533
536
  return f"{ref_expressions[0]}=''"
534
537
 
535
- def tricc_operation_isnotnull(self, ref_expressions):
538
+ def tricc_operation_isnotnull(self, ref_expressions, original_references=None):
536
539
  return f"{ref_expressions[0]}!=''"
537
540
 
538
- def tricc_operation_isnottrue(self, ref_expressions):
541
+ def tricc_operation_isnottrue(self, ref_expressions, original_references=None):
539
542
  if str(BOOLEAN_MAP[str(TRICC_TRUE_VALUE)]).isnumeric():
540
543
  return f"{ref_expressions[0]}<{BOOLEAN_MAP[str(TRICC_TRUE_VALUE)]}"
541
544
  else:
542
545
  return f"{ref_expressions[0]}!={BOOLEAN_MAP[str(TRICC_TRUE_VALUE)]}"
543
546
 
544
- def tricc_operation_isnotfalse(self, ref_expressions):
547
+ def tricc_operation_isnotfalse(self, ref_expressions, original_references=None):
545
548
  if str(BOOLEAN_MAP[str(TRICC_FALSE_VALUE)]).isnumeric():
546
549
  return f"{ref_expressions[0]}>{BOOLEAN_MAP[str(TRICC_FALSE_VALUE)]}"
547
550
  else:
548
551
  return f"{ref_expressions[0]}!={BOOLEAN_MAP[str(TRICC_FALSE_VALUE)]}"
549
552
 
550
- def tricc_operation_notexist(self, ref_expressions):
553
+ def tricc_operation_notexist(self, ref_expressions, original_references=None):
551
554
  return f"{ref_expressions[0]}=''"
552
555
 
553
- def tricc_operation_case(self, ref_expressions):
556
+ def tricc_operation_case(self, ref_expressions, original_references=None):
554
557
  ifs = 0
555
558
  parts = []
556
559
  else_found = False
@@ -573,7 +576,7 @@ class XLSFormStrategy(BaseOutPutStrategy):
573
576
  exp += ")"
574
577
  return exp
575
578
 
576
- def tricc_operation_ifs(self, ref_expressions):
579
+ def tricc_operation_ifs(self, ref_expressions, original_references=None):
577
580
  ifs = 0
578
581
  parts = []
579
582
  else_found = False
@@ -598,19 +601,19 @@ class XLSFormStrategy(BaseOutPutStrategy):
598
601
  def get_empty_label(self):
599
602
  return "."
600
603
 
601
- def tricc_operation_if(self, ref_expressions):
604
+ def tricc_operation_if(self, ref_expressions, original_references=None):
602
605
  return f"if({ref_expressions[0]},{ref_expressions[1]},{ref_expressions[2]})"
603
606
 
604
- def tricc_operation_contains(self, ref_expressions):
607
+ def tricc_operation_contains(self, ref_expressions, original_references=None):
605
608
  return f"contains({self.clean_coalesce(ref_expressions[0])}, {self.clean_coalesce(ref_expressions[1])})"
606
609
 
607
- def tricc_operation_exists(self, ref_expressions):
610
+ def tricc_operation_exists(self, ref_expressions, original_references=None):
608
611
  parts = []
609
612
  for ref in ref_expressions:
610
613
  parts.append(self.tricc_operation_not_equal([self.tricc_operation_coalesce([ref, "''"]), "''"]))
611
614
  return self.tricc_operation_and(parts)
612
615
 
613
- def tricc_operation_cast_number(self, ref_expressions):
616
+ def tricc_operation_cast_number(self, ref_expressions, original_references=None):
614
617
  if isinstance(
615
618
  ref_expressions[0],
616
619
  (
@@ -637,7 +640,7 @@ class XLSFormStrategy(BaseOutPutStrategy):
637
640
  else:
638
641
  return f"number({ref_expressions[0]})"
639
642
 
640
- def tricc_operation_cast_integer(self, ref_expressions):
643
+ def tricc_operation_cast_integer(self, ref_expressions, original_references=None):
641
644
  if isinstance(
642
645
  ref_expressions[0],
643
646
  (
@@ -664,18 +667,18 @@ class XLSFormStrategy(BaseOutPutStrategy):
664
667
  else:
665
668
  return f"int({ref_expressions[0]})"
666
669
 
667
- def tricc_operation_zscore(self, ref_expressions):
670
+ def tricc_operation_zscore(self, ref_expressions, original_references=None):
668
671
  y, ll, m, s = self.get_zscore_params(ref_expressions)
669
672
  # return ((Math.pow((y / m), l) - 1) / (s * l));
670
673
  return f"(pow({y} div ({m}), {ll}) -1) div (({s}) div ({ll}))"
671
674
 
672
- def tricc_operation_datetime_to_decimal(self, ref_expressions):
675
+ def tricc_operation_datetime_to_decimal(self, ref_expressions, original_references=None):
673
676
  return f"decimal-date-time({ref_expressions[0]})"
674
677
 
675
- def tricc_operation_round(self, ref_expressions):
678
+ def tricc_operation_round(self, ref_expressions, original_references=None):
676
679
  return f"round({ref_expressions[0]})"
677
680
 
678
- def tricc_operation_izscore(self, ref_expressions):
681
+ def tricc_operation_izscore(self, ref_expressions, original_references=None):
679
682
  z, ll, m, s = self.get_zscore_params(ref_expressions)
680
683
  # return (m * (z*s*l-1)^(1/l));
681
684
  return f"pow({m} * ({z} * {s} * {ll} -1), 1 div {ll})"
@@ -747,35 +750,36 @@ class XLSFormStrategy(BaseOutPutStrategy):
747
750
  else:
748
751
  raise NotImplementedError(f"This type of node {r.__class__} is not supported within an operation")
749
752
 
750
- def tricc_operation_concatenate(self, ref_expressions):
753
+ def tricc_operation_concatenate(self, ref_expressions, original_references=None):
751
754
  return f"concat({','.join(map(str, ref_expressions))})"
752
755
 
753
- def tricc_operation_diagnosis_list(self, ref_expressions):
756
+ def tricc_operation_diagnosis_list(self, ref_expressions, original_references=None):
754
757
  from tricc_oo.converters.datadictionnary import lookup_codesystems_code
758
+
755
759
  parts = []
756
- for expr in ref_expressions:
757
- if isinstance(expr, str):
758
- # expr is the variable reference like "final.TRIAGE_YELLOW" or "${var}"
759
- if expr.startswith("${") and expr.endswith("}"):
760
- var_path = expr[2:-1]
761
- else:
762
- var_path = expr
763
- # Handle final. prefix
764
- code = var_path[6:] if var_path.startswith("final.") else var_path
765
- concept = lookup_codesystems_code(self.codesystems, code)
766
- if concept:
767
- display = concept.get("display", code)
768
- else:
769
- logger.warning(f"Diagnosis code '{code}' not found in codesystems")
770
- display = code
771
- if expr.startswith("${"):
772
- condition = f"{expr} = 1"
773
- else:
774
- condition = f"${{{expr}}} = 1"
775
- # Always include comma after diagnosis name
776
- parts.append(f"if({condition}, '{display},', '')")
760
+ for i, orig_ref in enumerate(original_references):
761
+ expr = ref_expressions[i] if ref_expressions and i < len(ref_expressions) else None
762
+
763
+ code = None
764
+ # Use only original references for code lookup
765
+ if isinstance(orig_ref, TriccReference):
766
+ code = orig_ref.value
767
+ elif issubclass(type(orig_ref), TriccNodeBaseModel):
768
+ code = orig_ref.name
777
769
  else:
778
- logger.warning(f"Unexpected expression type: {type(expr)}, value: {expr}")
770
+ logger.critical(f"Unexpected reference type: {type(orig_ref)}, value: {orig_ref}")
771
+ exit(1)
772
+
773
+ concept = lookup_codesystems_code(self.project.code_systems, code)
774
+ if concept:
775
+ display = getattr(concept, 'display', code)
776
+ else:
777
+ logger.warning(f"Diagnosis code '{code}' not found in codesystems")
778
+ display = code
779
+
780
+ # Always include comma after diagnosis name
781
+ parts.append(f"if({expr} = 1, '{display},', '')")
782
+
779
783
  if parts:
780
784
  return f"concat({','.join(parts)})"
781
785
  return "''"
@@ -840,7 +840,7 @@ class XLSFormCHTStrategy(XLSFormCDSSStrategy):
840
840
  logger.error(f"Failed to download ODK Validate JAR: {str(e)}")
841
841
  return None
842
842
 
843
- def tricc_operation_zscore(self, ref_expressions):
843
+ def tricc_operation_zscore(self, ref_expressions, original_references=None):
844
844
  y, ll, m, s = self.get_zscore_params(ref_expressions)
845
845
  # return ((Math.pow((y / m), l) - 1) / (s * l));
846
846
  return f"""cht:extension-lib('{
@@ -853,7 +853,7 @@ class XLSFormCHTStrategy(XLSFormCDSSStrategy):
853
853
  self.clean_coalesce(ref_expressions[3])
854
854
  })"""
855
855
 
856
- def tricc_operation_izscore(self, ref_expressions):
856
+ def tricc_operation_izscore(self, ref_expressions, original_references=None):
857
857
  z, ll, m, s = self.get_zscore_params(ref_expressions)
858
858
  # return (m * (z*s*l-1)^(1/l));
859
859
  return f"""cht:extension-lib('{
@@ -866,7 +866,7 @@ class XLSFormCHTStrategy(XLSFormCDSSStrategy):
866
866
  self.clean_coalesce(ref_expressions[3])
867
867
  }, true"""
868
868
 
869
- def tricc_operation_drug_dosage(self, ref_expressions):
869
+ def tricc_operation_drug_dosage(self, ref_expressions, original_references=None):
870
870
  # drug name
871
871
  # age
872
872
  # weight
@@ -2230,6 +2230,17 @@ def get_prev_node_expression(node, processed_nodes, get_overall_exp=False, exclu
2230
2230
  negate=False,
2231
2231
  process=process,
2232
2232
  )
2233
+ elif not issubclass(prev_node.__class__, TriccNodeInputModel):
2234
+ # For non-input nodes, AND the activity relevance with the prev expression
2235
+ activity_relevance = get_node_expression(
2236
+ prev_node.activity,
2237
+ processed_nodes=processed_nodes,
2238
+ get_overall_exp=get_overall_exp,
2239
+ is_prev=True,
2240
+ negate=False,
2241
+ process=process,
2242
+ )
2243
+ act_sub = and_join([activity_relevance, act_sub])
2233
2244
  add_sub_expression(expression_inputs, act_sub)
2234
2245
  # avoid void is there is not conditions to avoid looping too much itme
2235
2246
  # expression_inputs = clean_or_list(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tricc-oo
3
- Version: 1.6.18
3
+ Version: 1.6.20
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
@@ -5,7 +5,7 @@ tricc_oo/__init__.py,sha256=oWCE1ubmC_6iqaWOMgTei4eXVQgV202Ia-tXS1NnW_4,139
5
5
  tricc_oo/converters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  tricc_oo/converters/codesystem_to_ocl.py,sha256=V_oZNVUVaYHgzJtDiBMSrvIJnBWmDNFBDTTHEkOfpXk,6151
7
7
  tricc_oo/converters/cql_to_operation.py,sha256=1vNmGkI9OhGNTH6EH5hC1SnVVbIG5ps8dksGhZ0Vgw8,14543
8
- tricc_oo/converters/datadictionnary.py,sha256=JasqlLKiZzKdidsA1xc2SJ_Af1Xr6A3sKfzDynto8Ho,3686
8
+ tricc_oo/converters/datadictionnary.py,sha256=JPcqjlohZJL1R6-fXzpFUNoOFe_W3OnG2uSjsOQN5-Y,3693
9
9
  tricc_oo/converters/drawio_type_map.py,sha256=Zp8J9iHNSJkIVrmRSM0_d4vA1X8wFPLKb8nCMPUMXKU,9114
10
10
  tricc_oo/converters/tricc_to_xls_form.py,sha256=39hwWgYNitGE-AuKtjUwNLz39tEpwc7nd9gT_gw5wjc,3842
11
11
  tricc_oo/converters/utils.py,sha256=JZrtrvvOfXwdkw49pKauzinOcauWwsy-CVcw36TjyLo,1684
@@ -36,16 +36,16 @@ tricc_oo/strategies/output/fhir_form.py,sha256=hbL921pe1Doun4IQrJuZ_Sq2fCh98G3gr
36
36
  tricc_oo/strategies/output/html_form.py,sha256=qSleEZOMV_-Z04y-i-ucyd5rgAYWAyjPwMrw0IHtCRM,8604
37
37
  tricc_oo/strategies/output/openmrs_form.py,sha256=ne6TwAyhafR-WDs27QTKKFl85VD5sij_VEJtK6ZjOIE,28996
38
38
  tricc_oo/strategies/output/spice.py,sha256=QMeoismVC3PdbvwTK0PtUjWX9jl9780fbQIXn76fMXw,10761
39
- tricc_oo/strategies/output/xls_form.py,sha256=93NEv8bZGWZWn28FxE_hwLf0yAGnL7ds6bS3rEDwcGQ,32319
39
+ tricc_oo/strategies/output/xls_form.py,sha256=CafduxDYH88myZa471_d0Ya0FEPQV0ArS8zSdfTeY-k,33335
40
40
  tricc_oo/strategies/output/xlsform_cdss.py,sha256=X00Lt5MzV8TX14dR4dFI1MqllI5S1e13bKbeysWM9uA,17435
41
- tricc_oo/strategies/output/xlsform_cht.py,sha256=0wrZ_Ez41D-SciXoBq4Pn4o1bK1ofUxXqbTjDoQuCGE,28597
41
+ tricc_oo/strategies/output/xlsform_cht.py,sha256=lY1xIDxqYxl_lYNVCl3msXZL88No49yEVCpahcHGOn0,28675
42
42
  tricc_oo/strategies/output/xlsform_cht_hf.py,sha256=xm6SKirV3nMZvM2w54_zJcXAeAgAkq-EEqGEjnOWv6c,988
43
43
  tricc_oo/visitors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
- tricc_oo/visitors/tricc.py,sha256=ArvDNcuzIQNJpYyT1vB_B9Gxc2m5YAxg9ss_orpMqK0,111780
44
+ tricc_oo/visitors/tricc.py,sha256=osf8ITXc3dWzITqVzORtGigbdH-ov9kVC8ftp2aTjqg,112339
45
45
  tricc_oo/visitors/utils.py,sha256=j83aAq5s5atXi3OC0jc_uJd54a8XrHHmizeeEbWZQJg,421
46
46
  tricc_oo/visitors/xform_pd.py,sha256=ryAnI3V9x3eTmJ2LNsUZfvl0_yfCqo6oBgeSu-WPqaE,9613
47
- tricc_oo-1.6.18.dist-info/licenses/LICENSE,sha256=Pz2eACSxkhsGfW9_iN60pgy-enjnbGTj8df8O3ebnQQ,16726
48
- tricc_oo-1.6.18.dist-info/METADATA,sha256=1nSbfCahrDBUlqaiuuarTmrJY9zgHmYgJKvG7_spR3s,8600
49
- tricc_oo-1.6.18.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
50
- tricc_oo-1.6.18.dist-info/top_level.txt,sha256=NvbfMNAiy9m4b1unBsqpeOQWh4IgA1Xa33BtKA4abxk,15
51
- tricc_oo-1.6.18.dist-info/RECORD,,
47
+ tricc_oo-1.6.20.dist-info/licenses/LICENSE,sha256=Pz2eACSxkhsGfW9_iN60pgy-enjnbGTj8df8O3ebnQQ,16726
48
+ tricc_oo-1.6.20.dist-info/METADATA,sha256=CUT-aJzYW3X-bYtuPitHPh0CfswbSpn8wiGmhVVMs9w,8600
49
+ tricc_oo-1.6.20.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
50
+ tricc_oo-1.6.20.dist-info/top_level.txt,sha256=NvbfMNAiy9m4b1unBsqpeOQWh4IgA1Xa33BtKA4abxk,15
51
+ tricc_oo-1.6.20.dist-info/RECORD,,