flamapy-sat 2.0.0.dev1__tar.gz → 2.0.0.dev6__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 (53) hide show
  1. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/PKG-INFO +1 -1
  2. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/models/pysat_diagnosis_model.py +16 -8
  3. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/__init__.py +2 -0
  4. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/checker.py +1 -1
  5. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/hsdag/hsdag.py +2 -2
  6. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/transformations/fm_to_diag_pysat.py +19 -10
  7. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/models/__init__.py +2 -0
  8. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/models/txtcnf_model.py +2 -2
  9. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/operations/pysat_metrics.py +8 -7
  10. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/operations/pysat_satisfiable_configuration.py +10 -9
  11. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/transformations/cnf_to_pysat.py +1 -1
  12. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy_sat.egg-info/PKG-INFO +1 -1
  13. flamapy-sat-2.0.0.dev6/flamapy_sat.egg-info/dependency_links.txt +1 -0
  14. flamapy-sat-2.0.0.dev6/flamapy_sat.egg-info/requires.txt +10 -0
  15. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/setup.py +13 -17
  16. flamapy-sat-2.0.0.dev1/flamapy_sat.egg-info/dependency_links.txt +0 -1
  17. flamapy-sat-2.0.0.dev1/flamapy_sat.egg-info/requires.txt +0 -10
  18. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/README.md +0 -0
  19. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/__init__.py +0 -0
  20. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/models/__init__.py +0 -0
  21. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/__init__.py +0 -0
  22. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/fastdiag.py +0 -0
  23. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/hsdag/__init__.py +0 -0
  24. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/hsdag/labeler/__init__.py +0 -0
  25. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/hsdag/labeler/fastdiag_labeler.py +0 -0
  26. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/hsdag/labeler/labeler.py +0 -0
  27. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/hsdag/labeler/quickxplain_labeler.py +0 -0
  28. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/hsdag/node.py +0 -0
  29. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/quickxplain.py +0 -0
  30. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/diagnosis/utils.py +0 -0
  31. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/pysat_abstract_identifier.py +0 -0
  32. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/pysat_conflict.py +0 -0
  33. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/operations/pysat_diagnosis.py +0 -0
  34. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_diagnosis_metamodel/transformations/__init__.py +0 -0
  35. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/__init__.py +0 -0
  36. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/models/pysat_model.py +0 -0
  37. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/operations/__init__.py +0 -0
  38. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/operations/pysat_commonality.py +0 -0
  39. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/operations/pysat_configurations.py +0 -0
  40. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/operations/pysat_configurations_number.py +0 -0
  41. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/operations/pysat_core_features.py +0 -0
  42. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/operations/pysat_dead_features.py +0 -0
  43. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/operations/pysat_false_optional_features.py +0 -0
  44. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/operations/pysat_filter.py +0 -0
  45. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/operations/pysat_sampling.py +0 -0
  46. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/operations/pysat_satisfiable.py +0 -0
  47. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/transformations/__init__.py +0 -0
  48. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/transformations/dimacs_reader.py +0 -0
  49. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/transformations/dimacs_writer.py +0 -0
  50. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy/metamodels/pysat_metamodel/transformations/fm_to_pysat.py +0 -0
  51. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy_sat.egg-info/SOURCES.txt +0 -0
  52. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/flamapy_sat.egg-info/top_level.txt +0 -0
  53. {flamapy-sat-2.0.0.dev1 → flamapy-sat-2.0.0.dev6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flamapy-sat
3
- Version: 2.0.0.dev1
3
+ Version: 2.0.0.dev6
4
4
  Summary: flamapy-sat is a plugin to flamapy module
5
5
  Home-page: https://github.com/flamapy/pysat_metamodel
6
6
  Author: Flamapy
@@ -3,6 +3,7 @@ from typing import List, Dict
3
3
  from flamapy.metamodels.configuration_metamodel.models import Configuration
4
4
 
5
5
  from flamapy.metamodels.pysat_metamodel.models import PySATModel
6
+ from flamapy.metamodels.fm_metamodel.models.feature_model import Feature
6
7
 
7
8
 
8
9
  class DiagnosisModel(PySATModel):
@@ -164,24 +165,31 @@ class DiagnosisModel(PySATModel):
164
165
 
165
166
  return id_assumption
166
167
 
168
+ def _convert_keys_to_features(self, configuration: 'Configuration') -> 'Configuration':
169
+ new_elements = {Feature(key) if isinstance(key, str)
170
+ else key: value for key, value
171
+ in configuration.elements.items()}
172
+ return Configuration(new_elements)
173
+
167
174
  def _prepare_assumptions_for_configuration(self, assumption: List[int],
168
175
  configuration: Configuration,
169
176
  id_assumption: int) -> int:
177
+ configuration = self._convert_keys_to_features(configuration)
170
178
  config = [feat.name for feat in configuration.elements]
171
179
  for feat in config:
172
180
  if feat not in self.variables.keys():
173
181
  raise KeyError(f'Feature {feat} is not in the model.')
174
182
 
175
- for feat in configuration.elements.items():
183
+ for feat, value in configuration.elements.items():
176
184
  desc = ''
177
185
  clause = []
178
186
 
179
- if feat[1]:
180
- desc = f'{feat[0].name} = true'
181
- clause = [self.variables[feat[0].name], -1 * id_assumption]
182
- elif not feat[1]:
183
- desc = f'{feat[0].name} = false'
184
- clause = [-1 * self.variables[feat[0].name], -1 * id_assumption]
187
+ if value:
188
+ desc = f'{feat.name} = true'
189
+ clause = [self.variables[feat.name], -1 * id_assumption]
190
+ else:
191
+ desc = f'{feat.name} = false'
192
+ clause = [-1 * self.variables[feat.name], -1 * id_assumption]
185
193
 
186
194
  assumption.append(id_assumption)
187
195
  self.set_kb.append(clause)
@@ -189,4 +197,4 @@ class DiagnosisModel(PySATModel):
189
197
 
190
198
  id_assumption += 1
191
199
 
192
- return id_assumption
200
+ return id_assumption
@@ -1,3 +1,5 @@
1
+ # pylint: disable=cyclic-import
2
+
1
3
  from .pysat_abstract_identifier import PySATAbstractIdentifier
2
4
  from .pysat_conflict import PySATConflict
3
5
  from .pysat_diagnosis import PySATDiagnosis
@@ -8,7 +8,7 @@ from pysat.solvers import Solver
8
8
 
9
9
 
10
10
  class ConsistencyChecker:
11
-
11
+
12
12
  def __init__(self, solver_name: str, set_kb: List[List[int]]) -> None:
13
13
  self.result = False
14
14
 
@@ -2,7 +2,7 @@
2
2
  A Java version of this implementation is available at:
3
3
  https://github.com/HiConfiT/hiconfit-core/blob/main/ca-cdr-package/src/main/java/at/tugraz/ist/ase/cacdr/algorithms/hs/HSDAG.java
4
4
  """
5
- from typing import List, Optional, Dict
5
+ from typing import List, Optional, Dict, Union
6
6
 
7
7
  from .labeler.labeler import IHSLabelable, LabelerType, AbstractHSParameters
8
8
  from .node import Node, NodeStatus
@@ -234,7 +234,7 @@ class HSDAG:
234
234
  labels.append(label)
235
235
  return labels
236
236
 
237
- def get_reusable_node(self, path_labels: List[int], arc_label: int) -> Node | None:
237
+ def get_reusable_node(self, path_labels: List[int], arc_label: int) -> Union[Node, None]:
238
238
  if len(path_labels) == 0:
239
239
  new_path_labels = [arc_label]
240
240
  else:
@@ -1,4 +1,4 @@
1
- from typing import Any, List
1
+ from typing import Any
2
2
 
3
3
  from flamapy.metamodels.fm_metamodel.models.feature_model import (
4
4
  FeatureModel,
@@ -23,11 +23,8 @@ class FmToDiagPysat(FmToPysat):
23
23
  def __init__(self, source_model: FeatureModel) -> None:
24
24
  super().__init__(source_model)
25
25
  self.destination_model = DiagnosisModel()
26
-
27
26
 
28
27
  def add_root(self, feature: Feature) -> None:
29
- #self.r_cnf.append([self.destination_model.variables.get(feature.name)])
30
-
31
28
  var = self.destination_model.variables.get(feature.name)
32
29
  if var is None:
33
30
  raise KeyError(f'Feature {feature.name} not found in the model')
@@ -35,9 +32,22 @@ class FmToDiagPysat(FmToPysat):
35
32
  self.destination_model.add_clause([var])
36
33
  self.destination_model.add_clause_to_map(str(feature), [[var]])
37
34
 
38
- def _store_constraint_relation(self, relation: Relation, clauses: List[List[int]]) -> None:
39
- for clause in clauses:
40
- self.destination_model.add_clause(clause)
35
+ #def _store_constraint_relation(self, relation: Relation, clauses: List[List[int]]) -> None:
36
+ # for clause in clauses:
37
+ # self.destination_model.add_clause(clause)
38
+ # self.destination_model.add_clause_to_map(str(relation), clauses)
39
+ def add_relation(self, relation: Relation) -> None:
40
+ if relation.is_mandatory():
41
+ clauses = self._add_mandatory_relation(relation)
42
+ elif relation.is_optional():
43
+ clauses = self._add_optional_relation(relation)
44
+ elif relation.is_or():
45
+ clauses = self._add_or_relation(relation)
46
+ elif relation.is_alternative():
47
+ clauses = self._add_alternative_relation(relation)
48
+ else:
49
+ clauses = self._add_constraint_relation(relation)
50
+ self._store_constraint_clauses(clauses)
41
51
  self.destination_model.add_clause_to_map(str(relation), clauses)
42
52
 
43
53
  def add_constraint(self, ctc: Constraint) -> None:
@@ -48,7 +58,7 @@ class FmToDiagPysat(FmToPysat):
48
58
  negated = True
49
59
 
50
60
  var = self.destination_model.get_variable(term)
51
-
61
+
52
62
  if negated:
53
63
  return -var
54
64
  return var
@@ -60,5 +70,4 @@ class FmToDiagPysat(FmToPysat):
60
70
  ctc_clauses.append(clause_variables)
61
71
  self.destination_model.add_clause(clause_variables)
62
72
 
63
- self.destination_model.add_clause_to_map(str(ctc), ctc_clauses)
64
-
73
+ self.destination_model.add_clause_to_map(str(ctc), ctc_clauses)
@@ -1,3 +1,5 @@
1
+ # pylint: disable=cyclic-import
2
+
1
3
  from .pysat_model import PySATModel
2
4
  from .txtcnf_model import (
3
5
  TextCNFModel,
@@ -201,8 +201,8 @@ def extract_variables(cnf_formula: str) -> list[str]:
201
201
  if ')' in clauses[len(clauses) - 1]:
202
202
  clauses[len(clauses) - 1] = clauses[len(clauses) - 1][:-1]
203
203
 
204
- for clause in clauses:
205
- tokens = flamapy.metamodels.pysat_metamodel.operations.diagnosis.utils.split(' ')
204
+ for _clause in clauses:
205
+ tokens = flamapy.metamodels.pysat_metamodel.operations.diagnosis.utils.split(' ') # type: ignore[name-defined] # pylint: disable=undefined-variable # noqa: F821, E501
206
206
  tokens = list(filter(lambda t: t != cnf_notation.value[CNFLogicConnective.OR], tokens))
207
207
  for feature in tokens:
208
208
  if feature == cnf_notation.value[CNFLogicConnective.NOT]:
@@ -7,7 +7,7 @@ from flamapy.metamodels.pysat_metamodel.models import PySATModel
7
7
  from flamapy.metamodels.pysat_metamodel import operations as sat_operations
8
8
 
9
9
 
10
- def metric_method(func: Callable) -> Callable:
10
+ def metric_method(func: Callable[..., Any]) -> Callable[..., Any]:
11
11
  """Decorator to mark a method as a metric method.
12
12
  It has the value of the measure, it can also have a size and a ratio.
13
13
  Example:
@@ -55,13 +55,14 @@ class PySATMetrics(Metrics):
55
55
  return [method() for method in metric_methods]
56
56
 
57
57
  @metric_method
58
- def valid(self) -> dict[str, Any]:
59
- """A feature model is valid if it represents at least one configuration."""
58
+ def satisfiable(self) -> dict[str, Any]:
59
+ """A feature model is satisfiable if it represents at least one configuration."""
60
60
  if self.model is None:
61
61
  raise FlamaException('Model not initialized.')
62
- name = "Valid (not void)"
63
- _valid = sat_operations.PySATValid().execute(self.model).get_result()
64
- result = self.construct_result(name=name, doc=self.valid.__doc__, result=_valid)
62
+ name = "Satisfiable"
63
+ _satisfiable = sat_operations.PySATSatisfiable().execute(self.model).get_result()
64
+ result = self.construct_result(name=name,
65
+ doc=self.satisfiable.__doc__, result=_satisfiable)
65
66
  return result
66
67
 
67
68
  @metric_method
@@ -154,7 +155,7 @@ class PySATMetrics(Metrics):
154
155
  if self.model is None:
155
156
  raise FlamaException('Model not initialized.')
156
157
  name = "Configurations"
157
- _configurations = sat_operations.PySATProducts().execute(self.model).get_result()
158
+ _configurations = sat_operations.PySATConfigurations().execute(self.model).get_result()
158
159
  result = self.construct_result(name=name,
159
160
  doc=self.configurations.__doc__,
160
161
  result=_configurations,
@@ -28,10 +28,10 @@ class PySATSatisfiableConfiguration(SatisfiableConfiguration):
28
28
 
29
29
  def execute(self, model: VariabilityModel) -> 'PySATSatisfiableConfiguration':
30
30
  sat_model = cast(PySATModel, model)
31
-
31
+
32
32
  for clause in sat_model.get_all_clauses(): # AC es conjunto de conjuntos
33
33
  self.solver.add_clause(clause) # añadimos la constraint
34
-
34
+
35
35
  if not self.is_full:
36
36
  assumptions = []
37
37
  for feature, selected in self.configuration.elements.items():
@@ -40,18 +40,19 @@ class PySATSatisfiableConfiguration(SatisfiableConfiguration):
40
40
  else:
41
41
  assumptions.append(-sat_model.variables[feature])
42
42
  else:
43
- missing_features = [feature for feature in self.configuration.elements.keys() if feature not in sat_model.variables.keys()]
44
-
43
+ missing_features = [feature for feature in self.configuration.elements.keys()
44
+ if feature not in sat_model.variables.keys()]
45
+
45
46
  if missing_features:
46
- print("The features that are missing are:", [feature for feature in missing_features])
47
- print("The feature model contains the following features:", list(sat_model.variables.keys()))
47
+ print("The features that are missing are:", list(missing_features))
48
+ print("The feature model contains the following features:",
49
+ list(sat_model.variables.keys()))
48
50
  self.result = False
49
51
  return self
50
-
51
52
 
52
53
  assumptions = []
53
54
  for feature in sat_model.features.values():
54
-
55
+
55
56
  if feature in self.configuration.elements.keys():
56
57
  assumptions.append(sat_model.variables[feature])
57
58
  else:
@@ -59,4 +60,4 @@ class PySATSatisfiableConfiguration(SatisfiableConfiguration):
59
60
 
60
61
  self.result = self.solver.solve(assumptions=assumptions)
61
62
  self.solver.delete()
62
- return self
63
+ return self
@@ -61,7 +61,7 @@ class CNFReader(TextToModel):
61
61
  clauses[len(clauses) - 1] = clauses[len(clauses) - 1][:-1]
62
62
 
63
63
  for _c in clauses:
64
- tokens = flamapy.metamodels.pysat_metamodel.operations.diagnosis.utils.split(' ')
64
+ tokens = flamapy.metamodels.pysat_metamodel.operations.diagnosis.utils.split(' ') # type: ignore[name-defined] # noqa: F821, E501
65
65
  tokens = list(filter(lambda t: t != cnf_notation.value[CNFLogicConnective.OR], tokens))
66
66
  logic_not = False
67
67
  cnf_clause = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flamapy-sat
3
- Version: 2.0.0.dev1
3
+ Version: 2.0.0.dev6
4
4
  Summary: flamapy-sat is a plugin to flamapy module
5
5
  Home-page: https://github.com/flamapy/pysat_metamodel
6
6
  Author: Flamapy
@@ -0,0 +1,10 @@
1
+ flamapy-fw==2.0.0.dev6
2
+ flamapy-fm==2.0.0.dev6
3
+ python-sat~=0.1.7.dev1
4
+
5
+ [dev]
6
+ pytest
7
+ pytest-mock
8
+ prospector
9
+ mypy
10
+ coverage
@@ -4,10 +4,19 @@ import setuptools
4
4
  with open("README.md", "r") as fh:
5
5
  long_description = fh.read()
6
6
 
7
+ def read_requirements(file):
8
+ with open(file, "r") as fh:
9
+ return fh.read().splitlines()
10
+
11
+ # Read requirements from the requirements.txt file
12
+ requirements = read_requirements("requirements.txt")
13
+
14
+ # Read development requirements from the dev-requirements.txt file
15
+ dev_requirements = read_requirements("requirements-dev.txt")
7
16
 
8
17
  setuptools.setup(
9
18
  name="flamapy-sat",
10
- version="2.0.0.dev1",
19
+ version="2.0.0.dev6",
11
20
  author="Flamapy",
12
21
  author_email="flamapy@us.es",
13
22
  description="flamapy-sat is a plugin to flamapy module",
@@ -21,21 +30,8 @@ setuptools.setup(
21
30
  "Operating System :: OS Independent",
22
31
  ],
23
32
  python_requires='>=3.9',
24
- install_requires=[
25
- 'flamapy-fw~=2.0.0.dev1',
26
- 'flamapy-fm~=2.0.0.dev1',
27
- 'python-sat>=0.1.7.dev1'
28
- ],
33
+ install_requires=requirements,
29
34
  extras_require={
30
- 'dev': [
31
- 'pytest',
32
- 'pytest-mock',
33
- 'prospector',
34
- 'mypy',
35
- 'coverage',
36
- ]
37
- },
38
- dependency_links=[
39
- 'flamapy~=2.0.0.dev1',
40
- ]
35
+ 'dev':dev_requirements
36
+ }
41
37
  )
@@ -1 +0,0 @@
1
- flamapy~=2.0.0.dev1
@@ -1,10 +0,0 @@
1
- flamapy-fw~=2.0.0.dev1
2
- flamapy-fm~=2.0.0.dev1
3
- python-sat>=0.1.7.dev1
4
-
5
- [dev]
6
- pytest
7
- pytest-mock
8
- prospector
9
- mypy
10
- coverage