flamapy-fm 2.1.0.dev2__tar.gz → 2.5.0.dev0__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 (61) hide show
  1. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/PKG-INFO +3 -3
  2. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/uvl_reader.py +34 -23
  3. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy_fm.egg-info/PKG-INFO +3 -3
  4. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy_fm.egg-info/requires.txt +2 -2
  5. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/pyproject.toml +4 -4
  6. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/LICENSE +0 -0
  7. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/README.md +0 -0
  8. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/__init__.py +0 -0
  9. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/models/__init__.py +0 -0
  10. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/models/feature_model.py +0 -0
  11. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/__init__.py +0 -0
  12. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/fm_atomic_sets.py +0 -0
  13. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/fm_average_branching_factor.py +0 -0
  14. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/fm_core_features.py +0 -0
  15. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/fm_count_leafs.py +0 -0
  16. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/fm_estimated_configurations_number.py +0 -0
  17. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/fm_feature_ancestors.py +0 -0
  18. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/fm_generate_random_attribute.py +0 -0
  19. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/fm_language_level.py +0 -0
  20. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/fm_leaf_features.py +0 -0
  21. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/fm_max_depth_tree.py +0 -0
  22. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/fm_metrics.py +0 -0
  23. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/fm_variation_points.py +0 -0
  24. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/interfaces/__init__.py +0 -0
  25. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/operations/interfaces/variation_points.py +0 -0
  26. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/__init__.py +0 -0
  27. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/afm_reader.py +0 -0
  28. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/afm_writer.py +0 -0
  29. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/clafer_writer.py +0 -0
  30. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/featureide_reader.py +0 -0
  31. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/featureide_writer.py +0 -0
  32. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/flat_fm.py +0 -0
  33. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/fm_secure_features_names.py +0 -0
  34. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/glencoe_reader.py +0 -0
  35. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/glencoe_writer.py +0 -0
  36. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/json_reader.py +0 -0
  37. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/json_writer.py +0 -0
  38. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/pl_writer.py +0 -0
  39. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/pysat_to_fm.py +0 -0
  40. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/refactorings/__init__.py +0 -0
  41. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/refactorings/cardinality_group_refactoring.py +0 -0
  42. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/refactorings/commitment_feature.py +0 -0
  43. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/refactorings/deletion_feature.py +0 -0
  44. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/refactorings/feature_cardinality_refactoring.py +0 -0
  45. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/refactorings/feature_cardinality_refactoring_paper.py +0 -0
  46. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/refactorings/multiple_group_decomposition_refactoring.py +0 -0
  47. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/refactorings/mutex_group_refactoring.py +0 -0
  48. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/refactorings/or_mandatory_refactoring.py +0 -0
  49. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/refactorings/pseudocomplex_constraint_refactoring.py +0 -0
  50. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/refactorings/refactoring_exception.py +0 -0
  51. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/refactorings/refactoring_interface.py +0 -0
  52. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/refactorings/strictcomplex_constraint_refactoring.py +0 -0
  53. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/refactorings/xor_mandatory_refactoring.py +0 -0
  54. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/splot_writer.py +0 -0
  55. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/uvl_writer.py +0 -0
  56. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy/metamodels/fm_metamodel/transformations/xml_reader.py +0 -0
  57. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy_fm.egg-info/SOURCES.txt +0 -0
  58. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy_fm.egg-info/dependency_links.txt +0 -0
  59. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/flamapy_fm.egg-info/top_level.txt +0 -0
  60. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/setup.cfg +0 -0
  61. {flamapy_fm-2.1.0.dev2 → flamapy_fm-2.5.0.dev0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flamapy-fm
3
- Version: 2.1.0.dev2
3
+ Version: 2.5.0.dev0
4
4
  Summary: flamapy-fm is a plugin to Flamapy module
5
5
  Author-email: Flamapy <flamapy@us.es>
6
6
  License-Expression: GPL-3.0-or-later
@@ -8,8 +8,8 @@ Project-URL: Homepage, https://github.com/flamapy/fm_metamodel
8
8
  Requires-Python: >=3.9
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
- Requires-Dist: flamapy-fw~=2.1.0.dev2
12
- Requires-Dist: uvlparser~=2.0.1.dev61
11
+ Requires-Dist: flamapy-fw~=2.5.0.dev0
12
+ Requires-Dist: uvlparser~=2.5.0.dev63
13
13
  Requires-Dist: afmparser~=1.0.3
14
14
  Provides-Extra: dev
15
15
  Requires-Dist: pytest; extra == "dev"
@@ -352,31 +352,42 @@ class UVLReader(TextToModel):
352
352
  self.process_expression(ctx.expression(1)))
353
353
 
354
354
  def process_expression(self, ctx: Any) -> Node:
355
- """Handle Additive, Multiplicative y Primary Expressions"""
356
- # Binary expressions (arithmetics)
357
- # 1. Handle Arithmetic Binary Expressions
358
- arithmetic_ops = {
359
- UVLPythonParser.AddExpressionContext: ASTOperation.ADD,
360
- UVLPythonParser.SubExpressionContext: ASTOperation.SUB,
361
- UVLPythonParser.MulExpressionContext: ASTOperation.MUL,
362
- UVLPythonParser.DivExpressionContext: ASTOperation.DIV,
363
- }
364
-
365
- ctx_type = type(ctx)
366
- if ctx_type in arithmetic_ops:
367
- op = arithmetic_ops[ctx_type]
368
- return Node(op, self.process_expression(ctx.expression(0)),
369
- self.process_expression(ctx.expression(1)))
370
-
371
- # 2. Handle single-child expression (grammar fall-through)
372
- if hasattr(ctx, 'expression') and callable(ctx.expression):
373
- child = ctx.expression()
374
- if child is not None:
375
- return self.process_expression(child)
376
-
377
- # 3. Delegate leaves to a specialized helper to reduce complexity
355
+ """Handle Additive, Multiplicative and Primary Expressions"""
356
+ # Top-level expression rule (expression: additiveExpression)
357
+ if isinstance(ctx, UVLPythonParser.ExpressionContext):
358
+ return self.process_expression(ctx.additiveExpression())
359
+ # Binary arithmetic operations (Add, Sub, Mul, Div)
360
+ if isinstance(ctx, (UVLPythonParser.AddExpressionContext,
361
+ UVLPythonParser.SubExpressionContext,
362
+ UVLPythonParser.MulExpressionContext,
363
+ UVLPythonParser.DivExpressionContext)):
364
+ return self._process_binary_expression(ctx)
365
+ # Pass-through: additiveExpression -> multiplicativeExpression
366
+ if isinstance(ctx, UVLPythonParser.MultiplicativeExprContext):
367
+ return self.process_expression(ctx.multiplicativeExpression())
368
+ # Pass-through: multiplicativeExpression -> primaryExpression
369
+ if isinstance(ctx, UVLPythonParser.PrimaryExpressionExpressionContext):
370
+ return self.process_expression(ctx.primaryExpression())
378
371
  return self._process_expression_leaves(ctx)
379
372
 
373
+ def _process_binary_expression(self, ctx: Any) -> Node:
374
+ """Handle binary arithmetic operations: Add, Sub, Mul, Div."""
375
+ if isinstance(ctx, UVLPythonParser.AddExpressionContext):
376
+ return Node(ASTOperation.ADD,
377
+ self.process_expression(ctx.additiveExpression()),
378
+ self.process_expression(ctx.multiplicativeExpression()))
379
+ if isinstance(ctx, UVLPythonParser.SubExpressionContext):
380
+ return Node(ASTOperation.SUB,
381
+ self.process_expression(ctx.additiveExpression()),
382
+ self.process_expression(ctx.multiplicativeExpression()))
383
+ if isinstance(ctx, UVLPythonParser.MulExpressionContext):
384
+ return Node(ASTOperation.MUL,
385
+ self.process_expression(ctx.multiplicativeExpression()),
386
+ self.process_expression(ctx.primaryExpression()))
387
+ return Node(ASTOperation.DIV,
388
+ self.process_expression(ctx.multiplicativeExpression()),
389
+ self.process_expression(ctx.primaryExpression()))
390
+
380
391
  def _process_expression_leaves(self, ctx: Any) -> Node:
381
392
  """Helper to process literal leaves and primary expressions."""
382
393
  if isinstance(ctx, UVLPythonParser.FloatLiteralExpressionContext):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flamapy-fm
3
- Version: 2.1.0.dev2
3
+ Version: 2.5.0.dev0
4
4
  Summary: flamapy-fm is a plugin to Flamapy module
5
5
  Author-email: Flamapy <flamapy@us.es>
6
6
  License-Expression: GPL-3.0-or-later
@@ -8,8 +8,8 @@ Project-URL: Homepage, https://github.com/flamapy/fm_metamodel
8
8
  Requires-Python: >=3.9
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
- Requires-Dist: flamapy-fw~=2.1.0.dev2
12
- Requires-Dist: uvlparser~=2.0.1.dev61
11
+ Requires-Dist: flamapy-fw~=2.5.0.dev0
12
+ Requires-Dist: uvlparser~=2.5.0.dev63
13
13
  Requires-Dist: afmparser~=1.0.3
14
14
  Provides-Extra: dev
15
15
  Requires-Dist: pytest; extra == "dev"
@@ -1,5 +1,5 @@
1
- flamapy-fw~=2.1.0.dev2
2
- uvlparser~=2.0.1.dev61
1
+ flamapy-fw~=2.5.0.dev0
2
+ uvlparser~=2.5.0.dev63
3
3
  afmparser~=1.0.3
4
4
 
5
5
  [dev]
@@ -4,15 +4,15 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "flamapy-fm"
7
- version = "2.1.0.dev2"
7
+ version = "2.5.0.dev0"
8
8
  description = "flamapy-fm is a plugin to Flamapy module"
9
9
  readme = "README.md"
10
10
  license = "GPL-3.0-or-later"
11
11
  authors = [{ name = "Flamapy", email = "flamapy@us.es" }]
12
12
  requires-python = ">=3.9"
13
13
  dependencies = [
14
- "flamapy-fw~=2.1.0.dev2",
15
- "uvlparser~=2.0.1.dev61",
14
+ "flamapy-fw~=2.5.0.dev0",
15
+ "uvlparser~=2.5.0.dev63",
16
16
  "afmparser~=1.0.3",
17
17
  ]
18
18
 
@@ -84,4 +84,4 @@ show_error_codes = true
84
84
  ignore_missing_imports = true
85
85
 
86
86
  # Warn about unreachable or redundant code
87
- warn_unreachable = true
87
+ warn_unreachable = true
File without changes