Skip to content

Commit c249edb

Browse files
authored
Merge branch 'main' into params-to-vars
2 parents 1401893 + 9f957ef commit c249edb

File tree

557 files changed

+21549
-14506
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

557 files changed

+21549
-14506
lines changed

.coin-or/projDesc.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -227,8 +227,8 @@ Carl D. Laird, Chair, Pyomo Management Committee, claird at andrew dot cmu dot e
227227
Use explicit overrides to disable use of automated
228228
version reporting.
229229
-->
230-
<stableVersionNumber>6.8.0</stableVersionNumber>
231-
<releaseNumber>6.8.0</releaseNumber>
230+
<stableVersionNumber>6.8.2</stableVersionNumber>
231+
<releaseNumber>6.8.2</releaseNumber>
232232

233233
</developmentStatus>
234234

@@ -287,7 +287,7 @@ Carl D. Laird, Chair, Pyomo Management Committee, claird at andrew dot cmu dot e
287287

288288
<platform>
289289
<operatingSystem>Any</operatingSystem>
290-
<compiler>Python 3.8, 3.9, 3.10, 3.11, 3.12</compiler>
290+
<compiler>Python 3.8, 3.9, 3.10, 3.11, 3.12, 3.13</compiler>
291291
</platform>
292292

293293
</testedPlatforms>

.github/workflows/release_wheel_creation.yml

+37-7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ on:
44
push:
55
tags:
66
- '*'
7+
schedule:
8+
- cron: '0 0 3 * *'
79
workflow_dispatch:
810
inputs:
911
git-ref:
@@ -14,8 +16,11 @@ concurrency:
1416
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
1517
cancel-in-progress: true
1618

17-
jobs:
19+
defaults:
20+
run:
21+
shell: bash -l {0}
1822

23+
jobs:
1924
native_wheels:
2025
name: Build wheels (${{ matrix.wheel-version }}) on ${{ matrix.os }} for native and cross-compiled architecture
2126
runs-on: ${{ matrix.os }}
@@ -24,7 +29,7 @@ jobs:
2429
matrix:
2530
os: [ubuntu-22.04, windows-latest, macos-latest]
2631
arch: [all]
27-
wheel-version: ['cp38*', 'cp39*', 'cp310*', 'cp311*', 'cp312*']
32+
wheel-version: ['cp38*', 'cp39*', 'cp310*', 'cp311*', 'cp312*', 'cp313*']
2833

2934
include:
3035
- wheel-version: 'cp38*'
@@ -42,17 +47,32 @@ jobs:
4247
- wheel-version: 'cp312*'
4348
TARGET: 'py312'
4449
GLOBAL_OPTIONS: "--without-cython --with-distributable-extensions"
50+
- wheel-version: 'cp313*'
51+
TARGET: 'py313'
52+
GLOBAL_OPTIONS: "--without-cython --with-distributable-extensions"
4553

54+
# We use pure python for any Windows/python greater than 3.10
4655
exclude:
4756
- wheel-version: 'cp311*'
4857
os: windows-latest
4958
- wheel-version: 'cp312*'
5059
os: windows-latest
60+
- wheel-version: 'cp313*'
61+
os: windows-latest
5162

5263
steps:
5364
- uses: actions/checkout@v4
65+
- name: Create pyproject.toml
66+
run: |
67+
# Per the cibuildwheel documentation, you can technically use
68+
# CIBW_BEFORE_BUILD to do these steps; however, as of the newest
69+
# version (2.21.3) this feature does not work. This is a hack
70+
# to make cibuildwheel recognize our pre-build requirements
71+
echo -e '[build-system]\n\nrequires = [ "setuptools", "wheel", "cython", "pybind11" ]' > $GITHUB_WORKSPACE/pyproject.toml
72+
cat $GITHUB_WORKSPACE/pyproject.toml
73+
ls -la $GITHUB_WORKSPACE
5474
- name: Build wheels
55-
uses: pypa/cibuildwheel@v2.16.5
75+
uses: pypa/cibuildwheel@v2.21.3
5676
with:
5777
output-dir: dist
5878
env:
@@ -62,7 +82,6 @@ jobs:
6282
CIBW_BUILD: ${{ matrix.wheel-version }}
6383
CIBW_SKIP: "*-musllinux*"
6484
CIBW_BUILD_VERBOSITY: 1
65-
CIBW_BEFORE_BUILD: pip install cython pybind11
6685
CIBW_ENVIRONMENT: PYOMO_SETUP_ARGS="${{ matrix.GLOBAL_OPTIONS }}"
6786
- uses: actions/upload-artifact@v4
6887
with:
@@ -77,7 +96,7 @@ jobs:
7796
matrix:
7897
os: [ubuntu-22.04]
7998
arch: [all]
80-
wheel-version: ['cp38*', 'cp39*', 'cp310*', 'cp311*', 'cp312*']
99+
wheel-version: ['cp38*', 'cp39*', 'cp310*', 'cp311*', 'cp312*', 'cp313*']
81100

82101
include:
83102
- wheel-version: 'cp38*'
@@ -95,23 +114,34 @@ jobs:
95114
- wheel-version: 'cp312*'
96115
TARGET: 'py312'
97116
GLOBAL_OPTIONS: "--without-cython --with-distributable-extensions"
117+
- wheel-version: 'cp313*'
118+
TARGET: 'py313'
119+
GLOBAL_OPTIONS: "--without-cython --with-distributable-extensions"
98120
steps:
99121
- uses: actions/checkout@v4
100122
- name: Set up QEMU
101123
if: runner.os == 'Linux'
102124
uses: docker/setup-qemu-action@v3
103125
with:
104126
platforms: all
127+
- name: Create pyproject.toml
128+
run: |
129+
# Per the cibuildwheel documentation, you can technically use
130+
# CIBW_BEFORE_BUILD to do these steps; however, as of the newest
131+
# version (2.21.3) this feature does not work. This is a hack
132+
# to make cibuildwheel recognize our pre-build requirements
133+
echo -e '[build-system]\n\nrequires = [ "setuptools", "wheel", "cython", "pybind11" ]' > $GITHUB_WORKSPACE/pyproject.toml
134+
cat $GITHUB_WORKSPACE/pyproject.toml
135+
ls -la $GITHUB_WORKSPACE
105136
- name: Build wheels
106-
uses: pypa/cibuildwheel@v2.16.5
137+
uses: pypa/cibuildwheel@v2.21.3
107138
with:
108139
output-dir: dist
109140
env:
110141
CIBW_ARCHS_LINUX: "aarch64"
111142
CIBW_BUILD: ${{ matrix.wheel-version }}
112143
CIBW_SKIP: "*-musllinux*"
113144
CIBW_BUILD_VERBOSITY: 1
114-
CIBW_BEFORE_BUILD: pip install cython pybind11
115145
CIBW_ENVIRONMENT: PYOMO_SETUP_ARGS="${{ matrix.GLOBAL_OPTIONS }}"
116146
- uses: actions/upload-artifact@v4
117147
with:

.github/workflows/test_branches.yml

+9-5
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ jobs:
7171
fail-fast: false
7272
matrix:
7373
os: [ubuntu-latest]
74-
python: ['3.12']
74+
python: ['3.13']
7575
other: [""]
7676
category: [""]
7777

@@ -83,7 +83,7 @@ jobs:
8383

8484
include:
8585
- os: ubuntu-latest
86-
python: '3.12'
86+
python: '3.13'
8787
TARGET: linux
8888
PYENV: pip
8989

@@ -116,7 +116,7 @@ jobs:
116116
PACKAGES: openmpi mpi4py
117117

118118
- os: ubuntu-latest
119-
python: '3.10'
119+
python: '3.12'
120120
other: /cython
121121
setup_options: --with-cython
122122
skip_doctest: 1
@@ -286,7 +286,7 @@ jobs:
286286
if test -z "${{matrix.slim}}"; then
287287
python -m pip install --cache-dir cache/pip cplex docplex \
288288
|| echo "WARNING: CPLEX Community Edition is not available"
289-
python -m pip install --cache-dir cache/pip gurobipy==10.0.3 \
289+
python -m pip install --cache-dir cache/pip gurobipy \
290290
|| echo "WARNING: Gurobi is not available"
291291
python -m pip install --cache-dir cache/pip xpress \
292292
|| echo "WARNING: Xpress Community Edition is not available"
@@ -344,6 +344,10 @@ jobs:
344344
if test "${{matrix.TARGET}}" == linux; then
345345
EXCLUDE="casadi numdifftools $EXCLUDE"
346346
fi
347+
if [[ "${{matrix.TARGET}}" == win && "${{matrix.python}}" == "3.13" ]]; then
348+
# As of Nov 7, 2024, qtconsole is not compatible with python 3.13 on win
349+
EXCLUDE="qtconsole $EXCLUDE"
350+
fi
347351
EXCLUDE=`echo "$EXCLUDE" | xargs`
348352
if test -n "$EXCLUDE"; then
349353
for WORD in $EXCLUDE; do
@@ -369,7 +373,7 @@ jobs:
369373
if test -z "${{matrix.slim}}"; then
370374
PYVER=$(echo "py${{matrix.python}}" | sed 's/\.//g')
371375
echo "Installing for $PYVER"
372-
for PKG in 'cplex>=12.10' docplex 'gurobi=10.0.3' xpress cyipopt pymumps scip; do
376+
for PKG in 'cplex>=12.10' docplex gurobi xpress cyipopt pymumps scip; do
373377
echo ""
374378
echo "*** Install $PKG ***"
375379
# conda can literally take an hour to determine that a

.github/workflows/test_pr_and_main.yml

+17-4
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ jobs:
6868
fail-fast: false
6969
matrix:
7070
os: [ubuntu-latest, macos-latest, windows-latest]
71-
python: [ 3.8, 3.9, '3.10', '3.11', '3.12' ]
71+
python: [ 3.8, 3.9, '3.10', '3.11', '3.12', '3.13' ]
7272
other: [""]
7373
category: [""]
7474

@@ -110,7 +110,7 @@ jobs:
110110
PACKAGES: openmpi mpi4py
111111

112112
- os: ubuntu-latest
113-
python: '3.10'
113+
python: '3.12'
114114
other: /cython
115115
setup_options: --with-cython
116116
skip_doctest: 1
@@ -141,6 +141,15 @@ jobs:
141141
TARGET: linux
142142
PYENV: pip
143143

144+
- os: ubuntu-latest
145+
python: 3.12
146+
other: /numpy2
147+
slim: 1
148+
skip_doctest: 1
149+
TARGET: linux
150+
PYENV: pip
151+
PACKAGES: "gurobipy dill numpy>2.0 scipy networkx"
152+
144153
- os: ubuntu-latest
145154
python: 3.9
146155
other: /pyutilib
@@ -309,7 +318,7 @@ jobs:
309318
if test -z "${{matrix.slim}}"; then
310319
python -m pip install --cache-dir cache/pip cplex docplex \
311320
|| echo "WARNING: CPLEX Community Edition is not available"
312-
python -m pip install --cache-dir cache/pip gurobipy==10.0.3 \
321+
python -m pip install --cache-dir cache/pip gurobipy \
313322
|| echo "WARNING: Gurobi is not available"
314323
python -m pip install --cache-dir cache/pip xpress \
315324
|| echo "WARNING: Xpress Community Edition is not available"
@@ -367,6 +376,10 @@ jobs:
367376
if test "${{matrix.TARGET}}" == linux; then
368377
EXCLUDE="casadi numdifftools $EXCLUDE"
369378
fi
379+
if [[ "${{matrix.TARGET}}" == win && "${{matrix.python}}" == "3.13" ]]; then
380+
# As of Nov 7, 2024, qtconsole is not compatible with python 3.13 on win
381+
EXCLUDE="qtconsole $EXCLUDE"
382+
fi
370383
EXCLUDE=`echo "$EXCLUDE" | xargs`
371384
if test -n "$EXCLUDE"; then
372385
for WORD in $EXCLUDE; do
@@ -392,7 +405,7 @@ jobs:
392405
if test -z "${{matrix.slim}}"; then
393406
PYVER=$(echo "py${{matrix.python}}" | sed 's/\.//g')
394407
echo "Installing for $PYVER"
395-
for PKG in 'cplex>=12.10' docplex 'gurobi=10.0.3' xpress cyipopt pymumps scip; do
408+
for PKG in 'cplex>=12.10' docplex gurobi xpress cyipopt pymumps scip; do
396409
echo ""
397410
echo "*** Install $PKG ***"
398411
# conda can literally take an hour to determine that a

.gitignore

+10-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
1+
# temporary editor files
2+
*~
3+
.#*
4+
\#*#
5+
16
# IDE configuration files
27
.idea
38
.spyder*
49
.ropeproject
510
.vscode
11+
612
# Python generates numerous files when byte compiling / installing packages
13+
__pycache__/
714
*.pyx
8-
*.pyc
9-
*.pyo
10-
*.egg-info
15+
*.py[cod]
16+
*.egg-info/
1117

1218
# Documentation builds
1319
doc/OnlineDocs/_build
@@ -17,14 +23,14 @@ doc/OnlineDocs/**/*.spy
1723
*.out
1824
pyomo/dataportal/parse_table_datacmds.py
1925
gurobi.log
26+
cplex.log
2027

2128
# Results from pytest --with-coverage
2229
.coverage
2330
*.cover
2431

2532
# Jupyterhub/Jupyterlab checkpoints
2633
.ipynb_checkpoints
27-
cplex.log
2834

2935
# Mac tracking files
3036
*.DS_Store*

.readthedocs.yaml

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ version: 2
88
build:
99
os: ubuntu-22.04
1010
tools:
11-
python: "3.8"
11+
python: "3.11"
1212

1313
sphinx:
1414
configuration: doc/OnlineDocs/conf.py
1515

16-
formats: all
16+
formats:
17+
- pdf
1718

1819
# Set the version of Python and requirements required to build the docs
1920
python:

CHANGELOG.md

+74
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,80 @@
11
Pyomo CHANGELOG
22
===============
33

4+
-------------------------------------------------------------------------------
5+
Pyomo 6.8.2 (18 Nov 2024)
6+
-------------------------------------------------------------------------------
7+
8+
- Core
9+
- Resolve errors in mapping ScalarVar to numpy ndarray (#3423)
10+
- Documentation
11+
- Update Documentation URLs (#3425)
12+
- Solver Interfaces
13+
- Resolve error in xpress_direct interface retrieving reduced costs (#3422)
14+
- Testing
15+
- Remove (unused) legacy test drivers (#3427)
16+
17+
-------------------------------------------------------------------------------
18+
Pyomo 6.8.1 (15 Nov 2024)
19+
-------------------------------------------------------------------------------
20+
21+
"Annie"
22+
23+
SIGNIFICANT CHANGE NOTICE
24+
25+
- This will be the last release to support Python 3.8
26+
- This is the first release to be tested against Python 3.13
27+
- Complete reorganization of our online documentation (#3382, #3378)
28+
29+
CHANGELOG
30+
31+
- General
32+
- Add a 'Do not delete' Disclaimer to Issues/PR Templates (#3361)
33+
- Add URL Status Badge to README (#3373)
34+
- Resolve change in `InvalidNumber` handling in writers (#3390)
35+
- Update `common.timing` to make tests more deterministic (#3397)
36+
- Defer processing `ConfigValue`/`ConfigList` default until first use (#3394)
37+
- Improved support for moved/renamed/deprecated modules (#3385)
38+
- Fix `ConfigValue` initialization in multithreaded environments (#3405)
39+
- `ConfigDict`: prevent recursion on partially-constructed objects (#3409)
40+
- Fix bug in `AutoSlots` deepcopy (#3412, #3413)
41+
- Update `mpi4py_available` to work around `conda-forge/openmpi` (#3416)
42+
- Core
43+
- Resolve bugs in `create_node_with_local_data` (#3376)
44+
- Resolve issue in filter/validate deprecation path (#3368)
45+
- Support `Param.pprint()` for non-finite Params (#3387)
46+
- Add (parameterized) linear programming dual transformation (#3402)
47+
- Documentation
48+
- Autogenerate API documentation (#3378)
49+
- Add Alternative Solutions documentation (#3370)
50+
- Reorganize online documentation (#3382)
51+
- Fix broken doc URLs (#3398)
52+
- Improved autoenum documentation (#3389)
53+
- Reduce the number of formats built on readthedocs to avoid timeout (#3404)
54+
- Solver Interfaces
55+
- Remove deprecated `gurobipy` `addConstr` call (#3350)
56+
- Update Xpress interfaces to support 9.5 (#3392)
57+
- Add support for templatized models in `gurobi_direct_v2` (#3362)
58+
- Update test for GAMS mapping 'infeasible or unbounded' to infeasible (#3396)
59+
- `XpressDirect.available()`: check there is a valid license (#3400)
60+
- Move away from dependence on gurobi.sh (#3384)
61+
- Fix error when xpress is imported before `xpress_direct` (#3410)
62+
- Testing
63+
- Move URL Checker to Weekly Job (#3360)
64+
- Correct newly discovered typos (#3365, #3399)
65+
- Remove Octeract from NEOS solvers list (and other testing fixes) (#3374)
66+
- Guard tests against broken Gurobi licenses (#3383)
67+
- Remove pin to Gurobi 10.0.3 (#3393)
68+
- Add Python 3.13 to Testing Infrastructure (#3401, #3419)
69+
- Resolve `timeout()` failures on Windows/py3.13 (#3415)
70+
- GDP
71+
- Fix performance degradation in hull transformation (#3366)
72+
- Contributed Packages
73+
- DoE: Fix bug from using hardcoded value (#3358)
74+
- iis: Catch catastrophic solver failure when building MIS (#3403)
75+
- PyNumero: Reverse `BlockVector`/`MPIBlockVector` base class order (#3380)
76+
- PyNumero: Resolve incompatibilities with NumPy2 (#3408)
77+
- PyROS: Overhaul preprocessor subroutine and subproblem objects (#3341)
478

579
-------------------------------------------------------------------------------
680
Pyomo 6.8.0 (20 Aug 2024)

0 commit comments

Comments
 (0)