Skip to content

Commit b07b547

Browse files
authored
Merge branch 'main' into params-to-vars
2 parents 51d1ba7 + 2739945 commit b07b547

File tree

1,807 files changed

+4892
-2414
lines changed

Some content is hidden

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

1,807 files changed

+4892
-2414
lines changed

codecov.yml .codecov.yml

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ codecov:
55
# Potential to change when Python versions change
66
after_n_builds: 16
77
wait_for_ci: true
8+
require_ci_to_pass: false
89
coverage:
910
range:
1011
- 50.0

.coin-or/projDesc.xml

+2-2
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.2</stableVersionNumber>
231-
<releaseNumber>6.8.2</releaseNumber>
230+
<stableVersionNumber>6.9.1</stableVersionNumber>
231+
<releaseNumber>6.9.1</releaseNumber>
232232

233233
</developmentStatus>
234234

.git-blame-ignore-revs

+1
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,5 @@ ed13c8c65d6c3f56973887744be1c62a5d4756de
4545
363a16a609f519b3edfdfcf40c66d6de7ac135af
4646
d024718991455519e09149ede53a38df1c067abe
4747
017e21ee50d98d8b2f2083e6880f030025ed5378
48+
91972008d109322fc1a3b688333d67def2288625
4849

.github/workflows/test_branches.yml

+54-18
Original file line numberDiff line numberDiff line change
@@ -78,24 +78,26 @@ jobs:
7878
include:
7979
- os: ubuntu-latest
8080
python: 3.13
81+
test_docs: 1
8182
TARGET: linux
8283
PYENV: pip
8384

8485
- os: macos-latest
8586
python: 3.12
87+
test_docs: 1
8688
TARGET: osx
8789
PYENV: pip
8890

8991
- os: windows-latest
9092
python: 3.11
93+
test_docs: 1
9194
TARGET: win
9295
PYENV: conda
9396
PACKAGES: glpk pytest-qt filelock
9497

9598
- os: ubuntu-latest
9699
python: 3.11
97100
other: /conda
98-
skip_doctest: 1
99101
TARGET: linux
100102
PYENV: conda
101103
PACKAGES: pytest-qt
@@ -104,7 +106,6 @@ jobs:
104106
python: '3.10'
105107
other: /mpi
106108
mpi: 3
107-
skip_doctest: 1
108109
TARGET: linux
109110
PYENV: conda
110111
PACKAGES: openmpi mpi4py
@@ -113,15 +114,13 @@ jobs:
113114
python: 3.12
114115
other: /cython
115116
setup_options: --with-cython
116-
skip_doctest: 1
117117
TARGET: linux
118118
PYENV: pip
119119
PACKAGES: cython
120120

121121
- os: windows-latest
122122
python: 3.9
123123
other: /pip
124-
skip_doctest: 1
125124
TARGET: win
126125
PYENV: pip
127126

@@ -305,15 +304,21 @@ jobs:
305304
# Set up environment
306305
conda config --set always_yes yes
307306
conda config --set auto_update_conda false
307+
conda config --set channel_priority strict
308308
conda config --remove channels defaults
309309
conda config --append channels nodefaults
310310
conda config --append channels conda-forge
311311
# Try to install mamba
312-
conda install --update-deps -q -y -n base conda-libmamba-solver \
313-
|| MAMBA_FAILED=1
314-
if test -z "$MAMBA_FAILED"; then
315-
echo "*** Activating the mamba environment solver ***"
316-
conda config --set solver libmamba
312+
CONDA_VER=$(conda --version | cut -d\ -f2)
313+
if test 23.10 = "`echo -e "23.10\n$CONDA_VER" | sort -V | tail -1`"; then
314+
# Note: removed '--update-deps' on 2025-02-28 to work around
315+
# broken libffi(?)
316+
conda install -q -y -n base conda-libmamba-solver \
317+
|| MAMBA_FAILED=1
318+
if test -z "$MAMBA_FAILED"; then
319+
echo "*** Activating the mamba environment solver ***"
320+
conda config --set solver libmamba
321+
fi
317322
fi
318323
# Add the rest of the channels
319324
conda config --append channels gurobi
@@ -365,17 +370,19 @@ jobs:
365370
# possibly if it outputs messages to stderr)
366371
conda install --update-deps -q -y $CONDA_DEPENDENCIES
367372
if test -z "${{matrix.slim}}"; then
368-
# xpress.init() (from conda) hangs indefinitely on GHA/Windows under
369-
# Python 3.10 and 3.11. Exclude that release on that platform.
373+
# xpress.init() (xpress 9.5.1 from conda) hangs indefinitely
374+
# on GHA/Windows under Python 3.10 and 3.11. Exclude that
375+
# release on that platform.
370376
if [[ ${{matrix.TARGET}} == win && ${{matrix.python}} =~ 3.1[01] ]]; then
371377
# We would like to just use something like:
372378
# - "!=9.5.1" (conda errors)
373379
# - "<9.5.1|>9.5.1" (conda installs 9.1.2, which also hangs)
374380
# - "<=9.5.0|>9.5.1" (conda seg faults)
375-
XPRESS='xpress=9.5.0'
381+
XPRESS='xpress>=9.5.2'
376382
else
377383
XPRESS='xpress'
378384
fi
385+
TIMEOUT_MSG="TIMEOUT: killing conda install process"
379386
PYVER=$(echo "py${{matrix.python}}" | sed 's/\.//g')
380387
echo "Installing for $PYVER"
381388
for PKG in 'cplex>=12.10' docplex gurobi "$XPRESS" cyipopt pymumps scip; do
@@ -400,7 +407,26 @@ jobs:
400407
if test -z "$_ISPY" -o -n "$_PYOK"; then
401408
echo ""
402409
echo "... INSTALLING $PKG"
403-
conda install -y "$PKG" || _BUILDS=""
410+
# Because conda can occasionally hang
411+
# indefinitely (lately while installing SCIP),
412+
# we will run "conda install" in a subshell and
413+
# kill it after 5-minutes.
414+
(conda install -q -y $PKG |& tee conda.log) &
415+
conda_subshell_pid=$!
416+
sleep 1
417+
conda_pid=$(ps | grep conda | sed 's/^ *//' | sed 's/ .*//')
418+
# Only timeout the conda process if it's not to
419+
# the installation phase yet. Signalling conda
420+
# after it has started the installation process
421+
# can irrecoverably corrupt the environment.
422+
(sleep 300 \
423+
&& if test `grep 'Package Plan' conda.log | wc -l` -eq 0; \
424+
then echo "$TIMEOUT_MSG $conda_pid (TERM)" \
425+
&& kill -TERM $conda_pid 2>/dev/null ; fi) &
426+
timeout_pid=$!
427+
wait $conda_subshell_pid || _BUILDS=""
428+
kill $timeout_pid 2>/dev/null \
429+
|| echo "TIMEOUT: time limit expired"
404430
fi
405431
fi
406432
echo ""
@@ -410,6 +436,8 @@ jobs:
410436
done
411437
fi
412438
# Re-try Pyomo (optional) dependencies with pip
439+
echo ""
440+
echo "Installing packages only available on PyPI"
413441
if test -n "$PYPI_DEPENDENCIES"; then
414442
python -m pip install --cache-dir cache/pip $PYPI_DEPENDENCIES
415443
fi
@@ -657,7 +685,7 @@ jobs:
657685
> ${SITE_PACKAGES}/run_coverage_at_startup.pth
658686
659687
- name: Download and install extensions
660-
if: ${{ ! matrix.slim }}
688+
if: ${{ ! matrix.slim && matrix.category != 'notests' }}
661689
run: |
662690
echo ""
663691
echo "Pyomo download-extensions"
@@ -681,7 +709,7 @@ jobs:
681709
pyomo help --writers || exit 1
682710
683711
- name: Run Pyomo tests
684-
if: matrix.mpi == 0
712+
if: ${{ matrix.mpi == 0 && matrix.category != 'notests' }}
685713
run: |
686714
export PATH=$PYOMO_PATH
687715
$PYTHON_EXE -m pytest -v \
@@ -690,7 +718,7 @@ jobs:
690718
`pwd`/examples `pwd`/doc --junitxml="TEST-pyomo.xml"
691719
692720
- name: Run Pyomo MPI tests
693-
if: matrix.mpi != 0
721+
if: ${{ matrix.mpi != 0 && matrix.category != 'notests' }}
694722
run: |
695723
# Manually invoke the DAT parser so that parse_table_datacmds.py
696724
# is fully generated by a single process before invoking MPI
@@ -702,8 +730,16 @@ jobs:
702730
-m "mpi" -W ignore::Warning \
703731
pyomo `pwd`/pyomo-model-libraries
704732
733+
- name: Build documentation
734+
if: matrix.build_docs != 0
735+
run: |
736+
sudo apt-get -y install graphviz latexmk texlive texlive-latex-extra \
737+
texlive-pictures
738+
make -C doc/OnlineDocs html
739+
make -C doc/OnlineDocs latexpdf
740+
705741
- name: Run documentation tests
706-
if: matrix.skip_doctest == 0
742+
if: matrix.test_docs != 0
707743
run: |
708744
make -C doc/OnlineDocs doctest -d
709745
@@ -915,5 +951,5 @@ jobs:
915951
files: coverage-other.xml
916952
token: ${{ secrets.PYOMO_CODECOV_TOKEN }}
917953
name: ${{ matrix.TARGET }}/other
918-
flags: ${{ matrix.TARGET }},other
954+
flags: ${{ matrix.TARGET }}_other
919955
fail_ci_if_error: true

0 commit comments

Comments
 (0)