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.
Files changed (75) hide show
  1. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/PKG-INFO +14 -11
  2. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/PySCIPOpt.egg-info/PKG-INFO +14 -11
  3. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/PySCIPOpt.egg-info/SOURCES.txt +8 -0
  4. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/README.md +8 -7
  5. pyscipopt-5.0.1/pyproject.toml +85 -0
  6. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/setup.cfg +0 -4
  7. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/setup.py +3 -8
  8. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/__init__.py +3 -1
  9. pyscipopt-5.0.1/src/pyscipopt/_version.py +1 -0
  10. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/benders.pxi +15 -15
  11. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/benderscut.pxi +7 -7
  12. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/branchrule.pxi +9 -9
  13. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/conshdlr.pxi +56 -32
  14. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/cutsel.pxi +7 -7
  15. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/event.pxi +9 -9
  16. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/heuristic.pxi +7 -7
  17. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/nodesel.pxi +8 -8
  18. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/presol.pxi +7 -7
  19. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/pricer.pxi +8 -8
  20. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/propagator.pxi +11 -11
  21. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/reader.pxi +4 -4
  22. pyscipopt-5.0.1/src/pyscipopt/recipes/__init__.py +0 -0
  23. pyscipopt-5.0.1/src/pyscipopt/recipes/infeasibilities.py +50 -0
  24. pyscipopt-5.0.1/src/pyscipopt/recipes/nonlinear.py +18 -0
  25. pyscipopt-5.0.1/src/pyscipopt/recipes/piecewise.py +39 -0
  26. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/relax.pxi +7 -7
  27. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/scip.c +169745 -84079
  28. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/scip.pxd +31 -1
  29. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/scip.pxi +531 -234
  30. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/sepa.pxi +8 -8
  31. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_benders.py +1 -1
  32. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_branch_incomplete.py +3 -7
  33. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_cons.py +55 -2
  34. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_event.py +6 -6
  35. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_linexpr.py +1 -6
  36. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_model.py +105 -2
  37. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_nonlinear.py +25 -6
  38. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_pricer.py +7 -6
  39. pyscipopt-5.0.1/tests/test_recipe_infeasibilities.py +29 -0
  40. pyscipopt-5.0.1/tests/test_recipe_nonlinear.py +52 -0
  41. pyscipopt-5.0.1/tests/test_recipe_piecewise.py +29 -0
  42. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_solution.py +28 -0
  43. PySCIPOpt-4.4.0/pyproject.toml +0 -46
  44. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/LICENSE +0 -0
  45. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/PySCIPOpt.egg-info/dependency_links.txt +0 -0
  46. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/PySCIPOpt.egg-info/top_level.txt +0 -0
  47. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/Multidict.py +0 -0
  48. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/expr.pxi +0 -0
  49. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/lp.pxi +0 -0
  50. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/src/pyscipopt/scip.pyx +0 -0
  51. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_alldiff.py +0 -0
  52. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_branch_probing_lp.py +0 -0
  53. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_conshdlr.py +0 -0
  54. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_copy.py +0 -0
  55. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_customizedbenders.py +0 -0
  56. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_cutsel.py +0 -0
  57. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_expr.py +0 -0
  58. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_gomory.py +0 -0
  59. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_heur.py +0 -0
  60. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_knapsack.py +0 -0
  61. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_logical.py +0 -0
  62. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_lp.py +0 -0
  63. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_memory.py +0 -0
  64. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_nlrow.py +0 -0
  65. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_nodesel.py +0 -0
  66. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_quadcons.py +0 -0
  67. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_quickprod.py +0 -0
  68. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_quicksum.py +0 -0
  69. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_reader.py +0 -0
  70. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_relax.py +0 -0
  71. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_reopt.py +0 -0
  72. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_short.py +0 -0
  73. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_tree.py +0 -0
  74. {PySCIPOpt-4.4.0 → pyscipopt-5.0.1}/tests/test_tsp.py +0 -0
  75. {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: 4.4.0
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: 4.4.0
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,7 +1,3 @@
1
- [tool:pytest]
2
- norecursedirs = check
3
- testpaths = tests
4
-
5
1
  [bdist_wheel]
6
2
  universal = 1
7
3
 
@@ -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="4.4.0",
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=["pyscipopt"],
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
- __version__ = '4.4.0'
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 gil:
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