diff --git a/.github/workflows/test_branches.yml b/.github/workflows/test_branches.yml index 653ef6eba54..caedbfc8fdd 100644 --- a/.github/workflows/test_branches.yml +++ b/.github/workflows/test_branches.yml @@ -71,29 +71,29 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - python: ['3.13'] + python: [3.13] other: [""] category: [""] include: - os: ubuntu-latest - python: '3.13' + python: 3.13 TARGET: linux PYENV: pip - os: macos-latest - python: '3.11' + python: 3.12 TARGET: osx PYENV: pip - os: windows-latest - python: 3.9 + python: 3.11 TARGET: win PYENV: conda PACKAGES: glpk pytest-qt filelock - os: ubuntu-latest - python: '3.11' + python: 3.11 other: /conda skip_doctest: 1 TARGET: linux @@ -110,7 +110,7 @@ jobs: PACKAGES: openmpi mpi4py - os: ubuntu-latest - python: '3.12' + python: 3.12 other: /cython setup_options: --with-cython skip_doctest: 1 @@ -119,7 +119,7 @@ jobs: PACKAGES: cython - os: windows-latest - python: '3.10' + python: 3.9 other: /pip skip_doctest: 1 TARGET: win @@ -365,11 +365,23 @@ jobs: # possibly if it outputs messages to stderr) conda install --update-deps -q -y $CONDA_DEPENDENCIES if test -z "${{matrix.slim}}"; then + # xpress.init() (from conda) hangs indefinitely on GHA/Windows under + # Python 3.10 and 3.11. Exclude that release on that platform. + if [[ ${{matrix.TARGET}} == win && ${{matrix.python}} =~ 3.1[01] ]]; then + # We would like to just use something like: + # - "!=9.5.1" (conda errors) + # - "<9.5.1|>9.5.1" (conda installs 9.1.2, which also hangs) + # - "<=9.5.0|>9.5.1" (conda seg faults) + XPRESS='xpress=9.5.0' + else + XPRESS='xpress' + fi PYVER=$(echo "py${{matrix.python}}" | sed 's/\.//g') echo "Installing for $PYVER" - for PKG in 'cplex>=12.10' docplex gurobi xpress cyipopt pymumps scip; do + for PKG in 'cplex>=12.10' docplex gurobi "$XPRESS" cyipopt pymumps scip; do echo "" echo "*** Install $PKG ***" + echo "" # conda can literally take an hour to determine that a # package is not available. Perform a quick search to see # if the package is available for this interpreter before @@ -391,6 +403,7 @@ jobs: conda install -y "$PKG" || _BUILDS="" fi fi + echo "" if test -z "$_BUILDS"; then echo "WARNING: $PKG is not available" fi @@ -704,6 +717,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: ${{github.job}}_${{env.GHA_JOBGROUP}}-${{env.GHA_JOBNAME}} + include-hidden-files: true path: | .coverage coverage.xml diff --git a/.github/workflows/test_pr_and_main.yml b/.github/workflows/test_pr_and_main.yml index 2506573db4d..0bd5cac42ea 100644 --- a/.github/workflows/test_pr_and_main.yml +++ b/.github/workflows/test_pr_and_main.yml @@ -68,7 +68,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python: [ 3.9, '3.10', '3.11', '3.12', '3.13' ] + python: [ 3.9, '3.10', 3.11, 3.12, 3.13 ] other: [""] category: [""] @@ -87,7 +87,7 @@ jobs: PACKAGES: glpk pytest-qt filelock - os: ubuntu-latest - python: '3.11' + python: 3.11 other: /conda skip_doctest: 1 TARGET: linux @@ -104,7 +104,7 @@ jobs: PACKAGES: openmpi mpi4py - os: ubuntu-latest - python: '3.12' + python: 3.12 other: /cython setup_options: --with-cython skip_doctest: 1 @@ -120,7 +120,7 @@ jobs: PYENV: pip - os: ubuntu-latest - python: '3.11' + python: 3.11 other: /singletest category: "-m 'neos or importtest'" skip_doctest: 1 @@ -397,11 +397,23 @@ jobs: # possibly if it outputs messages to stderr) conda install --update-deps -q -y $CONDA_DEPENDENCIES if test -z "${{matrix.slim}}"; then + # xpress.init() (from conda) hangs indefinitely on GHA/Windows under + # Python 3.10 and 3.11. Exclude that release on that platform. + if [[ ${{matrix.TARGET}} == win && ${{matrix.python}} =~ 3.1[01] ]]; then + # We would like to just use something like: + # - "!=9.5.1" (conda errors) + # - "<9.5.1|>9.5.1" (conda installs 9.1.2, which also hangs) + # - "<=9.5.0|>9.5.1" (conda seg faults) + XPRESS='xpress=9.5.0' + else + XPRESS='xpress' + fi PYVER=$(echo "py${{matrix.python}}" | sed 's/\.//g') echo "Installing for $PYVER" - for PKG in 'cplex>=12.10' docplex gurobi xpress cyipopt pymumps scip; do + for PKG in 'cplex>=12.10' docplex gurobi "$XPRESS" cyipopt pymumps scip; do echo "" echo "*** Install $PKG ***" + echo "" # conda can literally take an hour to determine that a # package is not available. Perform a quick search to see # if the package is available for this interpreter before @@ -423,6 +435,7 @@ jobs: conda install -y "$PKG" || _BUILDS="" fi fi + echo "" if test -z "$_BUILDS"; then echo "WARNING: $PKG is not available" fi @@ -654,8 +667,7 @@ jobs: if: ${{ ! matrix.slim }} shell: bash run: | - echo "NOTE: temporarily pinning to highspy pre-release for testing" - $PYTHON_EXE -m pip install --cache-dir cache/pip "highspy>=1.7.1.dev1" \ + $PYTHON_EXE -m pip install --cache-dir cache/pip highspy \ || echo "WARNING: highspy is not available" - name: Set up coverage tracking