PySCIPOpt 4.4.0__tar.gz → 5.0.1__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.
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/PKG-INFO +14 -11
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/PySCIPOpt.egg-info/PKG-INFO +14 -11
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/PySCIPOpt.egg-info/SOURCES.txt +8 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/README.md +8 -7
- pyscipopt-5.0.1/pyproject.toml +85 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/setup.cfg +0 -4
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/setup.py +3 -8
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/__init__.py +3 -1
- pyscipopt-5.0.1/src/pyscipopt/_version.py +1 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/benders.pxi +15 -15
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/benderscut.pxi +7 -7
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/branchrule.pxi +9 -9
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/conshdlr.pxi +56 -32
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/cutsel.pxi +7 -7
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/event.pxi +9 -9
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/heuristic.pxi +7 -7
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/nodesel.pxi +8 -8
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/presol.pxi +7 -7
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/pricer.pxi +8 -8
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/propagator.pxi +11 -11
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/reader.pxi +4 -4
- pyscipopt-5.0.1/src/pyscipopt/recipes/__init__.py +0 -0
- pyscipopt-5.0.1/src/pyscipopt/recipes/infeasibilities.py +50 -0
- pyscipopt-5.0.1/src/pyscipopt/recipes/nonlinear.py +18 -0
- pyscipopt-5.0.1/src/pyscipopt/recipes/piecewise.py +39 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/relax.pxi +7 -7
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/scip.c +169745 -84079
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/scip.pxd +31 -1
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/scip.pxi +531 -234
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/sepa.pxi +8 -8
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_benders.py +1 -1
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_branch_incomplete.py +3 -7
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_cons.py +55 -2
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_event.py +6 -6
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_linexpr.py +1 -6
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_model.py +105 -2
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_nonlinear.py +25 -6
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_pricer.py +7 -6
- pyscipopt-5.0.1/tests/test_recipe_infeasibilities.py +29 -0
- pyscipopt-5.0.1/tests/test_recipe_nonlinear.py +52 -0
- pyscipopt-5.0.1/tests/test_recipe_piecewise.py +29 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_solution.py +28 -0
- PySCIPOpt-4.4.0/pyproject.toml +0 -46
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/LICENSE +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/PySCIPOpt.egg-info/dependency_links.txt +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/PySCIPOpt.egg-info/top_level.txt +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/Multidict.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/expr.pxi +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/lp.pxi +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/scip.pyx +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_alldiff.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_branch_probing_lp.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_conshdlr.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_copy.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_customizedbenders.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_cutsel.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_expr.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_gomory.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_heur.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_knapsack.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_logical.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_lp.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_memory.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_nlrow.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_nodesel.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_quadcons.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_quickprod.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_quicksum.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_reader.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_relax.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_reopt.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_short.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_tree.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_tsp.py +0 -0
- {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_vars.py +0 -0
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PySCIPOpt
|
|
3
|
-
Version:
|
|
3
|
+
Version: 5.0.1
|
|
4
4
|
Summary: Python interface and modeling environment for SCIP
|
|
5
5
|
Home-page: https://github.com/SCIP-Interfaces/PySCIPOpt
|
|
6
6
|
Author: Zuse Institute Berlin
|
|
7
|
-
Author-email: scip@zib.de
|
|
7
|
+
Author-email: Zuse Institute Berlin <scip@zib.de>
|
|
8
8
|
License: MIT
|
|
9
|
+
Project-URL: Homepage, https://github.com/SCIP-Interfaces/PySCIPOpt
|
|
9
10
|
Classifier: Development Status :: 4 - Beta
|
|
10
|
-
Classifier: Intended Audience :: Science/Research
|
|
11
11
|
Classifier: Intended Audience :: Education
|
|
12
|
+
Classifier: Intended Audience :: Science/Research
|
|
12
13
|
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
-
Classifier: Programming Language :: Python :: 3
|
|
14
14
|
Classifier: Programming Language :: Cython
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
16
|
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
17
|
+
Requires-Python: >=3.8
|
|
16
18
|
Description-Content-Type: text/markdown
|
|
17
19
|
License-File: LICENSE
|
|
18
20
|
|
|
@@ -33,7 +35,7 @@ Documentation
|
|
|
33
35
|
|
|
34
36
|
Please consult the [online documentation](https://scipopt.github.io/PySCIPOpt/docs/html) or use the `help()` function directly in Python or `?` in IPython/Jupyter.
|
|
35
37
|
|
|
36
|
-
See [CHANGELOG.md](CHANGELOG.md) for added, removed or fixed functionality.
|
|
38
|
+
See [CHANGELOG.md](https://github.com/scipopt/PySCIPOpt/blob/master/CHANGELOG.md) for added, removed or fixed functionality.
|
|
37
39
|
|
|
38
40
|
Installation
|
|
39
41
|
------------
|
|
@@ -52,12 +54,13 @@ conda install --channel conda-forge pyscipopt
|
|
|
52
54
|
|
|
53
55
|
**Using PyPI and from Source**
|
|
54
56
|
|
|
55
|
-
See [INSTALL.md](INSTALL.md) for instructions.
|
|
57
|
+
See [INSTALL.md](https://github.com/scipopt/PySCIPOpt/blob/master/INSTALL.md) for instructions.
|
|
56
58
|
Please note that the latest PySCIPOpt version is usually only compatible with the latest major release of the SCIP Optimization Suite.
|
|
57
59
|
The following table summarizes which version of PySCIPOpt is required for a given SCIP version:
|
|
58
60
|
|
|
59
61
|
|SCIP| PySCIPOpt |
|
|
60
62
|
|----|----|
|
|
63
|
+
9.0 | 5.x
|
|
61
64
|
8.0 | 4.x
|
|
62
65
|
7.0 | 3.x
|
|
63
66
|
6.0 | 2.x
|
|
@@ -65,14 +68,14 @@ The following table summarizes which version of PySCIPOpt is required for a give
|
|
|
65
68
|
4.0 | 1.2, 1.1
|
|
66
69
|
3.2 | 1.0
|
|
67
70
|
|
|
68
|
-
Information which version of PySCIPOpt is required for a given SCIP version can also be found in [INSTALL.md](INSTALL.md).
|
|
71
|
+
Information which version of PySCIPOpt is required for a given SCIP version can also be found in [INSTALL.md](https://github.com/scipopt/PySCIPOpt/blob/master/INSTALL.md).
|
|
69
72
|
|
|
70
73
|
Building and solving a model
|
|
71
74
|
----------------------------
|
|
72
75
|
|
|
73
|
-
There are several [examples](examples/finished) and
|
|
74
|
-
[tutorials](examples/tutorial). These display some functionality of the
|
|
75
|
-
interface and can serve as an entry point for writing more complex code.
|
|
76
|
+
There are several [examples](https://github.com/scipopt/PySCIPOpt/blob/master/examples/finished) and
|
|
77
|
+
[tutorials](https://github.com/scipopt/PySCIPOpt/blob/master/examples/tutorial). These display some functionality of the
|
|
78
|
+
interface and can serve as an entry point for writing more complex code. Some of the common usecases are also available in the [recipes](https://github.com/scipopt/PySCIPOpt/blob/master/src/pyscipopt/recipes) sub-package.
|
|
76
79
|
You might also want to have a look at this article about PySCIPOpt:
|
|
77
80
|
<https://opus4.kobv.de/opus4-zib/frontdoor/index/index/docId/6045>. The
|
|
78
81
|
following steps are always required when using the interface:
|
|
@@ -146,7 +149,7 @@ functionality you require.
|
|
|
146
149
|
We are always happy to accept pull request containing patches or
|
|
147
150
|
extensions!
|
|
148
151
|
|
|
149
|
-
Please have a look at our [contribution guidelines](CONTRIBUTING.md).
|
|
152
|
+
Please have a look at our [contribution guidelines](https://github.com/scipopt/PySCIPOpt/blob/master/CONTRIBUTING.md).
|
|
150
153
|
|
|
151
154
|
Gotchas
|
|
152
155
|
-------
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PySCIPOpt
|
|
3
|
-
Version:
|
|
3
|
+
Version: 5.0.1
|
|
4
4
|
Summary: Python interface and modeling environment for SCIP
|
|
5
5
|
Home-page: https://github.com/SCIP-Interfaces/PySCIPOpt
|
|
6
6
|
Author: Zuse Institute Berlin
|
|
7
|
-
Author-email: scip@zib.de
|
|
7
|
+
Author-email: Zuse Institute Berlin <scip@zib.de>
|
|
8
8
|
License: MIT
|
|
9
|
+
Project-URL: Homepage, https://github.com/SCIP-Interfaces/PySCIPOpt
|
|
9
10
|
Classifier: Development Status :: 4 - Beta
|
|
10
|
-
Classifier: Intended Audience :: Science/Research
|
|
11
11
|
Classifier: Intended Audience :: Education
|
|
12
|
+
Classifier: Intended Audience :: Science/Research
|
|
12
13
|
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
-
Classifier: Programming Language :: Python :: 3
|
|
14
14
|
Classifier: Programming Language :: Cython
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
16
|
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
17
|
+
Requires-Python: >=3.8
|
|
16
18
|
Description-Content-Type: text/markdown
|
|
17
19
|
License-File: LICENSE
|
|
18
20
|
|
|
@@ -33,7 +35,7 @@ Documentation
|
|
|
33
35
|
|
|
34
36
|
Please consult the [online documentation](https://scipopt.github.io/PySCIPOpt/docs/html) or use the `help()` function directly in Python or `?` in IPython/Jupyter.
|
|
35
37
|
|
|
36
|
-
See [CHANGELOG.md](CHANGELOG.md) for added, removed or fixed functionality.
|
|
38
|
+
See [CHANGELOG.md](https://github.com/scipopt/PySCIPOpt/blob/master/CHANGELOG.md) for added, removed or fixed functionality.
|
|
37
39
|
|
|
38
40
|
Installation
|
|
39
41
|
------------
|
|
@@ -52,12 +54,13 @@ conda install --channel conda-forge pyscipopt
|
|
|
52
54
|
|
|
53
55
|
**Using PyPI and from Source**
|
|
54
56
|
|
|
55
|
-
See [INSTALL.md](INSTALL.md) for instructions.
|
|
57
|
+
See [INSTALL.md](https://github.com/scipopt/PySCIPOpt/blob/master/INSTALL.md) for instructions.
|
|
56
58
|
Please note that the latest PySCIPOpt version is usually only compatible with the latest major release of the SCIP Optimization Suite.
|
|
57
59
|
The following table summarizes which version of PySCIPOpt is required for a given SCIP version:
|
|
58
60
|
|
|
59
61
|
|SCIP| PySCIPOpt |
|
|
60
62
|
|----|----|
|
|
63
|
+
9.0 | 5.x
|
|
61
64
|
8.0 | 4.x
|
|
62
65
|
7.0 | 3.x
|
|
63
66
|
6.0 | 2.x
|
|
@@ -65,14 +68,14 @@ The following table summarizes which version of PySCIPOpt is required for a give
|
|
|
65
68
|
4.0 | 1.2, 1.1
|
|
66
69
|
3.2 | 1.0
|
|
67
70
|
|
|
68
|
-
Information which version of PySCIPOpt is required for a given SCIP version can also be found in [INSTALL.md](INSTALL.md).
|
|
71
|
+
Information which version of PySCIPOpt is required for a given SCIP version can also be found in [INSTALL.md](https://github.com/scipopt/PySCIPOpt/blob/master/INSTALL.md).
|
|
69
72
|
|
|
70
73
|
Building and solving a model
|
|
71
74
|
----------------------------
|
|
72
75
|
|
|
73
|
-
There are several [examples](examples/finished) and
|
|
74
|
-
[tutorials](examples/tutorial). These display some functionality of the
|
|
75
|
-
interface and can serve as an entry point for writing more complex code.
|
|
76
|
+
There are several [examples](https://github.com/scipopt/PySCIPOpt/blob/master/examples/finished) and
|
|
77
|
+
[tutorials](https://github.com/scipopt/PySCIPOpt/blob/master/examples/tutorial). These display some functionality of the
|
|
78
|
+
interface and can serve as an entry point for writing more complex code. Some of the common usecases are also available in the [recipes](https://github.com/scipopt/PySCIPOpt/blob/master/src/pyscipopt/recipes) sub-package.
|
|
76
79
|
You might also want to have a look at this article about PySCIPOpt:
|
|
77
80
|
<https://opus4.kobv.de/opus4-zib/frontdoor/index/index/docId/6045>. The
|
|
78
81
|
following steps are always required when using the interface:
|
|
@@ -146,7 +149,7 @@ functionality you require.
|
|
|
146
149
|
We are always happy to accept pull request containing patches or
|
|
147
150
|
extensions!
|
|
148
151
|
|
|
149
|
-
Please have a look at our [contribution guidelines](CONTRIBUTING.md).
|
|
152
|
+
Please have a look at our [contribution guidelines](https://github.com/scipopt/PySCIPOpt/blob/master/CONTRIBUTING.md).
|
|
150
153
|
|
|
151
154
|
Gotchas
|
|
152
155
|
-------
|
|
@@ -9,6 +9,7 @@ PySCIPOpt.egg-info/dependency_links.txt
|
|
|
9
9
|
PySCIPOpt.egg-info/top_level.txt
|
|
10
10
|
src/pyscipopt/Multidict.py
|
|
11
11
|
src/pyscipopt/__init__.py
|
|
12
|
+
src/pyscipopt/_version.py
|
|
12
13
|
src/pyscipopt/benders.pxi
|
|
13
14
|
src/pyscipopt/benderscut.pxi
|
|
14
15
|
src/pyscipopt/branchrule.pxi
|
|
@@ -29,6 +30,10 @@ src/pyscipopt/scip.pxd
|
|
|
29
30
|
src/pyscipopt/scip.pxi
|
|
30
31
|
src/pyscipopt/scip.pyx
|
|
31
32
|
src/pyscipopt/sepa.pxi
|
|
33
|
+
src/pyscipopt/recipes/__init__.py
|
|
34
|
+
src/pyscipopt/recipes/infeasibilities.py
|
|
35
|
+
src/pyscipopt/recipes/nonlinear.py
|
|
36
|
+
src/pyscipopt/recipes/piecewise.py
|
|
32
37
|
tests/test_alldiff.py
|
|
33
38
|
tests/test_benders.py
|
|
34
39
|
tests/test_branch_incomplete.py
|
|
@@ -56,6 +61,9 @@ tests/test_quadcons.py
|
|
|
56
61
|
tests/test_quickprod.py
|
|
57
62
|
tests/test_quicksum.py
|
|
58
63
|
tests/test_reader.py
|
|
64
|
+
tests/test_recipe_infeasibilities.py
|
|
65
|
+
tests/test_recipe_nonlinear.py
|
|
66
|
+
tests/test_recipe_piecewise.py
|
|
59
67
|
tests/test_relax.py
|
|
60
68
|
tests/test_reopt.py
|
|
61
69
|
tests/test_short.py
|
|
@@ -15,7 +15,7 @@ Documentation
|
|
|
15
15
|
|
|
16
16
|
Please consult the [online documentation](https://scipopt.github.io/PySCIPOpt/docs/html) or use the `help()` function directly in Python or `?` in IPython/Jupyter.
|
|
17
17
|
|
|
18
|
-
See [CHANGELOG.md](CHANGELOG.md) for added, removed or fixed functionality.
|
|
18
|
+
See [CHANGELOG.md](https://github.com/scipopt/PySCIPOpt/blob/master/CHANGELOG.md) for added, removed or fixed functionality.
|
|
19
19
|
|
|
20
20
|
Installation
|
|
21
21
|
------------
|
|
@@ -34,12 +34,13 @@ conda install --channel conda-forge pyscipopt
|
|
|
34
34
|
|
|
35
35
|
**Using PyPI and from Source**
|
|
36
36
|
|
|
37
|
-
See [INSTALL.md](INSTALL.md) for instructions.
|
|
37
|
+
See [INSTALL.md](https://github.com/scipopt/PySCIPOpt/blob/master/INSTALL.md) for instructions.
|
|
38
38
|
Please note that the latest PySCIPOpt version is usually only compatible with the latest major release of the SCIP Optimization Suite.
|
|
39
39
|
The following table summarizes which version of PySCIPOpt is required for a given SCIP version:
|
|
40
40
|
|
|
41
41
|
|SCIP| PySCIPOpt |
|
|
42
42
|
|----|----|
|
|
43
|
+
9.0 | 5.x
|
|
43
44
|
8.0 | 4.x
|
|
44
45
|
7.0 | 3.x
|
|
45
46
|
6.0 | 2.x
|
|
@@ -47,14 +48,14 @@ The following table summarizes which version of PySCIPOpt is required for a give
|
|
|
47
48
|
4.0 | 1.2, 1.1
|
|
48
49
|
3.2 | 1.0
|
|
49
50
|
|
|
50
|
-
Information which version of PySCIPOpt is required for a given SCIP version can also be found in [INSTALL.md](INSTALL.md).
|
|
51
|
+
Information which version of PySCIPOpt is required for a given SCIP version can also be found in [INSTALL.md](https://github.com/scipopt/PySCIPOpt/blob/master/INSTALL.md).
|
|
51
52
|
|
|
52
53
|
Building and solving a model
|
|
53
54
|
----------------------------
|
|
54
55
|
|
|
55
|
-
There are several [examples](examples/finished) and
|
|
56
|
-
[tutorials](examples/tutorial). These display some functionality of the
|
|
57
|
-
interface and can serve as an entry point for writing more complex code.
|
|
56
|
+
There are several [examples](https://github.com/scipopt/PySCIPOpt/blob/master/examples/finished) and
|
|
57
|
+
[tutorials](https://github.com/scipopt/PySCIPOpt/blob/master/examples/tutorial). These display some functionality of the
|
|
58
|
+
interface and can serve as an entry point for writing more complex code. Some of the common usecases are also available in the [recipes](https://github.com/scipopt/PySCIPOpt/blob/master/src/pyscipopt/recipes) sub-package.
|
|
58
59
|
You might also want to have a look at this article about PySCIPOpt:
|
|
59
60
|
<https://opus4.kobv.de/opus4-zib/frontdoor/index/index/docId/6045>. The
|
|
60
61
|
following steps are always required when using the interface:
|
|
@@ -128,7 +129,7 @@ functionality you require.
|
|
|
128
129
|
We are always happy to accept pull request containing patches or
|
|
129
130
|
extensions!
|
|
130
131
|
|
|
131
|
-
Please have a look at our [contribution guidelines](CONTRIBUTING.md).
|
|
132
|
+
Please have a look at our [contribution guidelines](https://github.com/scipopt/PySCIPOpt/blob/master/CONTRIBUTING.md).
|
|
132
133
|
|
|
133
134
|
Gotchas
|
|
134
135
|
-------
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ['setuptools', 'cython >=3.0.10']
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "PySCIPOpt"
|
|
7
|
+
description = "Python interface and modeling environment for SCIP"
|
|
8
|
+
authors = [
|
|
9
|
+
{name = "Zuse Institute Berlin", email = "scip@zib.de"},
|
|
10
|
+
]
|
|
11
|
+
dependencies = []
|
|
12
|
+
requires-python = ">=3.8"
|
|
13
|
+
readme = "README.md"
|
|
14
|
+
license = {text = "MIT"}
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Development Status :: 4 - Beta",
|
|
17
|
+
"Intended Audience :: Education",
|
|
18
|
+
"Intended Audience :: Science/Research",
|
|
19
|
+
"License :: OSI Approved :: MIT License",
|
|
20
|
+
"Programming Language :: Cython",
|
|
21
|
+
"Programming Language :: Python :: 3",
|
|
22
|
+
"Topic :: Scientific/Engineering :: Mathematics",
|
|
23
|
+
]
|
|
24
|
+
dynamic = ["version"]
|
|
25
|
+
|
|
26
|
+
[project.urls]
|
|
27
|
+
Homepage = "https://github.com/SCIP-Interfaces/PySCIPOpt"
|
|
28
|
+
|
|
29
|
+
[tool.pytest.ini_options]
|
|
30
|
+
norecursedirs = ["check"]
|
|
31
|
+
testpaths = ["tests"]
|
|
32
|
+
|
|
33
|
+
[tool.setuptools]
|
|
34
|
+
include-package-data = false
|
|
35
|
+
|
|
36
|
+
[tool.setuptools.dynamic]
|
|
37
|
+
version = {attr = "pyscipopt._version.__version__"}
|
|
38
|
+
|
|
39
|
+
[tool.cibuildwheel]
|
|
40
|
+
skip="pp*" # currently doesn't work with PyPy
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
[tool.cibuildwheel.linux]
|
|
44
|
+
skip="pp* cp36* cp37* *musllinux*"
|
|
45
|
+
before-all = [
|
|
46
|
+
"(apt-get update && apt-get install --yes wget) || yum install -y wget zlib libgfortran || brew install wget",
|
|
47
|
+
"wget https://github.com/scipopt/scipoptsuite-deploy/releases/download/v0.3.0/libscip-linux.zip -O scip.zip",
|
|
48
|
+
"unzip scip.zip",
|
|
49
|
+
"mv scip_install scip"
|
|
50
|
+
]
|
|
51
|
+
environment = { SCIPOPTDIR="$(pwd)/scip", LD_LIBRARY_PATH="$(pwd)/scip/lib:$LD_LIBRARY_PATH", DYLD_LIBRARY_PATH="$(pwd)/scip/lib:$DYLD_LIBRARY_PATH", PATH="$(pwd)/scip/bin:$PATH", PKG_CONFIG_PATH="$(pwd)/scip/lib/pkgconfig:$PKG_CONFIG_PATH"}
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
[tool.cibuildwheel.macos]
|
|
55
|
+
skip="pp* cp36* cp37*"
|
|
56
|
+
before-all = '''
|
|
57
|
+
#!/bin/bash
|
|
58
|
+
brew install wget zlib gcc
|
|
59
|
+
if [[ $CIBW_ARCHS == *"arm"* ]]; then
|
|
60
|
+
wget https://github.com/scipopt/scipoptsuite-deploy/releases/download/v0.3.0/libscip-macos-arm.zip -O scip.zip
|
|
61
|
+
else
|
|
62
|
+
wget https://github.com/scipopt/scipoptsuite-deploy/releases/download/v0.3.0/libscip-macos.zip -O scip.zip
|
|
63
|
+
fi
|
|
64
|
+
unzip scip.zip
|
|
65
|
+
mv scip_install src/scip
|
|
66
|
+
'''
|
|
67
|
+
environment = {SCIPOPTDIR="$(pwd)/src/scip", LD_LIBRARY_PATH="$(pwd)/src/scip/lib:LD_LIBRARY_PATH", DYLD_LIBRARY_PATH="$(pwd)/src/scip/lib:$DYLD_LIBRARY_PATH", PATH="$(pwd)/src/scip/bin:$PATH", PKG_CONFIG_PATH="$(pwd)/src/scip/lib/pkgconfig:$PKG_CONFIG_PATH"}
|
|
68
|
+
repair-wheel-command = [
|
|
69
|
+
"delocate-listdeps {wheel}",
|
|
70
|
+
"delocate-wheel --require-archs {delocate_archs} -w {dest_dir} {wheel}",
|
|
71
|
+
]
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
[tool.cibuildwheel.windows]
|
|
75
|
+
skip="pp* cp36* cp37*"
|
|
76
|
+
before-all = [
|
|
77
|
+
"choco install 7zip wget",
|
|
78
|
+
"wget https://github.com/scipopt/scipoptsuite-deploy/releases/download/v0.3.0/libscip-windows.zip -O scip.zip",
|
|
79
|
+
"\"C:\\Program Files\\7-Zip\\7z.exe\" x \"scip.zip\" -o\"scip-test\"",
|
|
80
|
+
"mv .\\scip-test\\scip_install .\\test",
|
|
81
|
+
"mv .\\test .\\scip"
|
|
82
|
+
]
|
|
83
|
+
before-build = "pip install delvewheel"
|
|
84
|
+
environment = { SCIPOPTDIR='D:\\a\\PySCIPOpt\\PySCIPOpt\\scip' }
|
|
85
|
+
repair-wheel-command = "delvewheel repair --add-path c:/bin;c:/lib;c:/bin/src;c:/lib/src;D:/a/PySCIPOpt/PySCIPOpt/scip/;D:/a/PySCIPOpt/PySCIPOpt/scip/lib/;D:/a/PySCIPOpt/PySCIPOpt/scip/bin/ -w {dest_dir} {wheel}"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from setuptools import setup, Extension
|
|
1
|
+
from setuptools import find_packages, setup, Extension
|
|
2
2
|
import os, platform, sys, re
|
|
3
3
|
|
|
4
4
|
# look for environment variable that specifies path to SCIP
|
|
@@ -69,11 +69,6 @@ use_cython = True
|
|
|
69
69
|
|
|
70
70
|
packagedir = os.path.join("src", "pyscipopt")
|
|
71
71
|
|
|
72
|
-
with open(os.path.join(packagedir, "__init__.py"), "r") as initfile:
|
|
73
|
-
version = re.search(
|
|
74
|
-
r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]', initfile.read(), re.MULTILINE
|
|
75
|
-
).group(1)
|
|
76
|
-
|
|
77
72
|
try:
|
|
78
73
|
from Cython.Build import cythonize
|
|
79
74
|
except ImportError as err:
|
|
@@ -111,7 +106,7 @@ with open("README.md") as f:
|
|
|
111
106
|
|
|
112
107
|
setup(
|
|
113
108
|
name="PySCIPOpt",
|
|
114
|
-
version="
|
|
109
|
+
version="5.0.1",
|
|
115
110
|
description="Python interface and modeling environment for SCIP",
|
|
116
111
|
long_description=long_description,
|
|
117
112
|
long_description_content_type="text/markdown",
|
|
@@ -129,7 +124,7 @@ setup(
|
|
|
129
124
|
"Topic :: Scientific/Engineering :: Mathematics",
|
|
130
125
|
],
|
|
131
126
|
ext_modules=extensions,
|
|
132
|
-
packages=
|
|
127
|
+
packages=find_packages(where="src"),
|
|
133
128
|
package_dir={"pyscipopt": packagedir},
|
|
134
129
|
package_data={"pyscipopt": ["scip.pyx", "scip.pxd", "*.pxi", "scip/lib/*"]},
|
|
135
130
|
include_package_data=True,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
from ._version import __version__
|
|
2
2
|
|
|
3
3
|
# required for Python 3.8 on Windows
|
|
4
4
|
import os
|
|
@@ -9,6 +9,8 @@ if hasattr(os, 'add_dll_directory'):
|
|
|
9
9
|
# export user-relevant objects:
|
|
10
10
|
from pyscipopt.Multidict import multidict
|
|
11
11
|
from pyscipopt.scip import Model
|
|
12
|
+
from pyscipopt.scip import Variable
|
|
13
|
+
from pyscipopt.scip import Constraint
|
|
12
14
|
from pyscipopt.scip import Benders
|
|
13
15
|
from pyscipopt.scip import Benderscut
|
|
14
16
|
from pyscipopt.scip import Branchrule
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '5.0.1'
|
|
@@ -70,10 +70,10 @@ cdef Variable getPyVar(SCIP_VAR* var):
|
|
|
70
70
|
return <Variable>vardata
|
|
71
71
|
|
|
72
72
|
|
|
73
|
-
cdef SCIP_RETCODE PyBendersCopy (SCIP* scip, SCIP_BENDERS* benders, SCIP_Bool threadsafe) with gil:
|
|
73
|
+
cdef SCIP_RETCODE PyBendersCopy (SCIP* scip, SCIP_BENDERS* benders, SCIP_Bool threadsafe) noexcept with gil:
|
|
74
74
|
return SCIP_OKAY
|
|
75
75
|
|
|
76
|
-
cdef SCIP_RETCODE PyBendersFree (SCIP* scip, SCIP_BENDERS* benders) with gil:
|
|
76
|
+
cdef SCIP_RETCODE PyBendersFree (SCIP* scip, SCIP_BENDERS* benders) noexcept with gil:
|
|
77
77
|
cdef SCIP_BENDERSDATA* bendersdata
|
|
78
78
|
bendersdata = SCIPbendersGetData(benders)
|
|
79
79
|
PyBenders = <Benders>bendersdata
|
|
@@ -81,56 +81,56 @@ cdef SCIP_RETCODE PyBendersFree (SCIP* scip, SCIP_BENDERS* benders) with gil:
|
|
|
81
81
|
Py_DECREF(PyBenders)
|
|
82
82
|
return SCIP_OKAY
|
|
83
83
|
|
|
84
|
-
cdef SCIP_RETCODE PyBendersInit (SCIP* scip, SCIP_BENDERS* benders) with gil:
|
|
84
|
+
cdef SCIP_RETCODE PyBendersInit (SCIP* scip, SCIP_BENDERS* benders) noexcept with gil:
|
|
85
85
|
cdef SCIP_BENDERSDATA* bendersdata
|
|
86
86
|
bendersdata = SCIPbendersGetData(benders)
|
|
87
87
|
PyBenders = <Benders>bendersdata
|
|
88
88
|
PyBenders.bendersinit()
|
|
89
89
|
return SCIP_OKAY
|
|
90
90
|
|
|
91
|
-
cdef SCIP_RETCODE PyBendersExit (SCIP* scip, SCIP_BENDERS* benders) with gil:
|
|
91
|
+
cdef SCIP_RETCODE PyBendersExit (SCIP* scip, SCIP_BENDERS* benders) noexcept with gil:
|
|
92
92
|
cdef SCIP_BENDERSDATA* bendersdata
|
|
93
93
|
bendersdata = SCIPbendersGetData(benders)
|
|
94
94
|
PyBenders = <Benders>bendersdata
|
|
95
95
|
PyBenders.bendersexit()
|
|
96
96
|
return SCIP_OKAY
|
|
97
97
|
|
|
98
|
-
cdef SCIP_RETCODE PyBendersInitpre (SCIP* scip, SCIP_BENDERS* benders) with gil:
|
|
98
|
+
cdef SCIP_RETCODE PyBendersInitpre (SCIP* scip, SCIP_BENDERS* benders) noexcept with gil:
|
|
99
99
|
cdef SCIP_BENDERSDATA* bendersdata
|
|
100
100
|
bendersdata = SCIPbendersGetData(benders)
|
|
101
101
|
PyBenders = <Benders>bendersdata
|
|
102
102
|
PyBenders.bendersinitpre()
|
|
103
103
|
return SCIP_OKAY
|
|
104
104
|
|
|
105
|
-
cdef SCIP_RETCODE PyBendersExitpre (SCIP* scip, SCIP_BENDERS* benders) with gil:
|
|
105
|
+
cdef SCIP_RETCODE PyBendersExitpre (SCIP* scip, SCIP_BENDERS* benders) noexcept with gil:
|
|
106
106
|
cdef SCIP_BENDERSDATA* bendersdata
|
|
107
107
|
bendersdata = SCIPbendersGetData(benders)
|
|
108
108
|
PyBenders = <Benders>bendersdata
|
|
109
109
|
PyBenders.bendersexitpre()
|
|
110
110
|
return SCIP_OKAY
|
|
111
111
|
|
|
112
|
-
cdef SCIP_RETCODE PyBendersInitsol (SCIP* scip, SCIP_BENDERS* benders) with gil:
|
|
112
|
+
cdef SCIP_RETCODE PyBendersInitsol (SCIP* scip, SCIP_BENDERS* benders) noexcept with gil:
|
|
113
113
|
cdef SCIP_BENDERSDATA* bendersdata
|
|
114
114
|
bendersdata = SCIPbendersGetData(benders)
|
|
115
115
|
PyBenders = <Benders>bendersdata
|
|
116
116
|
PyBenders.bendersinitsol()
|
|
117
117
|
return SCIP_OKAY
|
|
118
118
|
|
|
119
|
-
cdef SCIP_RETCODE PyBendersExitsol (SCIP* scip, SCIP_BENDERS* benders) with gil:
|
|
119
|
+
cdef SCIP_RETCODE PyBendersExitsol (SCIP* scip, SCIP_BENDERS* benders) noexcept with gil:
|
|
120
120
|
cdef SCIP_BENDERSDATA* bendersdata
|
|
121
121
|
bendersdata = SCIPbendersGetData(benders)
|
|
122
122
|
PyBenders = <Benders>bendersdata
|
|
123
123
|
PyBenders.bendersexitsol()
|
|
124
124
|
return SCIP_OKAY
|
|
125
125
|
|
|
126
|
-
cdef SCIP_RETCODE PyBendersCreatesub (SCIP* scip, SCIP_BENDERS* benders, int probnumber) with gil:
|
|
126
|
+
cdef SCIP_RETCODE PyBendersCreatesub (SCIP* scip, SCIP_BENDERS* benders, int probnumber) noexcept with gil:
|
|
127
127
|
cdef SCIP_BENDERSDATA* bendersdata
|
|
128
128
|
bendersdata = SCIPbendersGetData(benders)
|
|
129
129
|
PyBenders = <Benders>bendersdata
|
|
130
130
|
PyBenders.benderscreatesub(probnumber)
|
|
131
131
|
return SCIP_OKAY
|
|
132
132
|
|
|
133
|
-
cdef SCIP_RETCODE PyBendersPresubsolve (SCIP* scip, SCIP_BENDERS* benders, SCIP_SOL* sol, SCIP_BENDERSENFOTYPE type, SCIP_Bool checkint, SCIP_Bool* infeasible, SCIP_Bool* auxviol, SCIP_Bool* skipsolve, SCIP_RESULT* result) with gil:
|
|
133
|
+
cdef SCIP_RETCODE PyBendersPresubsolve (SCIP* scip, SCIP_BENDERS* benders, SCIP_SOL* sol, SCIP_BENDERSENFOTYPE type, SCIP_Bool checkint, SCIP_Bool* infeasible, SCIP_Bool* auxviol, SCIP_Bool* skipsolve, SCIP_RESULT* result) noexcept with gil:
|
|
134
134
|
cdef SCIP_BENDERSDATA* bendersdata
|
|
135
135
|
bendersdata = SCIPbendersGetData(benders)
|
|
136
136
|
PyBenders = <Benders>bendersdata
|
|
@@ -146,7 +146,7 @@ cdef SCIP_RETCODE PyBendersPresubsolve (SCIP* scip, SCIP_BENDERS* benders, SCIP_
|
|
|
146
146
|
result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
|
|
147
147
|
return SCIP_OKAY
|
|
148
148
|
|
|
149
|
-
cdef SCIP_RETCODE PyBendersSolvesubconvex (SCIP* scip, SCIP_BENDERS* benders, SCIP_SOL* sol, int probnumber, SCIP_Bool onlyconvex, SCIP_Real* objective, SCIP_RESULT* result) with gil:
|
|
149
|
+
cdef SCIP_RETCODE PyBendersSolvesubconvex (SCIP* scip, SCIP_BENDERS* benders, SCIP_SOL* sol, int probnumber, SCIP_Bool onlyconvex, SCIP_Real* objective, SCIP_RESULT* result) noexcept with gil:
|
|
150
150
|
cdef SCIP_BENDERSDATA* bendersdata
|
|
151
151
|
bendersdata = SCIPbendersGetData(benders)
|
|
152
152
|
PyBenders = <Benders>bendersdata
|
|
@@ -159,7 +159,7 @@ cdef SCIP_RETCODE PyBendersSolvesubconvex (SCIP* scip, SCIP_BENDERS* benders, SC
|
|
|
159
159
|
result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
|
|
160
160
|
return SCIP_OKAY
|
|
161
161
|
|
|
162
|
-
cdef SCIP_RETCODE PyBendersSolvesub (SCIP* scip, SCIP_BENDERS* benders, SCIP_SOL* sol, int probnumber, SCIP_Real* objective, SCIP_RESULT* result) with gil:
|
|
162
|
+
cdef SCIP_RETCODE PyBendersSolvesub (SCIP* scip, SCIP_BENDERS* benders, SCIP_SOL* sol, int probnumber, SCIP_Real* objective, SCIP_RESULT* result) noexcept with gil:
|
|
163
163
|
cdef SCIP_BENDERSDATA* bendersdata
|
|
164
164
|
bendersdata = SCIPbendersGetData(benders)
|
|
165
165
|
PyBenders = <Benders>bendersdata
|
|
@@ -174,7 +174,7 @@ cdef SCIP_RETCODE PyBendersSolvesub (SCIP* scip, SCIP_BENDERS* benders, SCIP_SOL
|
|
|
174
174
|
|
|
175
175
|
cdef SCIP_RETCODE PyBendersPostsolve (SCIP* scip, SCIP_BENDERS* benders, SCIP_SOL* sol,
|
|
176
176
|
SCIP_BENDERSENFOTYPE type, int* mergecands, int npriomergecands, int nmergecands, SCIP_Bool checkint,
|
|
177
|
-
SCIP_Bool infeasible, SCIP_Bool* merged) with
|
|
177
|
+
SCIP_Bool infeasible, SCIP_Bool* merged) noexcept with gil:
|
|
178
178
|
cdef SCIP_BENDERSDATA* bendersdata
|
|
179
179
|
bendersdata = SCIPbendersGetData(benders)
|
|
180
180
|
PyBenders = <Benders>bendersdata
|
|
@@ -190,7 +190,7 @@ cdef SCIP_RETCODE PyBendersPostsolve (SCIP* scip, SCIP_BENDERS* benders, SCIP_SO
|
|
|
190
190
|
merged[0] = result_dict.get("merged", False)
|
|
191
191
|
return SCIP_OKAY
|
|
192
192
|
|
|
193
|
-
cdef SCIP_RETCODE PyBendersFreesub (SCIP* scip, SCIP_BENDERS* benders, int probnumber) with gil:
|
|
193
|
+
cdef SCIP_RETCODE PyBendersFreesub (SCIP* scip, SCIP_BENDERS* benders, int probnumber) noexcept with gil:
|
|
194
194
|
cdef SCIP_BENDERSDATA* bendersdata
|
|
195
195
|
bendersdata = SCIPbendersGetData(benders)
|
|
196
196
|
PyBenders = <Benders>bendersdata
|
|
@@ -198,7 +198,7 @@ cdef SCIP_RETCODE PyBendersFreesub (SCIP* scip, SCIP_BENDERS* benders, int probn
|
|
|
198
198
|
return SCIP_OKAY
|
|
199
199
|
|
|
200
200
|
#TODO: Really need to ask about the passing and returning of variables
|
|
201
|
-
cdef SCIP_RETCODE PyBendersGetvar (SCIP* scip, SCIP_BENDERS* benders, SCIP_VAR* var, SCIP_VAR** mappedvar, int probnumber) with gil:
|
|
201
|
+
cdef SCIP_RETCODE PyBendersGetvar (SCIP* scip, SCIP_BENDERS* benders, SCIP_VAR* var, SCIP_VAR** mappedvar, int probnumber) noexcept with gil:
|
|
202
202
|
cdef SCIP_BENDERSDATA* bendersdata
|
|
203
203
|
bendersdata = SCIPbendersGetData(benders)
|
|
204
204
|
PyBenders = <Benders>bendersdata
|
|
@@ -24,10 +24,10 @@ cdef class Benderscut:
|
|
|
24
24
|
print("python error in benderscutexec: this method needs to be implemented")
|
|
25
25
|
return {}
|
|
26
26
|
|
|
27
|
-
cdef SCIP_RETCODE PyBenderscutCopy (SCIP* scip, SCIP_BENDERS* benders, SCIP_BENDERSCUT* benderscut) with gil:
|
|
27
|
+
cdef SCIP_RETCODE PyBenderscutCopy (SCIP* scip, SCIP_BENDERS* benders, SCIP_BENDERSCUT* benderscut) noexcept with gil:
|
|
28
28
|
return SCIP_OKAY
|
|
29
29
|
|
|
30
|
-
cdef SCIP_RETCODE PyBenderscutFree (SCIP* scip, SCIP_BENDERSCUT* benderscut) with gil:
|
|
30
|
+
cdef SCIP_RETCODE PyBenderscutFree (SCIP* scip, SCIP_BENDERSCUT* benderscut) noexcept with gil:
|
|
31
31
|
cdef SCIP_BENDERSCUTDATA* benderscutdata
|
|
32
32
|
benderscutdata = SCIPbenderscutGetData(benderscut)
|
|
33
33
|
PyBenderscut = <Benderscut>benderscutdata
|
|
@@ -35,35 +35,35 @@ cdef SCIP_RETCODE PyBenderscutFree (SCIP* scip, SCIP_BENDERSCUT* benderscut) wit
|
|
|
35
35
|
Py_DECREF(PyBenderscut)
|
|
36
36
|
return SCIP_OKAY
|
|
37
37
|
|
|
38
|
-
cdef SCIP_RETCODE PyBenderscutInit (SCIP* scip, SCIP_BENDERSCUT* benderscut) with gil:
|
|
38
|
+
cdef SCIP_RETCODE PyBenderscutInit (SCIP* scip, SCIP_BENDERSCUT* benderscut) noexcept with gil:
|
|
39
39
|
cdef SCIP_BENDERSCUTDATA* benderscutdata
|
|
40
40
|
benderscutdata = SCIPbenderscutGetData(benderscut)
|
|
41
41
|
PyBenderscut = <Benderscut>benderscutdata
|
|
42
42
|
PyBenderscut.benderscutinit()
|
|
43
43
|
return SCIP_OKAY
|
|
44
44
|
|
|
45
|
-
cdef SCIP_RETCODE PyBenderscutExit (SCIP* scip, SCIP_BENDERSCUT* benderscut) with gil:
|
|
45
|
+
cdef SCIP_RETCODE PyBenderscutExit (SCIP* scip, SCIP_BENDERSCUT* benderscut) noexcept with gil:
|
|
46
46
|
cdef SCIP_BENDERSCUTDATA* benderscutdata
|
|
47
47
|
benderscutdata = SCIPbenderscutGetData(benderscut)
|
|
48
48
|
PyBenderscut = <Benderscut>benderscutdata
|
|
49
49
|
PyBenderscut.benderscutexit()
|
|
50
50
|
return SCIP_OKAY
|
|
51
51
|
|
|
52
|
-
cdef SCIP_RETCODE PyBenderscutInitsol (SCIP* scip, SCIP_BENDERSCUT* benderscut) with gil:
|
|
52
|
+
cdef SCIP_RETCODE PyBenderscutInitsol (SCIP* scip, SCIP_BENDERSCUT* benderscut) noexcept with gil:
|
|
53
53
|
cdef SCIP_BENDERSCUTDATA* benderscutdata
|
|
54
54
|
benderscutdata = SCIPbenderscutGetData(benderscut)
|
|
55
55
|
PyBenderscut = <Benderscut>benderscutdata
|
|
56
56
|
PyBenderscut.benderscutinitsol()
|
|
57
57
|
return SCIP_OKAY
|
|
58
58
|
|
|
59
|
-
cdef SCIP_RETCODE PyBenderscutExitsol (SCIP* scip, SCIP_BENDERSCUT* benderscut) with gil:
|
|
59
|
+
cdef SCIP_RETCODE PyBenderscutExitsol (SCIP* scip, SCIP_BENDERSCUT* benderscut) noexcept with gil:
|
|
60
60
|
cdef SCIP_BENDERSCUTDATA* benderscutdata
|
|
61
61
|
benderscutdata = SCIPbenderscutGetData(benderscut)
|
|
62
62
|
PyBenderscut = <Benderscut>benderscutdata
|
|
63
63
|
PyBenderscut.benderscutexitsol()
|
|
64
64
|
return SCIP_OKAY
|
|
65
65
|
|
|
66
|
-
cdef SCIP_RETCODE PyBenderscutExec (SCIP* scip, SCIP_BENDERS* benders, SCIP_BENDERSCUT* benderscut, SCIP_SOL* sol, int probnumber, SCIP_BENDERSENFOTYPE type, SCIP_RESULT* result) with gil:
|
|
66
|
+
cdef SCIP_RETCODE PyBenderscutExec (SCIP* scip, SCIP_BENDERS* benders, SCIP_BENDERSCUT* benderscut, SCIP_SOL* sol, int probnumber, SCIP_BENDERSENFOTYPE type, SCIP_RESULT* result) noexcept with gil:
|
|
67
67
|
cdef SCIP_BENDERSCUTDATA* benderscutdata
|
|
68
68
|
benderscutdata = SCIPbenderscutGetData(benderscut)
|
|
69
69
|
PyBenderscut = <Benderscut>benderscutdata
|
|
@@ -39,10 +39,10 @@ cdef class Branchrule:
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
|
|
42
|
-
cdef SCIP_RETCODE PyBranchruleCopy (SCIP* scip, SCIP_BRANCHRULE* branchrule) with gil:
|
|
42
|
+
cdef SCIP_RETCODE PyBranchruleCopy (SCIP* scip, SCIP_BRANCHRULE* branchrule) noexcept with gil:
|
|
43
43
|
return SCIP_OKAY
|
|
44
44
|
|
|
45
|
-
cdef SCIP_RETCODE PyBranchruleFree (SCIP* scip, SCIP_BRANCHRULE* branchrule) with gil:
|
|
45
|
+
cdef SCIP_RETCODE PyBranchruleFree (SCIP* scip, SCIP_BRANCHRULE* branchrule) noexcept with gil:
|
|
46
46
|
cdef SCIP_BRANCHRULEDATA* branchruledata
|
|
47
47
|
branchruledata = SCIPbranchruleGetData(branchrule)
|
|
48
48
|
PyBranchrule = <Branchrule>branchruledata
|
|
@@ -50,35 +50,35 @@ cdef SCIP_RETCODE PyBranchruleFree (SCIP* scip, SCIP_BRANCHRULE* branchrule) wit
|
|
|
50
50
|
Py_DECREF(PyBranchrule)
|
|
51
51
|
return SCIP_OKAY
|
|
52
52
|
|
|
53
|
-
cdef SCIP_RETCODE PyBranchruleInit (SCIP* scip, SCIP_BRANCHRULE* branchrule) with gil:
|
|
53
|
+
cdef SCIP_RETCODE PyBranchruleInit (SCIP* scip, SCIP_BRANCHRULE* branchrule) noexcept with gil:
|
|
54
54
|
cdef SCIP_BRANCHRULEDATA* branchruledata
|
|
55
55
|
branchruledata = SCIPbranchruleGetData(branchrule)
|
|
56
56
|
PyBranchrule = <Branchrule>branchruledata
|
|
57
57
|
PyBranchrule.branchinit()
|
|
58
58
|
return SCIP_OKAY
|
|
59
59
|
|
|
60
|
-
cdef SCIP_RETCODE PyBranchruleExit (SCIP* scip, SCIP_BRANCHRULE* branchrule) with gil:
|
|
60
|
+
cdef SCIP_RETCODE PyBranchruleExit (SCIP* scip, SCIP_BRANCHRULE* branchrule) noexcept with gil:
|
|
61
61
|
cdef SCIP_BRANCHRULEDATA* branchruledata
|
|
62
62
|
branchruledata = SCIPbranchruleGetData(branchrule)
|
|
63
63
|
PyBranchrule = <Branchrule>branchruledata
|
|
64
64
|
PyBranchrule.branchexit()
|
|
65
65
|
return SCIP_OKAY
|
|
66
66
|
|
|
67
|
-
cdef SCIP_RETCODE PyBranchruleInitsol (SCIP* scip, SCIP_BRANCHRULE* branchrule) with gil:
|
|
67
|
+
cdef SCIP_RETCODE PyBranchruleInitsol (SCIP* scip, SCIP_BRANCHRULE* branchrule) noexcept with gil:
|
|
68
68
|
cdef SCIP_BRANCHRULEDATA* branchruledata
|
|
69
69
|
branchruledata = SCIPbranchruleGetData(branchrule)
|
|
70
70
|
PyBranchrule = <Branchrule>branchruledata
|
|
71
71
|
PyBranchrule.branchinitsol()
|
|
72
72
|
return SCIP_OKAY
|
|
73
73
|
|
|
74
|
-
cdef SCIP_RETCODE PyBranchruleExitsol (SCIP* scip, SCIP_BRANCHRULE* branchrule) with gil:
|
|
74
|
+
cdef SCIP_RETCODE PyBranchruleExitsol (SCIP* scip, SCIP_BRANCHRULE* branchrule) noexcept with gil:
|
|
75
75
|
cdef SCIP_BRANCHRULEDATA* branchruledata
|
|
76
76
|
branchruledata = SCIPbranchruleGetData(branchrule)
|
|
77
77
|
PyBranchrule = <Branchrule>branchruledata
|
|
78
78
|
PyBranchrule.branchexitsol()
|
|
79
79
|
return SCIP_OKAY
|
|
80
80
|
|
|
81
|
-
cdef SCIP_RETCODE PyBranchruleExeclp (SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result) with gil:
|
|
81
|
+
cdef SCIP_RETCODE PyBranchruleExeclp (SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result) noexcept with gil:
|
|
82
82
|
cdef SCIP_BRANCHRULEDATA* branchruledata
|
|
83
83
|
branchruledata = SCIPbranchruleGetData(branchrule)
|
|
84
84
|
PyBranchrule = <Branchrule>branchruledata
|
|
@@ -86,7 +86,7 @@ cdef SCIP_RETCODE PyBranchruleExeclp (SCIP* scip, SCIP_BRANCHRULE* branchrule, S
|
|
|
86
86
|
result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
|
|
87
87
|
return SCIP_OKAY
|
|
88
88
|
|
|
89
|
-
cdef SCIP_RETCODE PyBranchruleExecext(SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result) with gil:
|
|
89
|
+
cdef SCIP_RETCODE PyBranchruleExecext(SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result) noexcept with gil:
|
|
90
90
|
cdef SCIP_BRANCHRULEDATA* branchruledata
|
|
91
91
|
branchruledata = SCIPbranchruleGetData(branchrule)
|
|
92
92
|
PyBranchrule = <Branchrule>branchruledata
|
|
@@ -94,7 +94,7 @@ cdef SCIP_RETCODE PyBranchruleExecext(SCIP* scip, SCIP_BRANCHRULE* branchrule, S
|
|
|
94
94
|
result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
|
|
95
95
|
return SCIP_OKAY
|
|
96
96
|
|
|
97
|
-
cdef SCIP_RETCODE PyBranchruleExecps(SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result) with gil:
|
|
97
|
+
cdef SCIP_RETCODE PyBranchruleExecps(SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result) noexcept with gil:
|
|
98
98
|
cdef SCIP_BRANCHRULEDATA* branchruledata
|
|
99
99
|
branchruledata = SCIPbranchruleGetData(branchrule)
|
|
100
100
|
PyBranchrule = <Branchrule>branchruledata
|