d4Solver 0.1.0__cp313-cp313-win_amd64.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.
- d4solver-0.1.0.dist-info/DELVEWHEEL +2 -0
- d4solver-0.1.0.dist-info/METADATA +225 -0
- d4solver-0.1.0.dist-info/RECORD +160 -0
- d4solver-0.1.0.dist-info/WHEEL +5 -0
- d4solver.libs/gmp-10-521f5d57a531da7f2ddd75a64634bf47.dll +0 -0
- d4solver.libs/gmpxx-4-1aec0d72b737c81b6397e2967c9be349.dll +0 -0
- d4solver.libs/msvcp140-484f56d9de72c048820300919dc49e56.dll +0 -0
- include/__init__.py +10 -0
- include/optree/EnumMetadata.hpp +63 -0
- include/optree/Option.hpp +198 -0
- include/optree/OptionBase.hpp +46 -0
- include/optree/OptionGroup.hpp +75 -0
- include/optree/OptionJson.hpp +257 -0
- include/optree/OptionRegistry.hpp +352 -0
- include/py-d4-standard/ActivityManager.hpp +33 -0
- include/py-d4-standard/Alg.hpp +82 -0
- include/py-d4-standard/Alloc.hpp +128 -0
- include/py-d4-standard/AndGatesExtractor.hpp +51 -0
- include/py-d4-standard/AtMost1Extractor.hpp +67 -0
- include/py-d4-standard/BadBehaviourException.hpp +48 -0
- include/py-d4-standard/BranchingHeuristic.hpp +221 -0
- include/py-d4-standard/BranchingHeuristicClassic.hpp +70 -0
- include/py-d4-standard/BranchingHeuristicHybridPartialClassic.hpp +92 -0
- include/py-d4-standard/BranchingHeuristicLargeArity.hpp +76 -0
- include/py-d4-standard/BucketAllocator.hpp +112 -0
- include/py-d4-standard/BucketException.hpp +48 -0
- include/py-d4-standard/BucketInConstruction.hpp +69 -0
- include/py-d4-standard/BucketManager.hpp +97 -0
- include/py-d4-standard/BucketSortInfo.hpp +45 -0
- include/py-d4-standard/BufferRead.hpp +172 -0
- include/py-d4-standard/CacheCleaningExpectation.hpp +155 -0
- include/py-d4-standard/CacheCleaningManager.hpp +81 -0
- include/py-d4-standard/CacheCleaningNone.hpp +48 -0
- include/py-d4-standard/CacheList.hpp +185 -0
- include/py-d4-standard/CacheManager.hpp +253 -0
- include/py-d4-standard/CacheNoCollision.hpp +142 -0
- include/py-d4-standard/CachedBucket.hpp +70 -0
- include/py-d4-standard/CircuitManager.hpp +94 -0
- include/py-d4-standard/CircuitManagerDyn.hpp +56 -0
- include/py-d4-standard/CircuitWithCnfManager.hpp +55 -0
- include/py-d4-standard/ClauseInfo.hpp +32 -0
- include/py-d4-standard/CnfManager.hpp +228 -0
- include/py-d4-standard/CnfManagerDyn.hpp +182 -0
- include/py-d4-standard/CnfManagerDynBlockedCl.hpp +81 -0
- include/py-d4-standard/CnfManagerDynPure.hpp +70 -0
- include/py-d4-standard/Counter.hpp +54 -0
- include/py-d4-standard/DataBranch.hpp +37 -0
- include/py-d4-standard/DataInfo.hpp +74 -0
- include/py-d4-standard/DataOccurrence.hpp +114 -0
- include/py-d4-standard/DpllStyleMethod.hpp +544 -0
- include/py-d4-standard/EnumMetadata.hpp +25 -0
- include/py-d4-standard/EquivExtractor.hpp +43 -0
- include/py-d4-standard/ErrorCode.hpp +28 -0
- include/py-d4-standard/ExistRandomExist.hpp +1122 -0
- include/py-d4-standard/FactoryException.hpp +48 -0
- include/py-d4-standard/FormulaManager.hpp +272 -0
- include/py-d4-standard/FormulaStore.hpp +48 -0
- include/py-d4-standard/FormulaStoreCnf.hpp +96 -0
- include/py-d4-standard/FormulaStoreCnfCl.hpp +95 -0
- include/py-d4-standard/FormulaStoreCnfCombi.hpp +52 -0
- include/py-d4-standard/FormulaStoreCnfIndex.hpp +44 -0
- include/py-d4-standard/FormulaStoreCnfSym.hpp +91 -0
- include/py-d4-standard/Graph.hpp +88 -0
- include/py-d4-standard/GraphExtractor.hpp +71 -0
- include/py-d4-standard/GraphExtractorCircuit.hpp +41 -0
- include/py-d4-standard/GraphExtractorCircuitPrimal.hpp +44 -0
- include/py-d4-standard/GraphExtractorCnf.hpp +49 -0
- include/py-d4-standard/GraphExtractorCnfPrimal.hpp +46 -0
- include/py-d4-standard/HashString.hpp +39 -0
- include/py-d4-standard/Heap.hpp +145 -0
- include/py-d4-standard/HyperEdge.hpp +56 -0
- include/py-d4-standard/HyperGraph.hpp +71 -0
- include/py-d4-standard/HyperGraphExtractor.hpp +100 -0
- include/py-d4-standard/HyperGraphExtractorCnfDual.hpp +70 -0
- include/py-d4-standard/IntTypes.hpp +42 -0
- include/py-d4-standard/Map.hpp +192 -0
- include/py-d4-standard/MaxSharpSAT.hpp +939 -0
- include/py-d4-standard/MaxT.hpp +924 -0
- include/py-d4-standard/MemoryStat.hpp +136 -0
- include/py-d4-standard/MethodManager.hpp +76 -0
- include/py-d4-standard/MinSharpSAT.hpp +629 -0
- include/py-d4-standard/MpzTypes.hpp +31 -0
- include/py-d4-standard/NodeException.hpp +48 -0
- include/py-d4-standard/Option.hpp +8 -0
- include/py-d4-standard/OptionBase.hpp +7 -0
- include/py-d4-standard/OptionBranchingHeuristic.hpp +147 -0
- include/py-d4-standard/OptionBucketManager.hpp +73 -0
- include/py-d4-standard/OptionCacheCleaningManager.hpp +45 -0
- include/py-d4-standard/OptionCacheManager.hpp +50 -0
- include/py-d4-standard/OptionDpllStyleMethod.hpp +82 -0
- include/py-d4-standard/OptionEREMethod.hpp +85 -0
- include/py-d4-standard/OptionException.hpp +48 -0
- include/py-d4-standard/OptionFormulaManager.hpp +82 -0
- include/py-d4-standard/OptionGroup.hpp +8 -0
- include/py-d4-standard/OptionMaxSharpSatMethod.hpp +73 -0
- include/py-d4-standard/OptionMaxTMethod.hpp +78 -0
- include/py-d4-standard/OptionMethodManager.hpp +38 -0
- include/py-d4-standard/OptionMinSharpSatMethod.hpp +73 -0
- include/py-d4-standard/OptionOperationManager.hpp +64 -0
- include/py-d4-standard/OptionPartialOrderHeuristic.hpp +136 -0
- include/py-d4-standard/OptionProjMcMethod.hpp +68 -0
- include/py-d4-standard/OptionQbfCounter.hpp +64 -0
- include/py-d4-standard/OptionRegistry.hpp +7 -0
- include/py-d4-standard/OptionRoot.hpp +43 -0
- include/py-d4-standard/OptionSolver.hpp +83 -0
- include/py-d4-standard/Options.hpp +385 -0
- include/py-d4-standard/ParserException.hpp +48 -0
- include/py-d4-standard/PartialOrderHeuristic.hpp +74 -0
- include/py-d4-standard/PartialOrderHeuristicGiven.hpp +64 -0
- include/py-d4-standard/PartialOrderHeuristicNone.hpp +32 -0
- include/py-d4-standard/PartialOrderHeuristicTreeDecomp.hpp +74 -0
- include/py-d4-standard/PartitionerManager.hpp +73 -0
- include/py-d4-standard/PartitionerPatoh.hpp +45 -0
- include/py-d4-standard/PhaseHeuristic.hpp +41 -0
- include/py-d4-standard/PhaseHeuristicFalse.hpp +28 -0
- include/py-d4-standard/PhaseHeuristicOccurrence.hpp +34 -0
- include/py-d4-standard/PhaseHeuristicPolarity.hpp +34 -0
- include/py-d4-standard/PhaseHeuristicTrue.hpp +28 -0
- include/py-d4-standard/PolarityManager.hpp +29 -0
- include/py-d4-standard/ProblemManager.hpp +309 -0
- include/py-d4-standard/ProblemTypes.hpp +136 -0
- include/py-d4-standard/ProjMCMethod.hpp +682 -0
- include/py-d4-standard/QbfCounter.hpp +510 -0
- include/py-d4-standard/Queue.hpp +61 -0
- include/py-d4-standard/ScoringMethod.hpp +51 -0
- include/py-d4-standard/ScoringMethodDlcs.hpp +33 -0
- include/py-d4-standard/ScoringMethodJwts.hpp +33 -0
- include/py-d4-standard/ScoringMethodMom.hpp +33 -0
- include/py-d4-standard/ScoringMethodVsads.hpp +37 -0
- include/py-d4-standard/ScoringMethodVsids.hpp +33 -0
- include/py-d4-standard/SemiringConcept.hpp +58 -0
- include/py-d4-standard/Solver.hpp +947 -0
- include/py-d4-standard/SolverTypes.hpp +601 -0
- include/py-d4-standard/Sort.hpp +96 -0
- include/py-d4-standard/TmpEntry.hpp +47 -0
- include/py-d4-standard/Translator.hpp +113 -0
- include/py-d4-standard/TreeDecomposition.hpp +271 -0
- include/py-d4-standard/TreeDecompositionPartition.hpp +61 -0
- include/py-d4-standard/TreeDecompositionTreeWidth.hpp +70 -0
- include/py-d4-standard/TreeDecompositioner.hpp +75 -0
- include/py-d4-standard/TreeDecompositionerFlowCutter.hpp +73 -0
- include/py-d4-standard/TreeDecompositionerHtd.hpp +58 -0
- include/py-d4-standard/Vec.hpp +156 -0
- include/py-d4-standard/WrapperCircuitGlucose.hpp +33 -0
- include/py-d4-standard/WrapperCircuitMinisat.hpp +30 -0
- include/py-d4-standard/WrapperGlucose.hpp +76 -0
- include/py-d4-standard/WrapperMinisat.hpp +77 -0
- include/py-d4-standard/WrapperSolver.hpp +113 -0
- include/py-d4-standard/XAlloc.hpp +43 -0
- lib/__init__.py +10 -0
- lib/d4.lib +0 -0
- py_d4/__init__.py +76 -0
- py_d4/_py_d4.cp313-win_amd64.pyd +0 -0
- py_d4/_py_d4.pyi +551 -0
- py_d4/options.py +27 -0
- py_d4/py.typed +1 -0
- share/__init__.py +10 -0
- share/cmake/optree/optreeConfig.cmake +1 -0
- share/cmake/optree/optreeConfigVersion.cmake +65 -0
- share/cmake/optree/optreeTargets.cmake +106 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
Version: 1.13.0
|
|
2
|
+
Arguments: ['C:\\Users\\jmcla\\AppData\\Local\\Temp\\cibw-run-okvfe56f\\cp313-win_amd64\\build\\venv\\Scripts\\delvewheel', 'repair', '--add-path', 'C:\\vcpkg\\installed\\x64-windows\\bin', '-w', 'C:\\Users\\jmcla\\AppData\\Local\\Temp\\cibw-run-okvfe56f\\cp313-win_amd64\\repaired_wheel', 'C:\\Users\\jmcla\\AppData\\Local\\Temp\\cibw-run-okvfe56f\\cp313-win_amd64\\built_wheel\\d4solver-0.1.0-cp313-cp313-win_amd64.whl']
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: d4Solver
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Python bindings for the D4 model counter and compiler
|
|
5
|
+
Author-Email: Logical Team <contact@univ-artois.fr>
|
|
6
|
+
Classifier: Programming Language :: C++
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
+
Requires-Python: >=3.9
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
|
|
12
|
+
# py-d4
|
|
13
|
+
|
|
14
|
+
Python bindings for the **D4** compiler and model counter, supporting option structures, CNF files, custom clause vectors, logic circuits, weighted model counting, and d-DNNF queries. Built with `nanobind` and `scikit-build-core`.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 🚀 Users Guide
|
|
19
|
+
|
|
20
|
+
### 1. Installation
|
|
21
|
+
|
|
22
|
+
Install the package directly from your GitLab PyPI package registry (typically configured in your CI or local `.pip/pip.conf`):
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pip install d4Solver --extra-index-url https://gitlab.univ-artois.fr/api/v4/projects/<PROJECT_ID>/packages/pypi/simple
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 2. Usage Examples
|
|
29
|
+
|
|
30
|
+
#### 2.1 Basic Model Counting
|
|
31
|
+
|
|
32
|
+
You can instantiate a `Solver` using a CNF filepath or raw Python clause structures (list of lists/tuples of literals, 1-based indexing):
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
import py_d4
|
|
36
|
+
|
|
37
|
+
# 1. Option A: Load from a DIMACS CNF file
|
|
38
|
+
solver = py_d4.Solver("path/to/formula.cnf")
|
|
39
|
+
|
|
40
|
+
# 2. Option B: Pass raw Python clauses and total variable count
|
|
41
|
+
# Formula: (x1 or x2) and (not x2 or x3)
|
|
42
|
+
clauses = [
|
|
43
|
+
[1, 2],
|
|
44
|
+
[-2, 3]
|
|
45
|
+
]
|
|
46
|
+
nb_vars = 3
|
|
47
|
+
solver = py_d4.Solver(clauses, nb_vars)
|
|
48
|
+
|
|
49
|
+
# Run model counting
|
|
50
|
+
count_res = solver.count()
|
|
51
|
+
print(f"Number of models: {count_res.getResult()}") # Large integer as string (GMP support)
|
|
52
|
+
print(f"As Python integer: {count_res.getIntResult()}") # Safe python int
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
#### 2.2 Compilation to d-DNNF
|
|
56
|
+
|
|
57
|
+
`py-d4` can compile CNF formulas and circuits into Decision Diagram / Deterministic Decomposable Negation Normal Form (d-DNNF):
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
import py_d4
|
|
61
|
+
|
|
62
|
+
clauses = [[1, 2], [-2, 3]]
|
|
63
|
+
solver = py_d4.Solver(clauses, 3)
|
|
64
|
+
|
|
65
|
+
# Compile
|
|
66
|
+
compile_res = solver.compile()
|
|
67
|
+
|
|
68
|
+
# Access compiled graph statistics
|
|
69
|
+
print(f"Nodes in d-DNNF: {compile_res.getNbNodes()}")
|
|
70
|
+
print(f"Edges in d-DNNF: {compile_res.getNbEdges()}")
|
|
71
|
+
|
|
72
|
+
# Get the compiled NNF circuit string (in standard d-DNNF format)
|
|
73
|
+
nnf_str = compile_res.getNNFString()
|
|
74
|
+
print("NNF String:\n", nnf_str)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### 2.3 Querying the Compiled d-DNNF
|
|
78
|
+
|
|
79
|
+
Once compiled, you can run multiple queries (SAT checks or model counting) under different literal assumptions:
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
# Check if the formula is satisfiable (no assumptions)
|
|
83
|
+
is_sat = compile_res.isSAT([]) # True/False
|
|
84
|
+
|
|
85
|
+
# Check satisfiability assuming x1 is True (1) and x2 is False (-2)
|
|
86
|
+
is_sat_under_assumptions = compile_res.isSAT([1, -2])
|
|
87
|
+
|
|
88
|
+
# Count models under literal assumptions
|
|
89
|
+
# E.g., model count assuming x1 is True
|
|
90
|
+
count_under_x1 = compile_res.count([1])
|
|
91
|
+
print(f"Models satisfying x1: {count_under_x1}")
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
#### 2.4 Weighted Model Counting (WMC)
|
|
95
|
+
|
|
96
|
+
You can assign weights to literals for exact weighted model counting:
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
import py_d4
|
|
100
|
+
|
|
101
|
+
# Formula: (x1 or x2)
|
|
102
|
+
solver = py_d4.Solver([[1, 2]], nb_vars=2)
|
|
103
|
+
|
|
104
|
+
# Define weights for literals (keys are 1-based literals, values are string representations)
|
|
105
|
+
weights = {
|
|
106
|
+
1: "0.3",
|
|
107
|
+
-1: "0.7",
|
|
108
|
+
2: "0.4",
|
|
109
|
+
-2: "0.6"
|
|
110
|
+
}
|
|
111
|
+
# Set weights (WeightType can be FLOAT or GMP)
|
|
112
|
+
solver.setWeights(weights, py_d4.WeightType.FLOAT)
|
|
113
|
+
|
|
114
|
+
# Compute WMC directly
|
|
115
|
+
count_res = solver.count()
|
|
116
|
+
print("WMC Result:", float(count_res.getResult())) # Output: 0.58
|
|
117
|
+
|
|
118
|
+
# Or compile and query WMC under assumptions
|
|
119
|
+
compile_res = solver.compile()
|
|
120
|
+
print("WMC under x1=True:", float(compile_res.count([1]))) # Output: 0.3
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
#### 2.5 Logic Gates / Circuit Compilation
|
|
124
|
+
|
|
125
|
+
Instead of CNF, you can initialize the solver with logic gates to compile or count structured circuits:
|
|
126
|
+
|
|
127
|
+
```python
|
|
128
|
+
import py_d4
|
|
129
|
+
|
|
130
|
+
# Create a gate representing: x3 = x1 AND (not x2)
|
|
131
|
+
gate = py_d4.Gate()
|
|
132
|
+
gate.gateType = py_d4.GateType.AND
|
|
133
|
+
gate.inputs = [1, -2]
|
|
134
|
+
gate.output = 3
|
|
135
|
+
|
|
136
|
+
# Instantiate solver from gate specifications
|
|
137
|
+
solver = py_d4.Solver([gate], nb_vars=3)
|
|
138
|
+
print("Models for circuit:", solver.count().getIntResult())
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
#### 2.6 Solver Configuration & Options
|
|
142
|
+
|
|
143
|
+
Fine-tune the behavior of D4 by mutating native C++ option structures. Documentation and description of settings are exposed natively as Python docstrings:
|
|
144
|
+
|
|
145
|
+
```python
|
|
146
|
+
import py_d4
|
|
147
|
+
|
|
148
|
+
# Instantiate default options
|
|
149
|
+
opt = py_d4.OptionDpllStyleMethod()
|
|
150
|
+
|
|
151
|
+
# 1. Read Option Descriptions (C++ docstrings exposed to Python)
|
|
152
|
+
print(py_d4.OptionDpllStyleMethod.exploitModel.__doc__)
|
|
153
|
+
# Output: "If we exploit model during search"
|
|
154
|
+
|
|
155
|
+
# 2. Modify properties directly (with type safety)
|
|
156
|
+
opt.precision = 30
|
|
157
|
+
opt.exploitModel = False
|
|
158
|
+
opt.optionSolver.solverName = 0 # 0: glucose, 1: minisat
|
|
159
|
+
|
|
160
|
+
# 3. Modify nested option group settings
|
|
161
|
+
opt.optionBranchingHeuristic.freqDecay = 98
|
|
162
|
+
|
|
163
|
+
# 4. Pass options to the Solver
|
|
164
|
+
solver = py_d4.Solver("formula.cnf", opt)
|
|
165
|
+
|
|
166
|
+
# 5. Serialize options to/from standard Python Dictionaries
|
|
167
|
+
config_dict = py_d4.dump_options_to_dict(opt)
|
|
168
|
+
opt_restored = py_d4.load_options_from_dict(config_dict)
|
|
169
|
+
|
|
170
|
+
# 6. Serialize options to/from raw JSON Strings (via native C++ bindings)
|
|
171
|
+
json_str = py_d4._py_d4.dump_options_to_json(opt)
|
|
172
|
+
opt_restored_json = py_d4._py_d4.load_options_from_json(json_str)
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 🛠️ Developers Guide
|
|
178
|
+
|
|
179
|
+
### 1. Requirements
|
|
180
|
+
|
|
181
|
+
Before building locally, ensure the following system-level dependencies are installed on your host:
|
|
182
|
+
- C++20 compatible compiler (e.g. GCC >= 10, Clang >= 10)
|
|
183
|
+
- CMake (>= 3.15)
|
|
184
|
+
- GMP development headers (`libgmp-dev` / `gmp-devel`)
|
|
185
|
+
- Zlib development headers (`zlib1g-dev` / `zlib-devel`)
|
|
186
|
+
|
|
187
|
+
### 2. Local Build Pipeline
|
|
188
|
+
|
|
189
|
+
To compile the C++ extension module and deploy it directly inside your local Python package tree, run:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# 1. Provide your GitLab access token to clone the D4 dependency
|
|
193
|
+
export GITLAB_TOKEN_LOGICAL="your_gitlab_token"
|
|
194
|
+
|
|
195
|
+
# 2. Configure, generate bindings, compile, and deploy shared library
|
|
196
|
+
./build.sh
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Alternatively, you can install the package in editable mode via pip:
|
|
200
|
+
```bash
|
|
201
|
+
pip install -e .
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### 3. Re-Generating Bindings
|
|
205
|
+
|
|
206
|
+
If D4 option headers change, you can automatically parse the new C++ classes and inline constructor descriptions to rebuild the `nanobind` bindings:
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
python3 scripts/generate_bindings.py /path/to/local/d4
|
|
210
|
+
```
|
|
211
|
+
*(If `/path/to/local/d4` is omitted, the script automatically searches the CMake FetchContent directory).*
|
|
212
|
+
|
|
213
|
+
### 4. Running Tests
|
|
214
|
+
|
|
215
|
+
To execute the test suite and verify the integrity of the wrapper:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
LD_PRELOAD=$(gcc -print-file-name=libstdc++.so.6) PYTHONPATH=. python3 tests/test_options.py
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### 5. GitLab CI/CD Pipeline
|
|
222
|
+
|
|
223
|
+
The project includes an automated multi-stage `.gitlab-ci.yml` pipeline:
|
|
224
|
+
- **Build Stage**: Uses `cibuildwheel` to compile optimized, standalone Linux wheels for Python 3.8 to 3.13. It automatically routes the group-level `GITLAB_TOKEN_LOGICAL` CI variable to authenticate both the `py-d4` and internal `d4`/`optree` sub-project checkouts.
|
|
225
|
+
- **Deploy Stage**: Triggered on pushing Git tags. Automatically publishes the generated wheel packages directly to the GitLab project PyPI package registry using `twine`.
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
d4solver-0.1.0.dist-info/DELVEWHEEL,sha256=PrraT-q0mlQ3n176HmsRZyM_ESS1J4VkXTZUsdTi-fw,439
|
|
2
|
+
d4solver-0.1.0.dist-info/METADATA,sha256=XLJbz2j6VHPwzkjXyS-a0zwLD0B7COH0EqQRX6PahlY,6996
|
|
3
|
+
d4solver-0.1.0.dist-info/RECORD,,
|
|
4
|
+
d4solver-0.1.0.dist-info/WHEEL,sha256=dXz53UX_wVrENU3pg7IjBHl1TfATF0jKSXtQDtrFnLw,105
|
|
5
|
+
d4solver.libs/gmp-10-521f5d57a531da7f2ddd75a64634bf47.dll,sha256=Uh9dV6Ux2n8t3XWmRjS_R6xFy_jAqitZQNhB5mhXlqE,423424
|
|
6
|
+
d4solver.libs/gmpxx-4-1aec0d72b737c81b6397e2967c9be349.dll,sha256=ph9Yg908BAzNwGoQrzcMsO9cW23twhLJ0QlBi4hTyR4,27136
|
|
7
|
+
d4solver.libs/msvcp140-484f56d9de72c048820300919dc49e56.dll,sha256=SE9W2d5ywEiCAwCRncSeVtm8O7RWdnkNPu60BsFCjCk,568712
|
|
8
|
+
include/__init__.py,sha256=hK-jOgKLw2ObTQb_0m6EWVeBYHXq2w8j2h4Uc-eHXYA,328
|
|
9
|
+
include/optree/EnumMetadata.hpp,sha256=cj62izIeeV9eS2j_ZPLM3x83Xta-Tmmd9j2JJfDEWgw,1821
|
|
10
|
+
include/optree/Option.hpp,sha256=k6ZfXLBrcDKxRxFz8lw5RVq14T69kHYUR5F4vfUQzYw,5803
|
|
11
|
+
include/optree/OptionBase.hpp,sha256=AYqym2Hv1Uz-ysG9o7t9oTn_FFI3LbZVd4TdkP8V_LY,1543
|
|
12
|
+
include/optree/OptionGroup.hpp,sha256=aOHsmoldHwoabRx7jRMz31SoILTyhhpkeVXVtBeOSR8,2239
|
|
13
|
+
include/optree/OptionJson.hpp,sha256=wkWPMkYnmdz7hcEe_hCAL3dsKF1VBGzQ8_KuL8Yti98,7988
|
|
14
|
+
include/optree/OptionRegistry.hpp,sha256=pksvrMcES3dN32TsFZKFVuaurIzo9DQcQ5PdEXr68dE,13121
|
|
15
|
+
include/py-d4-standard/ActivityManager.hpp,sha256=rc6syVLEl1kMU-9hDgd285i-nwEvom4GNZWbWuMgmeI,1239
|
|
16
|
+
include/py-d4-standard/Alg.hpp,sha256=RFhMjm4TwjqGxG5iO2lFZhiRFMOQLwTZOB6qG-Lemes,2780
|
|
17
|
+
include/py-d4-standard/Alloc.hpp,sha256=01QcLu-LgdXvi5JmSUkHJvmjeONUjdjpSSiVCsSPDW8,4287
|
|
18
|
+
include/py-d4-standard/AndGatesExtractor.hpp,sha256=s23xhF3rl193S5zKM1zGTf3zy1OXb1_P5OxSaRVvPls,1518
|
|
19
|
+
include/py-d4-standard/AtMost1Extractor.hpp,sha256=f9xxfW7M2U0o5DxYwCo_KurtMaLTi0UmFyqLf71XUUk,1967
|
|
20
|
+
include/py-d4-standard/BadBehaviourException.hpp,sha256=v4o-4ZKEqKA3b-oEvgaEbjKVu-zKxL2jYwzAKesoAx8,1532
|
|
21
|
+
include/py-d4-standard/BranchingHeuristic.hpp,sha256=mU8Y5VI9FUm-0KZU5uq_eAgaeMjRDsVJPELkklqwgWo,7971
|
|
22
|
+
include/py-d4-standard/BranchingHeuristicClassic.hpp,sha256=L7ZRE-zyYGo-BnIu0yd1CX4lnkIDYezHum6UMU1UAFY,2845
|
|
23
|
+
include/py-d4-standard/BranchingHeuristicHybridPartialClassic.hpp,sha256=ntIJqEaAfQ8lVrShx5gkqHBBfjd9DXCl4cdOmk6wShs,3666
|
|
24
|
+
include/py-d4-standard/BranchingHeuristicLargeArity.hpp,sha256=bchVaERu1uX26bDBn5vCbTXIzYvrQymEaiesALr34Ks,3193
|
|
25
|
+
include/py-d4-standard/BucketAllocator.hpp,sha256=30KF0pScuQjV89qXEsX7IhFqRF4xdg_oummrLXRIklY,3991
|
|
26
|
+
include/py-d4-standard/BucketException.hpp,sha256=reOQi76jxIB5mhpgJ7-cxtdvsr3zdn8u7OrtS6j0DFc,1520
|
|
27
|
+
include/py-d4-standard/BucketInConstruction.hpp,sha256=BEYT_pxE5SC3Ji3uHFqIinl7VQ2AG-lCkYKojXLWwuk,2164
|
|
28
|
+
include/py-d4-standard/BucketManager.hpp,sha256=JDorIW4IUgbp1Zy5rGZJxCOAcZGGut68evtbaT4UJFQ,2968
|
|
29
|
+
include/py-d4-standard/BucketSortInfo.hpp,sha256=eCJnQsKZ5GpsnL5my4zlHQnd039KK4pFQnZ1mU1yJ2s,1493
|
|
30
|
+
include/py-d4-standard/BufferRead.hpp,sha256=QHSqNzEtYIPEjo4VfHDErHktAIWNNQJ_ar7B6Nd9eUM,4251
|
|
31
|
+
include/py-d4-standard/CacheCleaningExpectation.hpp,sha256=TOkxgfkbqGytOEz6vkrVmbdB3xcVFm1KCVpQzg7V32c,4706
|
|
32
|
+
include/py-d4-standard/CacheCleaningManager.hpp,sha256=lr2fdCUbEd4MnCl_JM9YnGiZSNvAj-Cbo5DAyabVkL8,2908
|
|
33
|
+
include/py-d4-standard/CacheCleaningNone.hpp,sha256=jTzx7jsNJtYTTWa4F__l6fgUs1r-HlF_Tro8_7qk2lk,1588
|
|
34
|
+
include/py-d4-standard/CachedBucket.hpp,sha256=kZFP0Wbq7Y2MxMcgBPzbDjaJMsvrf6fGXYGzP9Kg9JY,2053
|
|
35
|
+
include/py-d4-standard/CacheList.hpp,sha256=wHsRXsjOJpXMk-YlKKDUuVu7ea8UgzrUx4xJM1_R5GI,5663
|
|
36
|
+
include/py-d4-standard/CacheManager.hpp,sha256=NjSr68fkouiA_11hL0ehgwKPENEHGzvDDtlzBw-xCu0,8876
|
|
37
|
+
include/py-d4-standard/CacheNoCollision.hpp,sha256=VLaX5jWEHZIjKi48mNGjuyP4FDatzmPrg5NzvVrnsMU,4493
|
|
38
|
+
include/py-d4-standard/CircuitManager.hpp,sha256=5okugdLTkmGy2c7c9pek3g5uMMx_MLZUOr7JEqeMYww,3443
|
|
39
|
+
include/py-d4-standard/CircuitManagerDyn.hpp,sha256=WpreEgWRn2FEijR8kxzHaZETPT4Y2fgx0xAt3vb45dc,2280
|
|
40
|
+
include/py-d4-standard/CircuitWithCnfManager.hpp,sha256=L_9emw8xOP2GtSzOa4odSlVAiQOKZMKU-SfS3q-Woo4,2098
|
|
41
|
+
include/py-d4-standard/ClauseInfo.hpp,sha256=HxFkDS7ptq1ovPtbZpk7es2kS1eQ8B_KT_7HuzyK8cA,1130
|
|
42
|
+
include/py-d4-standard/CnfManager.hpp,sha256=rHx8lD2hrSoDlV5Wzc72v-Sn14G_NjokzZho6WHuc88,7885
|
|
43
|
+
include/py-d4-standard/CnfManagerDyn.hpp,sha256=Y7bVxEbw5xQAoJ3L9O2CjyP6lmR7ISonBcojflmGiHI,6062
|
|
44
|
+
include/py-d4-standard/CnfManagerDynBlockedCl.hpp,sha256=-ASyyl_0ZXb8-8WmKexQiiVG4M_TuFqHWE1Ut3Arnd0,2698
|
|
45
|
+
include/py-d4-standard/CnfManagerDynPure.hpp,sha256=JC3-oUpJ3_BeOaZuG-88Br1Ar6XfeCx2bcspcG756Zk,2161
|
|
46
|
+
include/py-d4-standard/Counter.hpp,sha256=WggUpl0r7ZE_0GmMMzKe2gzcv24JA3sYG7VL9RZZ4bA,1700
|
|
47
|
+
include/py-d4-standard/DataBranch.hpp,sha256=xhqsaFJi-rxRSCfRbgE2SA8BaGcx3VTLVl1ebJLUH2o,1184
|
|
48
|
+
include/py-d4-standard/DataInfo.hpp,sha256=-g0kX0x3m2hc94urR_7vJVJBNoVgUA3lNXBJvxZk5vY,2033
|
|
49
|
+
include/py-d4-standard/DataOccurrence.hpp,sha256=mFrXL7ftW-Bga3-MmtJ3Ed4IynnaZ_920pA-GD5Dt5Y,2993
|
|
50
|
+
include/py-d4-standard/DpllStyleMethod.hpp,sha256=T1lRcrSlTVqmmAgMf3EXqOGAX4FTO3CbXfY9jdMWkJw,18882
|
|
51
|
+
include/py-d4-standard/EnumMetadata.hpp,sha256=i99qZjZsmFyry5OTftzSNF4TdOgI5QTe7WdAixYPzPk,620
|
|
52
|
+
include/py-d4-standard/EquivExtractor.hpp,sha256=5qLA8ttLChXArYI5oM7SeIkwcr5CaTkwYQwEsdPU2DA,1489
|
|
53
|
+
include/py-d4-standard/ErrorCode.hpp,sha256=Hh-U36MpXNpUmm5wFohd6BtIJbhk8nLkYOPy3oa-pZo,951
|
|
54
|
+
include/py-d4-standard/ExistRandomExist.hpp,sha256=NH39YhWi9xBFwnf_lmz1rZBzaJm9kXVNLia0YrOWb7c,39079
|
|
55
|
+
include/py-d4-standard/FactoryException.hpp,sha256=GL6aXgy1vT9JZpgcvMlVAXrv61ZkY3XyOYVJbYgAn7o,1522
|
|
56
|
+
include/py-d4-standard/FormulaManager.hpp,sha256=8Qy1sgLMbEZbrdW3fLif2k43shHgscE2Xll8Hy0Se2o,8607
|
|
57
|
+
include/py-d4-standard/FormulaStore.hpp,sha256=KQ5juBTCoW3SB526Kl9EOj2C4Sow8Zjj-7S6pkWJVU0,1749
|
|
58
|
+
include/py-d4-standard/FormulaStoreCnf.hpp,sha256=UlEXsJreyEAs0_nNAeS-naWKrTw1QTvqKwWXJVMdPqo,2859
|
|
59
|
+
include/py-d4-standard/FormulaStoreCnfCl.hpp,sha256=V26drLeC_Y0J4HFYTCEeD_zrObV1xyscxldXAr9eV88,3315
|
|
60
|
+
include/py-d4-standard/FormulaStoreCnfCombi.hpp,sha256=ZWAuEsnTusJodAnJr-vz1x7m1BWCnHOs6Iplgt7AZBg,1776
|
|
61
|
+
include/py-d4-standard/FormulaStoreCnfIndex.hpp,sha256=wIBWf2hb2-QUi0izwJ9A3ds_Xf55pbvi7ydh9L3nhXU,1402
|
|
62
|
+
include/py-d4-standard/FormulaStoreCnfSym.hpp,sha256=gIFTMgssPyVfL5ShC9Lj45sdaMgWyJe0uC4HCFVgT2c,3332
|
|
63
|
+
include/py-d4-standard/Graph.hpp,sha256=W7MTqFifdp_q-puI7q_rAcJ4-HP19GqT2wlU_DJUFOQ,2255
|
|
64
|
+
include/py-d4-standard/GraphExtractor.hpp,sha256=F44x3yp3hPvGCrT3Emvfy6lR21AL9XPSbeRQDbRLwQc,2375
|
|
65
|
+
include/py-d4-standard/GraphExtractorCircuit.hpp,sha256=mfg5Md-nDt6lgIi8FcLfoOV7yTMPwgXAOL1lgP-PrQM,1490
|
|
66
|
+
include/py-d4-standard/GraphExtractorCircuitPrimal.hpp,sha256=LPEjNWowKVpI1lNOxjFIzbW2JI_UfZQh4WDT3QMg3FU,1600
|
|
67
|
+
include/py-d4-standard/GraphExtractorCnf.hpp,sha256=oNFgOtxB-PV7rhceLRN1P1scTZApLldU5ljYS0rAjTI,1758
|
|
68
|
+
include/py-d4-standard/GraphExtractorCnfPrimal.hpp,sha256=46IBfq7ZIugW7aKAfP2YtcxoTr8XSOjyv5Kae38kM74,1624
|
|
69
|
+
include/py-d4-standard/HashString.hpp,sha256=184OHOPaPpEb0WlRCiI9ZLzZADR8xEdZVIgNCYYtQJ8,1308
|
|
70
|
+
include/py-d4-standard/Heap.hpp,sha256=tEO0n-apfBIwe3dl-TQutYcvyhX0xFxm7fkHU7ae57M,4393
|
|
71
|
+
include/py-d4-standard/HyperEdge.hpp,sha256=3UZp9x3a796mskBb7L-BBvfpnwPgIypk1S8RaBTDNrc,1627
|
|
72
|
+
include/py-d4-standard/HyperGraph.hpp,sha256=_BlATkbT-aDF8bxTSyF_AxVHZfP06lkaYiKeaWtZDXQ,2065
|
|
73
|
+
include/py-d4-standard/HyperGraphExtractor.hpp,sha256=xinijZPrvWOA1q-nEmKcB2Khnl1a28WxjqVuHs0pCJ0,3328
|
|
74
|
+
include/py-d4-standard/HyperGraphExtractorCnfDual.hpp,sha256=LG7srBdmDzT4tOsleaXvnj5T741jndvTBBhjXPs2yMc,2572
|
|
75
|
+
include/py-d4-standard/IntTypes.hpp,sha256=rp4L4FnXIF0PCHTSyUjMn2gJannfn6-TTUeWx8EqokY,1822
|
|
76
|
+
include/py-d4-standard/Map.hpp,sha256=djMy3z-S_QcYJBA9GlNSDfHndqM7ZaBfMLsqn8npi0A,6432
|
|
77
|
+
include/py-d4-standard/MaxSharpSAT.hpp,sha256=sRiIcAUtoIhJQhR0B8WR1c62GtrsWkXFJTcQrOKXttk,32916
|
|
78
|
+
include/py-d4-standard/MaxT.hpp,sha256=F8Vytd9KDIhmN5SaX8GF2okIMsHPHcnw2jIMfpeK4wg,32268
|
|
79
|
+
include/py-d4-standard/MemoryStat.hpp,sha256=INDSVTnyX0WnAT3-zmsmiUvlt6vztIo4gx0oEzHbcRo,3959
|
|
80
|
+
include/py-d4-standard/MethodManager.hpp,sha256=AoMDJWeJ70XgvNIgY1ODgzzVCvz9QXSAdiTpRhKBaWc,2159
|
|
81
|
+
include/py-d4-standard/MinSharpSAT.hpp,sha256=p9NkcJlWoW_R2dN26N-j2A-mvc1OVjBEU1tBp5emdtw,22359
|
|
82
|
+
include/py-d4-standard/MpzTypes.hpp,sha256=kKxUOeNzTyYTPImoGupoOLdK3Cwc18GxfbAqBlax3Qg,1320
|
|
83
|
+
include/py-d4-standard/NodeException.hpp,sha256=-HKw7aYd2LFidf3paXU9l0PgxQ5vTlI5kqhe9zttd3A,1516
|
|
84
|
+
include/py-d4-standard/Option.hpp,sha256=FSTJovYcWFt2-CVR_LiWSgGcQGnIr521YmRI0nrQrzE,162
|
|
85
|
+
include/py-d4-standard/OptionBase.hpp,sha256=Noq-qKUHX9_18LpAQfnDVKOB1vQdM1IwNQm6rCBv0YI,157
|
|
86
|
+
include/py-d4-standard/OptionBranchingHeuristic.hpp,sha256=2QoE5tzEatQIBsa_XzFum_yJMl1Y0weJYHK1VRzubLM,5257
|
|
87
|
+
include/py-d4-standard/OptionBucketManager.hpp,sha256=AYqqmiGIRSoK-A0on2ge2rcqqeerw4hOT9iE_bMybKc,3239
|
|
88
|
+
include/py-d4-standard/OptionCacheCleaningManager.hpp,sha256=XCfZ9qAgrOa3jgXXAl_lQSIOUFHtMTfmWigZ4rr1Qiw,1449
|
|
89
|
+
include/py-d4-standard/OptionCacheManager.hpp,sha256=vzwaODXQfmCiPiU3FqM-R676syHhmic9_SMBPC8IHzA,1844
|
|
90
|
+
include/py-d4-standard/OptionDpllStyleMethod.hpp,sha256=rE1dv-LNPcAOtC_QvGnu_vthSlAZEE0J73cojMDvTfs,3330
|
|
91
|
+
include/py-d4-standard/OptionEREMethod.hpp,sha256=FI1Nn1pUobzzbSoYx8WAloWZrOrd5lHeoJbbRaFT3kk,4513
|
|
92
|
+
include/py-d4-standard/OptionException.hpp,sha256=Ma4Kfqud0N_DTl1E2JoUwamh3FsU_PUnpUtY_McfbsQ,1520
|
|
93
|
+
include/py-d4-standard/OptionFormulaManager.hpp,sha256=0VfBxB4NJ6I_TmBzyxvHR29HyNWA4iaYVxFaiYaPf_c,3130
|
|
94
|
+
include/py-d4-standard/OptionGroup.hpp,sha256=3-5iWWj5pPklYlK54YTSj6SBME44UUTGyB2gaXjQVl4,186
|
|
95
|
+
include/py-d4-standard/OptionMaxSharpSatMethod.hpp,sha256=EIfkYB10zbPmGG9oR-33r7DARflFyk9UYjzDBp5Lzxk,3493
|
|
96
|
+
include/py-d4-standard/OptionMaxTMethod.hpp,sha256=Kz2DlUdfkBPK95mIT0fdx8rgq4Yfnzzdi7Kyrlz9WlI,3865
|
|
97
|
+
include/py-d4-standard/OptionMethodManager.hpp,sha256=I8dFLyJQwcTfzL543_ukIkVJsSnW9-fGFdtzMv1HQ5I,1236
|
|
98
|
+
include/py-d4-standard/OptionMinSharpSatMethod.hpp,sha256=Wr78T3-ZsOO-NgiRMTDmZ8q42KVDL6gK8UstruSpK2k,3493
|
|
99
|
+
include/py-d4-standard/OptionOperationManager.hpp,sha256=F5KqzWitpTjnYmqR7e06bgbo4h9nSrucxU81e7_Crh4,2229
|
|
100
|
+
include/py-d4-standard/OptionPartialOrderHeuristic.hpp,sha256=OWSMvjtOePLpFHNKQjyM7e0zUnYsIUuJ0TecPVYNl_Y,5438
|
|
101
|
+
include/py-d4-standard/OptionProjMcMethod.hpp,sha256=RjXzIFXkiU6vG_Aid5CpFPzT-YuMN9wvXdTt3Ar_pYw,2611
|
|
102
|
+
include/py-d4-standard/OptionQbfCounter.hpp,sha256=R1fREn-9PV00pbGO7CaKy3Tw3BPYCyF4vcD1yYulXVE,2541
|
|
103
|
+
include/py-d4-standard/OptionRegistry.hpp,sha256=WdXMr7uP8a0E6bKxMKOqDLyYxMHAST9iYVxD23P3YWs,160
|
|
104
|
+
include/py-d4-standard/OptionRoot.hpp,sha256=LPvj1ck1YH7gO5xElmiY6LiEBNTfGNWQGdDQvwaCI9s,1303
|
|
105
|
+
include/py-d4-standard/Options.hpp,sha256=I_b4LnX4nn-RhNTN1hK6rHoP-Gs0gQYGiULDzSO40YA,12374
|
|
106
|
+
include/py-d4-standard/OptionSolver.hpp,sha256=3H-ItLpSU8nVkS8L6DrX1tMA-X7G3Su4nG2k_3MVl_I,3024
|
|
107
|
+
include/py-d4-standard/ParserException.hpp,sha256=Pq0aIdRlJsfIM7p6PVqz-NmUALxaMWCyEH_PBSYC8jM,1520
|
|
108
|
+
include/py-d4-standard/PartialOrderHeuristic.hpp,sha256=-1CaLEjXOeoTsPSO5Q2hc5NcwJ0kutu3VfVAvOGcBpA,2358
|
|
109
|
+
include/py-d4-standard/PartialOrderHeuristicGiven.hpp,sha256=F4HIjqNvRjSFKwFaOegLpWDrbU6S78Iax3Gml91RAuw,2060
|
|
110
|
+
include/py-d4-standard/PartialOrderHeuristicNone.hpp,sha256=OS1P1voQVTsJskCT5MCYlSohxmAvkI8EBGh5lQOWvHs,1147
|
|
111
|
+
include/py-d4-standard/PartialOrderHeuristicTreeDecomp.hpp,sha256=fVz-7wJgrhQu1hxpfc7dSaJNiCXEPtCOeJecg66w9AE,2363
|
|
112
|
+
include/py-d4-standard/PartitionerManager.hpp,sha256=CCtQYV-8nz4AiUXPmKdWSO1yWSPKvJGvB72Zv06h7g0,2490
|
|
113
|
+
include/py-d4-standard/PartitionerPatoh.hpp,sha256=VvrOUQiKe8bZL4ReRS5r1r3wQMIrGApEQTdos3mxZDI,1399
|
|
114
|
+
include/py-d4-standard/PhaseHeuristic.hpp,sha256=gztbRmeiCsPOGenRwBNRgDmEPUKey60ouiCPN9mTqcI,1373
|
|
115
|
+
include/py-d4-standard/PhaseHeuristicFalse.hpp,sha256=VX2_VB_TzbTUzfopPtSXQ2-nNdjYxjlTnmWNHuYSNik,1020
|
|
116
|
+
include/py-d4-standard/PhaseHeuristicOccurrence.hpp,sha256=JLkf3v5KEx3lliHZZFTx_-Lqw-ZXImYdqLX1B4ogLcA,1129
|
|
117
|
+
include/py-d4-standard/PhaseHeuristicPolarity.hpp,sha256=hOG0C_S4S6ujPrped7nuSFOrFJfOGem6bmeobzUqgHg,1131
|
|
118
|
+
include/py-d4-standard/PhaseHeuristicTrue.hpp,sha256=7ZWEERzjTzU4sxoEVycKcWPWTwo8k54_5LgF9iJG1qs,1018
|
|
119
|
+
include/py-d4-standard/PolarityManager.hpp,sha256=00bUg_nPrTqyjzF2Cpr0JVuciHIYdRxf1e455vRJecg,1025
|
|
120
|
+
include/py-d4-standard/ProblemManager.hpp,sha256=jdPGxsKI6bYm4XVmlaghtzJyk_P7IWgkqDXzFjaDDbc,10423
|
|
121
|
+
include/py-d4-standard/ProblemTypes.hpp,sha256=HClFvOxD_tUvuukoSl6H78GcdkCgwVEGtDOysY5FqOc,4210
|
|
122
|
+
include/py-d4-standard/ProjMCMethod.hpp,sha256=UdjT0YnLBPmR9_OOvqi3apkSZ_ze6R2LCr0Zl-oh25Y,25189
|
|
123
|
+
include/py-d4-standard/QbfCounter.hpp,sha256=hdaTsHv4OeGmbQmHgC1eFDAWKpyaSo1rHZKgCNSoRH8,17340
|
|
124
|
+
include/py-d4-standard/Queue.hpp,sha256=PE0weHDKiM7ECXn3f-3J9KmdQ925XbPYQ-2uotsnrik,2820
|
|
125
|
+
include/py-d4-standard/ScoringMethod.hpp,sha256=CnpJa5aNNnmpRlcMmfXuPmPPKqzHopjsVOvS7fdF1OU,1930
|
|
126
|
+
include/py-d4-standard/ScoringMethodDlcs.hpp,sha256=bco2fD3hvatA__3tX1Bs6ywjRlS_DKOy7cbguloNzHo,1110
|
|
127
|
+
include/py-d4-standard/ScoringMethodJwts.hpp,sha256=0zhLbqGquTiXgzJiJWpi-ZvAg5sU5_a1mm0JzAaTAeU,1103
|
|
128
|
+
include/py-d4-standard/ScoringMethodMom.hpp,sha256=l-9r-OrYLy7rZzpPm2gcLy58lKG68NLJQY8jXbyhXwI,1101
|
|
129
|
+
include/py-d4-standard/ScoringMethodVsads.hpp,sha256=7RF03VdvEgNfv8MA7MCzxZizaNKCgnT65gNMpMdPhh0,1271
|
|
130
|
+
include/py-d4-standard/ScoringMethodVsids.hpp,sha256=gfBE5ENhLkOowIcST9PIAreueZ2DW0O87ck1IKxtl6U,1114
|
|
131
|
+
include/py-d4-standard/SemiringConcept.hpp,sha256=qbT5fme3e88PsZgPEThbA7wjYR8Aw8ad3M0oARxe3kM,2109
|
|
132
|
+
include/py-d4-standard/Solver.hpp,sha256=qsq19XbNbCsC5MxM7g8srj0XxP1uV22rX4ZTBMYtqnU,33332
|
|
133
|
+
include/py-d4-standard/SolverTypes.hpp,sha256=WQ2aRJneZXExl6FBzEPGzd4xb5-C_u_528OWOSDyWyY,18271
|
|
134
|
+
include/py-d4-standard/Sort.hpp,sha256=rbFFyDEftORUAlxQcl8eDkRdAyWzeOddwspG4unxpjE,3256
|
|
135
|
+
include/py-d4-standard/TmpEntry.hpp,sha256=WakVF552gZ09cWpbNR5zHQhTIHS7ryxceqFrc4e2Fl4,1429
|
|
136
|
+
include/py-d4-standard/Translator.hpp,sha256=177kT_1t-je5kFmcamxN9POOFI4LqxeN0Tnl_IQpeSg,3933
|
|
137
|
+
include/py-d4-standard/TreeDecomposition.hpp,sha256=TYlSxQeYlTu9De4OI0RZVksIJsSPQCHvUBt2eiBjiFo,8439
|
|
138
|
+
include/py-d4-standard/TreeDecompositioner.hpp,sha256=wajefw0ovBWD0lbM9U0m9cJjBsIia6qr-pBTbdk46f4,2595
|
|
139
|
+
include/py-d4-standard/TreeDecompositionerFlowCutter.hpp,sha256=qL_Q-xpc2FchmEGj5QyOwduIONJ6Fy2f-Tnt-fNkTDM,2641
|
|
140
|
+
include/py-d4-standard/TreeDecompositionerHtd.hpp,sha256=5j-fSDFal8Ic2pZ0j9l-hqmj9TVRAH8xPIm3aaILAg8,2132
|
|
141
|
+
include/py-d4-standard/TreeDecompositionPartition.hpp,sha256=ITvFhbOn5dDBb1V0JbDNys4dUlDoJ_fpjh--xFids1A,2085
|
|
142
|
+
include/py-d4-standard/TreeDecompositionTreeWidth.hpp,sha256=Ue5FvTnB1axEifYxQwRvT2hZHl38ZZYKFisz7VO7cZU,2707
|
|
143
|
+
include/py-d4-standard/Vec.hpp,sha256=Va2bvRjJVXTi-Vtx8i-NF1zWIm5bJdr5ngfYQbVsh-0,6142
|
|
144
|
+
include/py-d4-standard/WrapperCircuitGlucose.hpp,sha256=Yff3MDladmLDavZN4byvlUvMO_-MWhoaw-CfxdKaWQA,1199
|
|
145
|
+
include/py-d4-standard/WrapperCircuitMinisat.hpp,sha256=XFMS_ykEwS54nN2R-5tT6eJqtzv3-yzVaVC_N_4rnWA,1100
|
|
146
|
+
include/py-d4-standard/WrapperGlucose.hpp,sha256=O2K4PiLbHeX94wuYzmxSVnsIkhBjkfeWKOU-WbqPu4E,2938
|
|
147
|
+
include/py-d4-standard/WrapperMinisat.hpp,sha256=tq2EwPGgcKwJQWYlrSP3wYBweRDt3SbdtaHoPu9447I,2834
|
|
148
|
+
include/py-d4-standard/WrapperSolver.hpp,sha256=VWdU7GgU0w1qy9l9qG1NsGW8NltE-Fo305c8trWlnj8,4096
|
|
149
|
+
include/py-d4-standard/XAlloc.hpp,sha256=TkB4MQ5-tXy_kndbHmFZe-B_xUzI1dRkXW2hqmYHTJg,1849
|
|
150
|
+
lib/d4.lib,sha256=BXkj9Mo-uLrvQy7716jXE0aHzDg-RRZQmfzeIn8FZ_o,22601752
|
|
151
|
+
lib/__init__.py,sha256=hK-jOgKLw2ObTQb_0m6EWVeBYHXq2w8j2h4Uc-eHXYA,328
|
|
152
|
+
py_d4/options.py,sha256=Xddsss_a2Y_2AjFeYCG_XCGhxLyhCqgG-GtS0X1LinE,876
|
|
153
|
+
py_d4/py.typed,sha256=V-lflWeK996Wlw7bjhCkJEcQU9mOk2QXj4MnZmQ7oMU,75
|
|
154
|
+
py_d4/_py_d4.cp313-win_amd64.pyd,sha256=ZMUo1xrnLbDQFmOS1d5AmdIHFMACQat4KG1tl9oU0zE,2472960
|
|
155
|
+
py_d4/_py_d4.pyi,sha256=TZJfa4wSxc5M8hafEgn8SrWhg6xw6r8NPNvA317BWWM,15649
|
|
156
|
+
py_d4/__init__.py,sha256=Wey9ca2JJSR4Pp9V6RKoKnZd6QHQ8v5C6VxCjWi6M8A,2022
|
|
157
|
+
share/__init__.py,sha256=hK-jOgKLw2ObTQb_0m6EWVeBYHXq2w8j2h4Uc-eHXYA,328
|
|
158
|
+
share/cmake/optree/optreeConfig.cmake,sha256=uRZTbyFByBz61hBlGtCt7M-bvQxibVqDjRHWuMEhauA,58
|
|
159
|
+
share/cmake/optree/optreeConfigVersion.cmake,sha256=wrWvwXUoWsHZLhxkVa5C6bH6n4gMev3yLcWv7f5jNBw,2827
|
|
160
|
+
share/cmake/optree/optreeTargets.cmake,sha256=U_QCD-4bKcT_5ANleMWpTkMHUJ9usj-q76kuX1L-ClI,4164
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
include/__init__.py
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"""""" # start delvewheel patch
|
|
2
|
+
def _delvewheel_patch_1_13_0():
|
|
3
|
+
import os
|
|
4
|
+
if os.path.isdir(libs_dir := os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, 'd4solver.libs'))):
|
|
5
|
+
os.add_dll_directory(libs_dir)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
_delvewheel_patch_1_13_0()
|
|
9
|
+
del _delvewheel_patch_1_13_0
|
|
10
|
+
# end delvewheel patch
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
#include <string>
|
|
3
|
+
#include <map>
|
|
4
|
+
#include <stdexcept>
|
|
5
|
+
|
|
6
|
+
namespace optree {
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @brief Trait to provide metadata about enums.
|
|
10
|
+
* Specialize this template in your project to support custom enums.
|
|
11
|
+
*/
|
|
12
|
+
template<typename EnumType, typename Dummy = void>
|
|
13
|
+
struct EnumMetadata {
|
|
14
|
+
static std::map<int, std::string> mapping() { return {}; }
|
|
15
|
+
static std::string name() { return "UnknownEnum"; }
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @brief Helper to resolve an enum value from its string label.
|
|
20
|
+
*/
|
|
21
|
+
template<typename EnumType>
|
|
22
|
+
inline EnumType resolve_enum(const std::string& label) {
|
|
23
|
+
auto m = EnumMetadata<EnumType>::mapping();
|
|
24
|
+
for (auto const& [val, str] : m) {
|
|
25
|
+
if (str == label) {
|
|
26
|
+
return static_cast<EnumType>(val);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Fallback to integer conversion if it's a numeric string
|
|
30
|
+
try {
|
|
31
|
+
return static_cast<EnumType>(std::stoi(label));
|
|
32
|
+
} catch (...) {}
|
|
33
|
+
throw std::runtime_error("Unknown enum label: " + label + " for enum: " + EnumMetadata<EnumType>::name());
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @brief Helper to convert an enum value to its string label.
|
|
38
|
+
*/
|
|
39
|
+
template<typename EnumType>
|
|
40
|
+
inline std::string enum_to_string(const EnumType& val) {
|
|
41
|
+
auto m = EnumMetadata<EnumType>::mapping();
|
|
42
|
+
auto it = m.find(static_cast<int>(val));
|
|
43
|
+
if (it != m.end()) {
|
|
44
|
+
return it->second;
|
|
45
|
+
}
|
|
46
|
+
return std::to_string(static_cast<int>(val));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @brief Helper to generate a documentation string for an enum.
|
|
51
|
+
*/
|
|
52
|
+
template<typename EnumType>
|
|
53
|
+
inline std::string get_enum_doc() {
|
|
54
|
+
auto m = EnumMetadata<EnumType>::mapping();
|
|
55
|
+
std::string doc = "";
|
|
56
|
+
for (auto const& [val, label] : m) {
|
|
57
|
+
if (!doc.empty()) doc += ", ";
|
|
58
|
+
doc += std::to_string(val) + "=" + label;
|
|
59
|
+
}
|
|
60
|
+
return doc;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
} // namespace optree
|