vtlengine 1.1rc1__py3-none-any.whl → 1.1.1__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.

Potentially problematic release.


This version of vtlengine might be problematic. Click here for more details.

@@ -23,6 +23,7 @@ from vtlengine.AST import (
23
23
  PersistentAssignment,
24
24
  Start,
25
25
  )
26
+ from vtlengine.AST.ASTConstructorModules import extract_token_info
26
27
  from vtlengine.AST.ASTConstructorModules.Expr import Expr
27
28
  from vtlengine.AST.ASTConstructorModules.ExprComponents import ExprComp
28
29
  from vtlengine.AST.ASTConstructorModules.Terminals import Terminals
@@ -64,7 +65,9 @@ class ASTVisitor(VtlVisitor):
64
65
  for statement in statements:
65
66
  statements_nodes.append(self.visitStatement(statement))
66
67
 
67
- start_node = Start(statements_nodes)
68
+ token_info = extract_token_info(ctx)
69
+
70
+ start_node = Start(children=statements_nodes, **token_info)
68
71
 
69
72
  return start_node
70
73
 
@@ -99,7 +102,8 @@ class ASTVisitor(VtlVisitor):
99
102
 
100
103
  right_node = Expr().visitExpr(ctx_list[2])
101
104
 
102
- assignment_node = Assignment(left_node, op_node, right_node)
105
+ token_info = extract_token_info(ctx)
106
+ assignment_node = Assignment(left=left_node, op=op_node, right=right_node, **token_info)
103
107
  return assignment_node
104
108
 
105
109
  # | varID PUT_SYMBOL expr # persistAssignment
@@ -114,7 +118,10 @@ class ASTVisitor(VtlVisitor):
114
118
 
115
119
  right_node = Expr().visitExpr(ctx_list[2])
116
120
 
117
- persistent_assignment_node = PersistentAssignment(left_node, op_node, right_node)
121
+ token_info = extract_token_info(ctx)
122
+ persistent_assignment_node = PersistentAssignment(
123
+ left=left_node, op=op_node, right=right_node, **token_info
124
+ )
118
125
  return persistent_assignment_node
119
126
 
120
127
  """______________________________________________________________________________________
@@ -167,8 +174,14 @@ class ASTVisitor(VtlVisitor):
167
174
  else:
168
175
  return_node = return_[0]
169
176
 
177
+ token_info = extract_token_info(ctx)
178
+
170
179
  return Operator(
171
- op=operator, parameters=parameters, output_type=return_node, expression=expr
180
+ op=operator,
181
+ parameters=parameters,
182
+ output_type=return_node,
183
+ expression=expr,
184
+ **token_info,
172
185
  )
173
186
 
174
187
  """
@@ -189,11 +202,14 @@ class ASTVisitor(VtlVisitor):
189
202
  signature_type, ruleset_elements = self.visitRulesetSignature(ctx_list[5])
190
203
  ruleset_rules = self.visitRuleClauseDatapoint(ctx_list[8])
191
204
 
205
+ token_info = extract_token_info(ctx)
206
+
192
207
  return DPRuleset(
193
208
  name=ruleset_name,
194
209
  params=ruleset_elements,
195
210
  rules=ruleset_rules,
196
211
  signature_type=signature_type,
212
+ **token_info,
197
213
  )
198
214
 
199
215
  def visitRulesetSignature(self, ctx: Parser.RulesetSignatureContext):
@@ -209,6 +225,7 @@ class ASTVisitor(VtlVisitor):
209
225
  if isinstance(value_domain, TerminalNodeImpl)
210
226
  and value_domain.getSymbol().type == Parser.VALUE_DOMAIN
211
227
  ]
228
+ kind = ""
212
229
  if len(value_domains) != 0:
213
230
  kind = "ValuedomainID"
214
231
 
@@ -269,7 +286,10 @@ class ASTVisitor(VtlVisitor):
269
286
  ]
270
287
 
271
288
  if len(when) != 0:
272
- rule_node = HRBinOp(left=expr_node[0], op=when[0].getSymbol().text, right=expr_node[1])
289
+ token_info = extract_token_info(when[0].getSymbol())
290
+ rule_node = HRBinOp(
291
+ left=expr_node[0], op=when[0].getSymbol().text, right=expr_node[1], **token_info
292
+ )
273
293
 
274
294
  else:
275
295
  rule_node = expr_node[0]
@@ -287,7 +307,10 @@ class ASTVisitor(VtlVisitor):
287
307
  ]
288
308
  er_level = None if len(er_level) == 0 else er_level[0]
289
309
 
290
- return DPRule(name=rule_name, rule=rule_node, erCode=er_code, erLevel=er_level)
310
+ token_info = extract_token_info(ctx)
311
+ return DPRule(
312
+ name=rule_name, rule=rule_node, erCode=er_code, erLevel=er_level, **token_info
313
+ )
291
314
 
292
315
  def visitParameterItem(self, ctx: Parser.ParameterItemContext):
293
316
  """
@@ -314,7 +337,10 @@ class ASTVisitor(VtlVisitor):
314
337
 
315
338
  if isinstance(argument_type, (Dataset, Component, Scalar)):
316
339
  argument_type.name = argument_name.value
317
- return Argument(name=argument_name.value, type_=argument_type, default=argument_default)
340
+ token_info = extract_token_info(ctx)
341
+ return Argument(
342
+ name=argument_name.value, type_=argument_type, default=argument_default, **token_info
343
+ )
318
344
 
319
345
  """
320
346
  -----------------------------------
@@ -342,11 +368,14 @@ class ASTVisitor(VtlVisitor):
342
368
  if len(ruleset_rules) == 0:
343
369
  raise Exception(f"No rules found for the ruleset {ruleset_name}")
344
370
 
371
+ token_info = extract_token_info(ctx)
372
+
345
373
  return HRuleset(
346
374
  signature_type=signature_type,
347
375
  name=ruleset_name,
348
376
  element=ruleset_elements,
349
377
  rules=ruleset_rules,
378
+ **token_info,
350
379
  )
351
380
 
352
381
  # TODO Add support for value Domains.
@@ -379,18 +408,24 @@ class ASTVisitor(VtlVisitor):
379
408
  and identifier.getSymbol().type == Parser.IDENTIFIER
380
409
  ][0]
381
410
 
411
+ token_info = extract_token_info(ctx)
382
412
  if conditions:
383
413
  identifiers_list = [
384
414
  DefIdentifier(
385
415
  value=elto.alias if getattr(elto, "alias", None) else elto.value,
386
416
  kind=kind,
417
+ **token_info,
387
418
  )
388
419
  for elto in conditions[0]
389
420
  ]
390
- identifiers_list.append(DefIdentifier(value=dataset.getSymbol().text, kind=kind))
421
+ identifiers_list.append(
422
+ DefIdentifier(value=dataset.getSymbol().text, kind=kind, **token_info)
423
+ )
391
424
  return signature_type, identifiers_list
392
425
  else:
393
- return signature_type, DefIdentifier(value=dataset.getSymbol().text, kind=kind)
426
+ return signature_type, DefIdentifier(
427
+ value=dataset.getSymbol().text, kind=kind, **token_info
428
+ )
394
429
 
395
430
  # TODO Support for valueDomainSignature.
396
431
  def visitValueDomainSignature(self, ctx: Parser.ValueDomainSignatureContext):
@@ -453,7 +488,9 @@ class ASTVisitor(VtlVisitor):
453
488
  ]
454
489
  er_level = None if len(er_level) == 0 else er_level[0]
455
490
 
456
- return HRule(name=rule_name, rule=rule_node, erCode=er_code, erLevel=er_level)
491
+ token_info = extract_token_info(ctx)
492
+
493
+ return HRule(name=rule_name, rule=rule_node, erCode=er_code, erLevel=er_level, **token_info)
457
494
 
458
495
  def visitCodeItemRelation(self, ctx: Parser.CodeItemRelationContext):
459
496
  """
@@ -470,22 +507,29 @@ class ASTVisitor(VtlVisitor):
470
507
  when = ctx_list[0].getSymbol().text
471
508
  vd_value = Terminals().visitValueDomainValue(ctx_list[3])
472
509
  op = Terminals().visitComparisonOperand(ctx_list[4])
510
+ token_info_value = extract_token_info(ctx_list[3])
511
+ token_info_op = extract_token_info(ctx_list[4])
473
512
  else:
474
513
  vd_value = Terminals().visitValueDomainValue(ctx_list[0])
475
514
  op = Terminals().visitComparisonOperand(ctx_list[1])
515
+ token_info_value = extract_token_info(ctx_list[0])
516
+ token_info_op = extract_token_info(ctx_list[1])
476
517
 
477
518
  rule_node = HRBinOp(
478
- left=DefIdentifier(value=vd_value, kind="CodeItemID"), op=op, right=None
519
+ left=DefIdentifier(value=vd_value, kind="CodeItemID", **token_info_value),
520
+ op=op,
521
+ right=None,
522
+ **token_info_op,
479
523
  )
480
524
  items = [
481
525
  item for item in ctx_list if isinstance(item, Parser.CodeItemRelationClauseContext)
482
526
  ]
483
-
527
+ token_info = extract_token_info(items[0])
484
528
  # Means that no concatenations of operations is needed for that rule.
485
529
  if len(items) == 1:
486
530
  cir_node = self.visitCodeItemRelationClause(items[0])
487
531
  if isinstance(cir_node, HRBinOp):
488
- rule_node.right = HRUnOp(op=cir_node.op, operand=cir_node.right)
532
+ rule_node.right = HRUnOp(op=cir_node.op, operand=cir_node.right, **token_info)
489
533
 
490
534
  elif isinstance(cir_node, DefIdentifier):
491
535
  rule_node.right = cir_node
@@ -494,7 +538,9 @@ class ASTVisitor(VtlVisitor):
494
538
  else:
495
539
  previous_node = self.visitCodeItemRelationClause(items[0])
496
540
  if isinstance(previous_node, HRBinOp):
497
- previous_node = HRUnOp(op=previous_node.op, operand=previous_node.right)
541
+ previous_node = HRUnOp(
542
+ op=previous_node.op, operand=previous_node.right, **token_info
543
+ )
498
544
 
499
545
  for item in items[1:]:
500
546
  item_node = self.visitCodeItemRelationClause(item)
@@ -506,7 +552,8 @@ class ASTVisitor(VtlVisitor):
506
552
 
507
553
  if when is not None:
508
554
  expr_node = ExprComp().visitExprComponent(ctx_list[1])
509
- rule_node = HRBinOp(left=expr_node, op=when, right=rule_node)
555
+ token_when_info = extract_token_info(ctx_list[1])
556
+ rule_node = HRBinOp(left=expr_node, op=when, right=rule_node, **token_when_info)
510
557
 
511
558
  return rule_node
512
559
 
@@ -531,14 +578,20 @@ class ASTVisitor(VtlVisitor):
531
578
  op = ctx_list[0].getSymbol().text
532
579
  value = Terminals().visitValueDomainValue(ctx_list[1])
533
580
 
534
- code_item = DefIdentifier(value=value, kind="CodeItemID")
581
+ code_item = DefIdentifier(
582
+ value=value, kind="CodeItemID", **extract_token_info(ctx_list[1])
583
+ )
535
584
  if right_condition:
536
585
  code_item._right_condition = right_condition[0]
537
586
 
538
- return HRBinOp(left=None, op=op, right=code_item)
587
+ return HRBinOp(
588
+ left=None, op=op, right=code_item, **extract_token_info(ctx_list[0].getSymbol())
589
+ )
539
590
  else:
540
591
  value = Terminals().visitValueDomainValue(ctx_list[0])
541
- code_item = DefIdentifier(value=value, kind="CodeItemID")
592
+ code_item = DefIdentifier(
593
+ value=value, kind="CodeItemID", **extract_token_info(ctx_list[0])
594
+ )
542
595
  if right_condition:
543
596
  code_item._right_condition = right_condition[0]
544
597