flamapy-fw 2.5.0.dev0__tar.gz → 2.6.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 (60) hide show
  1. flamapy_fw-2.6.0.dev0/PKG-INFO +32 -0
  2. flamapy_fw-2.6.0.dev0/README.md +14 -0
  3. flamapy_fw-2.6.0.dev0/flamapy/core/models/__init__.py +4 -0
  4. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/models/ast.py +29 -2
  5. flamapy_fw-2.6.0.dev0/flamapy_fw.egg-info/PKG-INFO +32 -0
  6. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/pyproject.toml +1 -1
  7. flamapy_fw-2.5.0.dev0/PKG-INFO +0 -43
  8. flamapy_fw-2.5.0.dev0/README.md +0 -25
  9. flamapy_fw-2.5.0.dev0/flamapy/core/models/__init__.py +0 -4
  10. flamapy_fw-2.5.0.dev0/flamapy_fw.egg-info/PKG-INFO +0 -43
  11. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/LICENSE +0 -0
  12. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/__init__.py +0 -0
  13. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/config.py +0 -0
  14. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/discover.py +0 -0
  15. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/exceptions.py +0 -0
  16. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/models/variability_model.py +0 -0
  17. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/__init__.py +0 -0
  18. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/abstract_operation.py +0 -0
  19. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/atomic_sets.py +0 -0
  20. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/average_branching_factor.py +0 -0
  21. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/commonality.py +0 -0
  22. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/configurations.py +0 -0
  23. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/configurations_number.py +0 -0
  24. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/core_features.py +0 -0
  25. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/count_leafs.py +0 -0
  26. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/dead_features.py +0 -0
  27. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/error_detection.py +0 -0
  28. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/error_diagnosis.py +0 -0
  29. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/estimated_configurations_number.py +0 -0
  30. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/false_optional_features.py +0 -0
  31. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/filter.py +0 -0
  32. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/metrics_operation.py +0 -0
  33. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/sampling.py +0 -0
  34. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/satisfiable.py +0 -0
  35. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/satisfiable_configuration.py +0 -0
  36. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/operations/variability.py +0 -0
  37. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/plugins.py +0 -0
  38. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/transformations/__init__.py +0 -0
  39. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/transformations/abstract_transformation.py +0 -0
  40. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/transformations/model_to_model.py +0 -0
  41. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/transformations/model_to_text.py +0 -0
  42. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/transformations/text_to_model.py +0 -0
  43. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/core/utils.py +0 -0
  44. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/metamodels/configuration_metamodel/__init__.py +0 -0
  45. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/metamodels/configuration_metamodel/models/__init__.py +0 -0
  46. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/metamodels/configuration_metamodel/models/configuration.py +0 -0
  47. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/metamodels/configuration_metamodel/transformations/__init__.py +0 -0
  48. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/metamodels/configuration_metamodel/transformations/configuration_basic_reader.py +0 -0
  49. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/metamodels/configuration_metamodel/transformations/configuration_basic_writer.py +0 -0
  50. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/metamodels/configuration_metamodel/transformations/configuration_json_reader.py +0 -0
  51. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/metamodels/configuration_metamodel/transformations/configuration_json_writer.py +0 -0
  52. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/metamodels/configuration_metamodel/transformations/uvls_json_reader.py +0 -0
  53. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy/metamodels/configuration_metamodel/transformations/uvls_json_writer.py +0 -0
  54. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy_fw.egg-info/SOURCES.txt +0 -0
  55. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy_fw.egg-info/dependency_links.txt +0 -0
  56. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy_fw.egg-info/entry_points.txt +0 -0
  57. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy_fw.egg-info/requires.txt +0 -0
  58. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/flamapy_fw.egg-info/top_level.txt +0 -0
  59. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/setup.cfg +0 -0
  60. {flamapy_fw-2.5.0.dev0 → flamapy_fw-2.6.0.dev0}/setup.py +0 -0
@@ -0,0 +1,32 @@
1
+ Metadata-Version: 2.4
2
+ Name: flamapy-fw
3
+ Version: 2.6.0.dev0
4
+ Summary: Flamapy is a Python-based AAFM framework that takes into consideration previous AAFM tool designs and enables multi-solver and multi-metamodel support for the integration of AAFM tooling on the Python ecosystem.
5
+ Author-email: Flamapy <flamapy@us.es>
6
+ License-Expression: GPL-3.0-or-later
7
+ Project-URL: Homepage, https://github.com/flamapy/core
8
+ Requires-Python: >=3.9
9
+ Description-Content-Type: text/markdown
10
+ License-File: LICENSE
11
+ Provides-Extra: dev
12
+ Requires-Dist: pytest; extra == "dev"
13
+ Requires-Dist: pytest-mock; extra == "dev"
14
+ Requires-Dist: prospector; extra == "dev"
15
+ Requires-Dist: mypy; extra == "dev"
16
+ Requires-Dist: coverage; extra == "dev"
17
+ Dynamic: license-file
18
+
19
+ # flamapy-fw
20
+
21
+ The core framework of [flamapy](https://flamapy.org): the plugin-discovery
22
+ mechanism and the base classes (operations, transformations, variability models)
23
+ that every flamapy metamodel plugin builds on. It contains no analysis logic by
24
+ itself.
25
+
26
+ **Documentation:** https://docs.flamapy.org/framework
27
+
28
+ ## Installation
29
+
30
+ ```bash
31
+ pip install flamapy-fw
32
+ ```
@@ -0,0 +1,14 @@
1
+ # flamapy-fw
2
+
3
+ The core framework of [flamapy](https://flamapy.org): the plugin-discovery
4
+ mechanism and the base classes (operations, transformations, variability models)
5
+ that every flamapy metamodel plugin builds on. It contains no analysis logic by
6
+ itself.
7
+
8
+ **Documentation:** https://docs.flamapy.org/framework
9
+
10
+ ## Installation
11
+
12
+ ```bash
13
+ pip install flamapy-fw
14
+ ```
@@ -0,0 +1,4 @@
1
+ from .variability_model import VariabilityModel, VariabilityElement # pylint: disable=cyclic-import
2
+ from .ast import AST, ASTOperation, NodeType # pylint: disable=cyclic-import
3
+
4
+ __all__ = ["AST", "ASTOperation", "NodeType", "VariabilityElement", "VariabilityModel"]
@@ -1,4 +1,4 @@
1
- from typing import Any
1
+ from typing import Any, Optional
2
2
  from enum import Enum
3
3
 
4
4
 
@@ -69,11 +69,25 @@ AGGREGATION_OPERATORS = [
69
69
  ]
70
70
 
71
71
 
72
+ class NodeType(Enum):
73
+ """Semantic type of a leaf node in the AST."""
74
+ FEATURE = "Feature"
75
+ LITERAL = "Literal"
76
+ OPERATOR = "Operator"
77
+
78
+
72
79
  class Node:
73
- def __init__(self, data: Any, left: "Node" = None, right: "Node" = None): # type: ignore
80
+ def __init__(
81
+ self,
82
+ data: Any,
83
+ left: "Node" = None, # type: ignore[assignment]
84
+ right: "Node" = None, # type: ignore[assignment]
85
+ node_type: Optional[NodeType] = None,
86
+ ):
74
87
  self.data = data
75
88
  self.left = left
76
89
  self.right = right
90
+ self.node_type = node_type
77
91
 
78
92
  def is_term(self) -> bool:
79
93
  return not self.is_op()
@@ -93,6 +107,19 @@ class Node:
93
107
  def is_aggregate_op(self) -> bool:
94
108
  return self.is_op() and self.data in AGGREGATION_OPERATORS
95
109
 
110
+ def is_feature(self) -> bool:
111
+ """Return True if this node is explicitly marked as a feature reference."""
112
+ return self.node_type == NodeType.FEATURE
113
+
114
+ def is_literal(self) -> bool:
115
+ """Return True if this node is a literal value (not a feature reference).
116
+
117
+ Falls back to a type-based check for nodes without an explicit node_type.
118
+ """
119
+ if self.node_type is not None:
120
+ return self.node_type == NodeType.LITERAL
121
+ return isinstance(self.data, (int, float))
122
+
96
123
  def __str__(self) -> str:
97
124
  data = self.data.value if self.is_op() else str(self.data)
98
125
  if self.left and self.right:
@@ -0,0 +1,32 @@
1
+ Metadata-Version: 2.4
2
+ Name: flamapy-fw
3
+ Version: 2.6.0.dev0
4
+ Summary: Flamapy is a Python-based AAFM framework that takes into consideration previous AAFM tool designs and enables multi-solver and multi-metamodel support for the integration of AAFM tooling on the Python ecosystem.
5
+ Author-email: Flamapy <flamapy@us.es>
6
+ License-Expression: GPL-3.0-or-later
7
+ Project-URL: Homepage, https://github.com/flamapy/core
8
+ Requires-Python: >=3.9
9
+ Description-Content-Type: text/markdown
10
+ License-File: LICENSE
11
+ Provides-Extra: dev
12
+ Requires-Dist: pytest; extra == "dev"
13
+ Requires-Dist: pytest-mock; extra == "dev"
14
+ Requires-Dist: prospector; extra == "dev"
15
+ Requires-Dist: mypy; extra == "dev"
16
+ Requires-Dist: coverage; extra == "dev"
17
+ Dynamic: license-file
18
+
19
+ # flamapy-fw
20
+
21
+ The core framework of [flamapy](https://flamapy.org): the plugin-discovery
22
+ mechanism and the base classes (operations, transformations, variability models)
23
+ that every flamapy metamodel plugin builds on. It contains no analysis logic by
24
+ itself.
25
+
26
+ **Documentation:** https://docs.flamapy.org/framework
27
+
28
+ ## Installation
29
+
30
+ ```bash
31
+ pip install flamapy-fw
32
+ ```
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "flamapy-fw"
7
- version = "2.5.0.dev0"
7
+ version = "2.6.0.dev0"
8
8
  description = "Flamapy is a Python-based AAFM framework that takes into consideration previous AAFM tool designs and enables multi-solver and multi-metamodel support for the integration of AAFM tooling on the Python ecosystem."
9
9
  readme = "README.md"
10
10
  license = "GPL-3.0-or-later"
@@ -1,43 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: flamapy-fw
3
- Version: 2.5.0.dev0
4
- Summary: Flamapy is a Python-based AAFM framework that takes into consideration previous AAFM tool designs and enables multi-solver and multi-metamodel support for the integration of AAFM tooling on the Python ecosystem.
5
- Author-email: Flamapy <flamapy@us.es>
6
- License-Expression: GPL-3.0-or-later
7
- Project-URL: Homepage, https://github.com/flamapy/core
8
- Requires-Python: >=3.9
9
- Description-Content-Type: text/markdown
10
- License-File: LICENSE
11
- Provides-Extra: dev
12
- Requires-Dist: pytest; extra == "dev"
13
- Requires-Dist: pytest-mock; extra == "dev"
14
- Requires-Dist: prospector; extra == "dev"
15
- Requires-Dist: mypy; extra == "dev"
16
- Requires-Dist: coverage; extra == "dev"
17
- Dynamic: license-file
18
-
19
- # Flamapy
20
- Flamapy is a Python-based AAFM framework that takes into consideration previous AAFM tool designs and enables multi-solver and multi-metamodel support for the integration of AAFM tooling on the Python ecosystem.
21
-
22
- The main features of the framework are:
23
- * Easy to extend by enabling the creation of new plugins following a semi-automatic generator approach.
24
- * Support multiple variability models. Currently, it provides support for cardinality-based feature models. However, it is easy to integrate others such as attributed feature models
25
- * Support multiple solvers. Currently, it provides support for the PySAT metasolver, which enables more than ten different solvers.
26
- * Support multiple operations. It is developed, having in mind multi-model operations such as those depicted by Familiar and single-model operations.
27
-
28
- ## Available plugins
29
- [flamapy](https://github.com/flamapy/flamapy). This is a meta-package that installs all plugins for feature modelling analysis and the CLI and Python interfaces.
30
- [flamapy-fm](https://github.com/flamapy/fm_metamodel) This is a plugin that provides support for feature modelling. Include several readers/writers from different formats.
31
- [flamapy-sat](https://github.com/flamapy/pysat_metamodel) This plugin enable different analysis operations that require sat as backend.
32
- [flamapy-bdd](https://github.com/flamapy/bdd_metamodel) This plugin enable different analysis operations that require bdd as backend.
33
-
34
- ## Documentation
35
-
36
- All the proyect related documentation can be found in wiki format at [the tool website](https://flamapy.github.io/)
37
-
38
- ## Changelog
39
- Detailed changes for each release are documented in the [release notes](https://github.com/diverso-lab/core/releases)
40
-
41
- ## Contributing
42
-
43
- See [CONTRIBUTING.md](https://github.com/diverso-lab/core/blob/master/CONTRIBUTING.md)
@@ -1,25 +0,0 @@
1
- # Flamapy
2
- Flamapy is a Python-based AAFM framework that takes into consideration previous AAFM tool designs and enables multi-solver and multi-metamodel support for the integration of AAFM tooling on the Python ecosystem.
3
-
4
- The main features of the framework are:
5
- * Easy to extend by enabling the creation of new plugins following a semi-automatic generator approach.
6
- * Support multiple variability models. Currently, it provides support for cardinality-based feature models. However, it is easy to integrate others such as attributed feature models
7
- * Support multiple solvers. Currently, it provides support for the PySAT metasolver, which enables more than ten different solvers.
8
- * Support multiple operations. It is developed, having in mind multi-model operations such as those depicted by Familiar and single-model operations.
9
-
10
- ## Available plugins
11
- [flamapy](https://github.com/flamapy/flamapy). This is a meta-package that installs all plugins for feature modelling analysis and the CLI and Python interfaces.
12
- [flamapy-fm](https://github.com/flamapy/fm_metamodel) This is a plugin that provides support for feature modelling. Include several readers/writers from different formats.
13
- [flamapy-sat](https://github.com/flamapy/pysat_metamodel) This plugin enable different analysis operations that require sat as backend.
14
- [flamapy-bdd](https://github.com/flamapy/bdd_metamodel) This plugin enable different analysis operations that require bdd as backend.
15
-
16
- ## Documentation
17
-
18
- All the proyect related documentation can be found in wiki format at [the tool website](https://flamapy.github.io/)
19
-
20
- ## Changelog
21
- Detailed changes for each release are documented in the [release notes](https://github.com/diverso-lab/core/releases)
22
-
23
- ## Contributing
24
-
25
- See [CONTRIBUTING.md](https://github.com/diverso-lab/core/blob/master/CONTRIBUTING.md)
@@ -1,4 +0,0 @@
1
- from .variability_model import VariabilityModel, VariabilityElement # pylint: disable=cyclic-import
2
- from .ast import AST, ASTOperation # pylint: disable=cyclic-import
3
-
4
- __all__ = ["AST", "ASTOperation", "VariabilityElement", "VariabilityModel"]
@@ -1,43 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: flamapy-fw
3
- Version: 2.5.0.dev0
4
- Summary: Flamapy is a Python-based AAFM framework that takes into consideration previous AAFM tool designs and enables multi-solver and multi-metamodel support for the integration of AAFM tooling on the Python ecosystem.
5
- Author-email: Flamapy <flamapy@us.es>
6
- License-Expression: GPL-3.0-or-later
7
- Project-URL: Homepage, https://github.com/flamapy/core
8
- Requires-Python: >=3.9
9
- Description-Content-Type: text/markdown
10
- License-File: LICENSE
11
- Provides-Extra: dev
12
- Requires-Dist: pytest; extra == "dev"
13
- Requires-Dist: pytest-mock; extra == "dev"
14
- Requires-Dist: prospector; extra == "dev"
15
- Requires-Dist: mypy; extra == "dev"
16
- Requires-Dist: coverage; extra == "dev"
17
- Dynamic: license-file
18
-
19
- # Flamapy
20
- Flamapy is a Python-based AAFM framework that takes into consideration previous AAFM tool designs and enables multi-solver and multi-metamodel support for the integration of AAFM tooling on the Python ecosystem.
21
-
22
- The main features of the framework are:
23
- * Easy to extend by enabling the creation of new plugins following a semi-automatic generator approach.
24
- * Support multiple variability models. Currently, it provides support for cardinality-based feature models. However, it is easy to integrate others such as attributed feature models
25
- * Support multiple solvers. Currently, it provides support for the PySAT metasolver, which enables more than ten different solvers.
26
- * Support multiple operations. It is developed, having in mind multi-model operations such as those depicted by Familiar and single-model operations.
27
-
28
- ## Available plugins
29
- [flamapy](https://github.com/flamapy/flamapy). This is a meta-package that installs all plugins for feature modelling analysis and the CLI and Python interfaces.
30
- [flamapy-fm](https://github.com/flamapy/fm_metamodel) This is a plugin that provides support for feature modelling. Include several readers/writers from different formats.
31
- [flamapy-sat](https://github.com/flamapy/pysat_metamodel) This plugin enable different analysis operations that require sat as backend.
32
- [flamapy-bdd](https://github.com/flamapy/bdd_metamodel) This plugin enable different analysis operations that require bdd as backend.
33
-
34
- ## Documentation
35
-
36
- All the proyect related documentation can be found in wiki format at [the tool website](https://flamapy.github.io/)
37
-
38
- ## Changelog
39
- Detailed changes for each release are documented in the [release notes](https://github.com/diverso-lab/core/releases)
40
-
41
- ## Contributing
42
-
43
- See [CONTRIBUTING.md](https://github.com/diverso-lab/core/blob/master/CONTRIBUTING.md)
File without changes