Skip to content

Commit 2b0fa85

Browse files
authored
Merge branch 'master' into issue/1074
2 parents 09a222b + 1d902af commit 2b0fa85

18 files changed

+219
-92
lines changed

.github/workflows/build_wheels.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
arch: x86_64
3131
- os: macos-14
3232
arch: arm64
33-
- os: macos-13
33+
- os: macos-15-intel
3434
arch: x86_64
3535
- os: windows-latest
3636
arch: AMD64
@@ -41,12 +41,11 @@ jobs:
4141
- uses: actions/checkout@v4
4242

4343
- name: Build wheels
44-
uses: pypa/cibuildwheel@v2.21.1
44+
uses: pypa/cibuildwheel@v3.2.1
4545
env:
4646
CIBW_ARCHS: ${{ matrix.arch }}
4747
CIBW_BEFORE_TEST: "pip install -r {project}/requirements/test.txt"
4848
CIBW_TEST_COMMAND: "pytest {project}/tests"
49-
CIBW_MANYLINUX_*_IMAGE: manylinux_2_28
5049

5150
- uses: actions/upload-artifact@v4
5251
with:

.github/workflows/coverage.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: Run tests with coverage
22
env:
3-
version: 9.2.3
3+
version: 9.2.4
44

55
on:
66
push:

.github/workflows/integration-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Integration test
22

33
env:
4-
version: 9.2.3
4+
version: 9.2.4
55

66
on:
77
push:

.github/workflows/test-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: TestPyPI release
22

33
env:
4-
version: 9.2.3
4+
version: 9.2.4
55

66

77
# runs only when a release is published, not on drafts

.github/workflows/update-packages-and-documentation.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Test and Release PyPI Package
22

33
env:
4-
version: 9.2.3
4+
version: 9.2.4
55

66

77
# runs only when a release is published, not on drafts

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,34 @@
22

33
## Unreleased
44
### Added
5+
### Fixed
6+
### Changed
7+
### Removed
8+
9+
## 5.7.0 - 2025.11.17
10+
### Added
511
- Added possibility of having variables in exponent.
612
- Added basic type stubs to help with IDE autocompletion and type checking.
713
- MatrixVariable comparisons (<=, >=, ==) now support numpy's broadcast feature.
814
- Added methods: getMaxDepth(), getPlungeDepth(), getLowerbound(), getCutoffbound(), getNNodeLPIterations(), getNStrongbranchLPIterations().
915
- setup.py now automatically detects conda environments when SCIPOPTDIR is not defined.
16+
- Added function getStatus() to get variable status in variable class
17+
- Added function isActive() to get whether a variable is active in variable class
18+
- Added function markDoNotAggrVar() to prevent a variable from being aggregated
19+
- Added function markDoNotMultaggrVar() to prevent a variable from being multi-aggregated
1020
### Fixed
1121
- Implemented all binary operations between MatrixExpr and GenExpr
1222
- Fixed the type of @ matrix operation result from MatrixVariable to MatrixExpr.
1323
- Fixed the case for returning None from the nodeselect callback in Node Selector plugins.
24+
- Fixed segmentation fault during Benders decomposition cleanup caused by double-free bug
1425
### Changed
1526
- Add package extras for test dependencies in `pyproject.toml`
1627
- Speed up MatrixVariable.sum(axis=None) via quicksum
1728
- MatrixVariable now supports comparison with Expr
29+
- Benders subproblem memory is now automatically managed by the master Model - `freeBendersSubproblems()` is deprecated and no longer needed
1830
### Removed
1931

32+
2033
## 5.6.0 - 2025.08.26
2134
### Added
2235
- More support for AND-Constraints

docs/build.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ To download SCIP please either use the pre-built SCIP Optimization Suite availab
2222
* - SCIP
2323
- PySCIPOpt
2424
* - 9.2
25-
- 5.3, 5.4+
25+
- 5.3, 5.4, 5.5, 5.6, 5.7
2626
* - 9.1
2727
- 5.1, 5.2.x
2828
* - 9.0

pyproject.toml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ AARCH=$(uname -m)
5151
echo "------"
5252
echo $AARCH
5353
if [[ $AARCH == "aarch64" ]]; then
54-
wget https://github.com/scipopt/scipoptsuite-deploy/releases/download/v0.8.0/libscip-linux-arm.zip -O scip.zip
54+
wget https://github.com/scipopt/scipoptsuite-deploy/releases/download/v0.9.0/libscip-linux-arm.zip -O scip.zip
5555
else
56-
wget https://github.com/scipopt/scipoptsuite-deploy/releases/download/v0.8.0/libscip-linux.zip -O scip.zip
56+
wget https://github.com/scipopt/scipoptsuite-deploy/releases/download/v0.9.0/libscip-linux.zip -O scip.zip
5757
fi
5858
unzip scip.zip
5959
mv scip_install scip
@@ -67,11 +67,11 @@ before-all = '''
6767
#!/bin/bash
6868
brew install wget zlib gcc
6969
if [[ $CIBW_ARCHS == *"arm"* ]]; then
70-
wget https://github.com/scipopt/scipoptsuite-deploy/releases/download/v0.8.0/libscip-macos-arm.zip -O scip.zip
70+
wget https://github.com/scipopt/scipoptsuite-deploy/releases/download/v0.9.0/libscip-macos-arm.zip -O scip.zip
7171
export MACOSX_DEPLOYMENT_TARGET=14.0
7272
else
73-
wget https://github.com/scipopt/scipoptsuite-deploy/releases/download/v0.8.0/libscip-macos-intel.zip -O scip.zip
74-
export MACOSX_DEPLOYMENT_TARGET=13.0
73+
wget https://github.com/scipopt/scipoptsuite-deploy/releases/download/v0.9.0/libscip-macos-intel.zip -O scip.zip
74+
export MACOSX_DEPLOYMENT_TARGET=14.0
7575
fi
7676
unzip scip.zip
7777
mv scip_install src/scip
@@ -84,7 +84,7 @@ repair-wheel-command = '''
8484
delocate-listdeps {wheel}
8585
delocate-wheel --require-archs {delocate_archs} -w {dest_dir} {wheel}
8686
else
87-
export MACOSX_DEPLOYMENT_TARGET=13.0
87+
export MACOSX_DEPLOYMENT_TARGET=14.0
8888
delocate-listdeps {wheel}
8989
delocate-wheel --require-archs {delocate_archs} -w {dest_dir} {wheel}
9090
fi
@@ -96,7 +96,7 @@ repair-wheel-command = '''
9696
skip="pp* cp36* cp37*"
9797
before-all = [
9898
"choco install 7zip wget",
99-
"wget https://github.com/scipopt/scipoptsuite-deploy/releases/download/v0.8.0/libscip-windows.zip -O scip.zip",
99+
"wget https://github.com/scipopt/scipoptsuite-deploy/releases/download/v0.9.0/libscip-windows.zip -O scip.zip",
100100
"\"C:\\Program Files\\7-Zip\\7z.exe\" x \"scip.zip\" -o\"scip-test\"",
101101
"mv .\\scip-test\\scip_install .\\test",
102102
"mv .\\test .\\scip"

setup.py

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
else:
2323
# fall back to global installation
2424
if platform.system() == "Darwin":
25-
includedir = "/usr/local/include"
25+
includedirs = ["/usr/local/include"]
2626
libdir = "/usr/local/lib"
2727
else:
28-
includedir = "."
28+
includedirs = ["."]
2929
libdir = "."
3030
libname = "libscip" if platform.system() == "Windows" else "scip"
3131
print("Assuming that SCIP is installed globally, because SCIPOPTDIR is undefined.\n")
@@ -34,39 +34,36 @@
3434

3535
# check whether SCIP is installed in the given directory
3636
if os.path.exists(os.path.join(scipoptdir, "include")):
37-
includedir = os.path.abspath(os.path.join(scipoptdir, "include"))
37+
includedirs = [os.path.abspath(os.path.join(scipoptdir, "include"))]
3838
else:
39-
print(f"SCIPOPTDIR={scipoptdir} does not contain an include directory; searching for include files in src or ../src directory.")
39+
print("SCIPOPTDIR=%s does not contain an include directory; searching for include files in src or ../src directory.\n" % scipoptdir)
4040

4141
if os.path.exists(os.path.join(scipoptdir, "src")):
4242
# SCIP seems to be installed in-place; check whether it was built using make or cmake
4343
if os.path.exists(os.path.join(scipoptdir, "src", "scip")):
4444
# assume that SCIPOPTDIR pointed to the main source directory (make)
45-
includedir = os.path.abspath(os.path.join(scipoptdir, "src"))
45+
includedirs = [os.path.abspath(os.path.join(scipoptdir, "src")), os.path.abspath(os.path.join(scipoptdir, "lib/shared/include"))]
4646
else:
4747
# assume that SCIPOPTDIR pointed to a cmake build directory; try one level up (this is just a heuristic)
4848
if os.path.exists(os.path.join(scipoptdir, "..", "src", "scip")):
49-
includedir = os.path.abspath(os.path.join(scipoptdir, "..", "src"))
49+
includedirs = [os.path.abspath(os.path.join(scipoptdir, "..", "src"))]
5050
else:
51-
sys.exit(f"Could neither find src/scip nor ../src/scip directory in SCIPOPTDIR={scipoptdir}. Consider installing SCIP in a separate directory.")
51+
sys.exit("Could neither find src/scip nor ../src/scip directory in SCIPOPTDIR=%s. Consider installing SCIP in a separate directory." % scipoptdir)
5252
else:
53-
sys.exit(f"Could not find a src directory in SCIPOPTDIR={scipoptdir}; maybe it points to a wrong directory.")
53+
sys.exit("Could not find a src directory in SCIPOPTDIR=%s; maybe it points to a wrong directory." % scipoptdir)
5454

5555
# determine library
5656
if os.path.exists(os.path.join(scipoptdir, "lib", "shared", "libscip.so")):
5757
# SCIP seems to be created with make
5858
libdir = os.path.abspath(os.path.join(scipoptdir, "lib", "shared"))
5959
libname = "scip"
60-
extra_compile_args.append("-DNO_CONFIG_HEADER")
61-
# the following is a temporary hack to make it compile with SCIP/make:
62-
extra_compile_args.append("-DTPI_NONE") # if other TPIs are used, please modify
6360
else:
6461
# assume that SCIP is installed on the system
6562
libdir = os.path.abspath(os.path.join(scipoptdir, "lib"))
6663
libname = "libscip" if platform.system() == "Windows" else "scip"
6764

68-
print(f"Using include path {includedir}.")
69-
print(f"Using SCIP library {libname} at {libdir}.\n")
65+
print("Using include path %s." % includedirs)
66+
print("Using SCIP library %s at %s.\n" % (libname, libdir))
7067

7168
# set runtime libraries
7269
if platform.system() in ["Linux", "Darwin"]:
@@ -96,16 +93,15 @@
9693

9794
ext = ".pyx" if use_cython else ".c"
9895

99-
10096
on_github_actions = os.getenv('GITHUB_ACTIONS') == 'true'
10197
release_mode = os.getenv('RELEASE') == 'true'
10298
compile_with_line_tracing = on_github_actions and not release_mode
10399

104100
extensions = [
105101
Extension(
106102
"pyscipopt.scip",
107-
[os.path.join(packagedir, f"scip{ext}")],
108-
include_dirs=[includedir],
103+
[os.path.join(packagedir, "scip%s" % ext)],
104+
include_dirs=includedirs,
109105
library_dirs=[libdir],
110106
libraries=[libname],
111107
extra_compile_args=extra_compile_args,
@@ -122,7 +118,7 @@
122118

123119
setup(
124120
name="PySCIPOpt",
125-
version="5.6.0",
121+
version="5.7.1",
126122
description="Python interface and modeling environment for SCIP",
127123
long_description=long_description,
128124
long_description_content_type="text/markdown",

src/pyscipopt/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__: str = '5.6.0'
1+
__version__: str = '5.7.1'

0 commit comments

Comments
 (0)