flamapy-dnnf 2.6.0.dev6__tar.gz → 2.6.0.dev11__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 (22) hide show
  1. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/PKG-INFO +3 -4
  2. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/flamapy/metamodels/dnnf_metamodel/transformations/fm_to_dnnf.py +8 -12
  3. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/flamapy_dnnf.egg-info/PKG-INFO +3 -4
  4. flamapy_dnnf-2.6.0.dev11/flamapy_dnnf.egg-info/requires.txt +9 -0
  5. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/pyproject.toml +3 -4
  6. flamapy_dnnf-2.6.0.dev6/flamapy_dnnf.egg-info/requires.txt +0 -10
  7. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/LICENSE +0 -0
  8. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/README.md +0 -0
  9. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/flamapy/metamodels/dnnf_metamodel/__init__.py +0 -0
  10. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/flamapy/metamodels/dnnf_metamodel/models/__init__.py +0 -0
  11. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/flamapy/metamodels/dnnf_metamodel/models/dnnf_model.py +0 -0
  12. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/flamapy/metamodels/dnnf_metamodel/operations/__init__.py +0 -0
  13. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/flamapy/metamodels/dnnf_metamodel/operations/d4_runner.py +0 -0
  14. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/flamapy/metamodels/dnnf_metamodel/operations/dnnf_configurations_number.py +0 -0
  15. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/flamapy/metamodels/dnnf_metamodel/operations/dnnf_satisfiable.py +0 -0
  16. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/flamapy/metamodels/dnnf_metamodel/transformations/__init__.py +0 -0
  17. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/flamapy_dnnf.egg-info/SOURCES.txt +0 -0
  18. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/flamapy_dnnf.egg-info/dependency_links.txt +0 -0
  19. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/flamapy_dnnf.egg-info/top_level.txt +0 -0
  20. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/setup.cfg +0 -0
  21. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/setup.py +0 -0
  22. {flamapy_dnnf-2.6.0.dev6 → flamapy_dnnf-2.6.0.dev11}/tests/test_dnnf.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flamapy-dnnf
3
- Version: 2.6.0.dev6
3
+ Version: 2.6.0.dev11
4
4
  Summary: flamapy-dnnf is a plugin to flamapy providing exact analysis of feature models via d-DNNF knowledge compilation with the d4 compiler
5
5
  Author-email: Flamapy <flamapy@us.es>
6
6
  License-Expression: GPL-3.0-or-later
@@ -8,9 +8,8 @@ Project-URL: Homepage, https://github.com/flamapy/dnnf_metamodel
8
8
  Requires-Python: >=3.11
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
- Requires-Dist: flamapy-fw~=2.6.0.dev5
12
- Requires-Dist: flamapy-fm~=2.6.0.dev5
13
- Requires-Dist: flamapy-sat~=2.6.0.dev5
11
+ Requires-Dist: flamapy-fw~=2.6.0.dev11
12
+ Requires-Dist: flamapy-fm~=2.6.0.dev11
14
13
  Provides-Extra: dev
15
14
  Requires-Dist: pytest; extra == "dev"
16
15
  Requires-Dist: pytest-mock; extra == "dev"
@@ -3,16 +3,16 @@ import subprocess
3
3
  import tempfile
4
4
 
5
5
  from flamapy.core.transformations import ModelToModel
6
- from flamapy.metamodels.fm_metamodel.models import FeatureModel
7
- from flamapy.metamodels.pysat_metamodel.transformations import FmToPysat
6
+ from flamapy.metamodels.fm_metamodel.models import FeatureModel, ClauseSet
8
7
  from flamapy.metamodels.dnnf_metamodel.models import DDNNFModel, locate_d4
9
8
 
10
9
 
11
10
  class FmToDDNNF(ModelToModel):
12
11
  """Transform a feature model into a d-DNNF-backed model.
13
12
 
14
- Builds the CNF (reusing the SAT metamodel), writes it as DIMACS, and — when ``compile`` is
15
- set — invokes d4 to dump the compiled d-DNNF artifact. Exact queries run d4 on the DIMACS.
13
+ Builds the CNF via the feature-model ``ClauseSet`` (no SAT-solver dependency), writes it as
14
+ DIMACS, and — when ``compile`` is set — invokes d4 to dump the compiled d-DNNF artifact.
15
+ Exact queries run d4 on the DIMACS.
16
16
  """
17
17
 
18
18
  @staticmethod
@@ -35,12 +35,8 @@ class FmToDDNNF(ModelToModel):
35
35
  self.destination_model = DDNNFModel()
36
36
 
37
37
  def transform(self) -> DDNNFModel:
38
- if self.cnf_method == 'distributive':
39
- sat_model = FmToPysat(self.source_model).transform()
40
- else:
41
- sat_model = FmToPysat(self.source_model, cnf_method=self.cnf_method).transform()
42
-
43
- clauses = [list(clause) for clause in sat_model.get_all_clauses().clauses]
38
+ clause_set = ClauseSet.from_feature_model(self.source_model, cnf_method=self.cnf_method)
39
+ clauses = [list(clause) for clause in clause_set.clauses]
44
40
  var_count = max((abs(literal) for clause in clauses for literal in clause), default=1)
45
41
 
46
42
  dimacs_fd, dimacs_path = tempfile.mkstemp(suffix='.cnf', prefix='flamapy_dnnf_')
@@ -52,8 +48,8 @@ class FmToDDNNF(ModelToModel):
52
48
  model = self.destination_model
53
49
  model.dimacs_path = dimacs_path
54
50
  model.var_count = var_count
55
- model.variables = dict(sat_model.variables)
56
- model.features = dict(sat_model.features)
51
+ model.variables = dict(clause_set.variables)
52
+ model.features = dict(clause_set.features)
57
53
  model.original_model = self.source_model
58
54
 
59
55
  if self.compile:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flamapy-dnnf
3
- Version: 2.6.0.dev6
3
+ Version: 2.6.0.dev11
4
4
  Summary: flamapy-dnnf is a plugin to flamapy providing exact analysis of feature models via d-DNNF knowledge compilation with the d4 compiler
5
5
  Author-email: Flamapy <flamapy@us.es>
6
6
  License-Expression: GPL-3.0-or-later
@@ -8,9 +8,8 @@ Project-URL: Homepage, https://github.com/flamapy/dnnf_metamodel
8
8
  Requires-Python: >=3.11
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
- Requires-Dist: flamapy-fw~=2.6.0.dev5
12
- Requires-Dist: flamapy-fm~=2.6.0.dev5
13
- Requires-Dist: flamapy-sat~=2.6.0.dev5
11
+ Requires-Dist: flamapy-fw~=2.6.0.dev11
12
+ Requires-Dist: flamapy-fm~=2.6.0.dev11
14
13
  Provides-Extra: dev
15
14
  Requires-Dist: pytest; extra == "dev"
16
15
  Requires-Dist: pytest-mock; extra == "dev"
@@ -0,0 +1,9 @@
1
+ flamapy-fw~=2.6.0.dev11
2
+ flamapy-fm~=2.6.0.dev11
3
+
4
+ [dev]
5
+ pytest
6
+ pytest-mock
7
+ prospector
8
+ mypy
9
+ coverage
@@ -4,16 +4,15 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "flamapy-dnnf"
7
- version = "2.6.0.dev6"
7
+ version = "2.6.0.dev11"
8
8
  description = "flamapy-dnnf is a plugin to flamapy providing exact analysis of feature models via d-DNNF knowledge compilation with the d4 compiler"
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.11"
13
13
  dependencies = [
14
- "flamapy-fw~=2.6.0.dev5",
15
- "flamapy-fm~=2.6.0.dev5",
16
- "flamapy-sat~=2.6.0.dev5",
14
+ "flamapy-fw~=2.6.0.dev11",
15
+ "flamapy-fm~=2.6.0.dev11",
17
16
  ]
18
17
 
19
18
  [project.optional-dependencies]
@@ -1,10 +0,0 @@
1
- flamapy-fw~=2.6.0.dev5
2
- flamapy-fm~=2.6.0.dev5
3
- flamapy-sat~=2.6.0.dev5
4
-
5
- [dev]
6
- pytest
7
- pytest-mock
8
- prospector
9
- mypy
10
- coverage