diff --git a/.github/workflows/extra.yml b/.github/workflows/extra.yml index 9491bf4dd..8a0c329e1 100644 --- a/.github/workflows/extra.yml +++ b/.github/workflows/extra.yml @@ -11,24 +11,24 @@ jobs: matrix: os: [ubuntu-latest] mpi-version: [mpich] - python-version: ['3.10', '3.11', '3.12', '3.13'] + python-version: ["py310e", "py311e", "py312e", "py313e", "py314e"] comms-type: [m, l] include: - os: macos-latest - python-version: '3.13' + python-version: "py312e" mpi-version: mpich comms-type: m - os: macos-latest - python-version: '3.13' + python-version: "py312e" mpi-version: mpich comms-type: l - os: ubuntu-latest - python-version: '3.12' + python-version: "py312e" mpi-version: mpich comms-type: t - os: ubuntu-latest - mpi-version: 'openmpi' - python-version: '3.12' + mpi-version: openmpi + python-version: "py312e" comms-type: l env: @@ -42,93 +42,58 @@ jobs: steps: - uses: actions/checkout@v6 - - name: Setup conda - Python ${{ matrix.python-version }} - uses: conda-incubator/setup-miniconda@v3 with: - activate-environment: condaenv - miniconda-version: 'latest' - python-version: ${{ matrix.python-version }} - channels: conda-forge - channel-priority: strict - auto-update-conda: true - - - name: Force-update certifi - run: | - python --version - pip install -I --upgrade certifi + lfs: true - - name: Install Ubuntu compilers - if: matrix.os == 'ubuntu-latest' - run: | - conda install -c conda-forge gcc_linux-64 - pip install nlopt==2.9.0 + - name: Checkout lockfile + run: git lfs checkout - # Roundabout solution on macos for proper linking with mpicc - - name: Install macOS compilers - if: matrix.os == 'macos-latest' - run: | - conda install clang_osx-64 - pip install nlopt==2.8.0 - - - name: Install mpi4py and MPI from conda - run: | - conda install mpi4py ${{ matrix.mpi-version }} - - - name: Install generator dependencies - run: | - conda env update --file install/gen_deps_environment.yml - - - name: Install gpcam and octave # Neither yet support 3.13 - if: matrix.python-version <= '3.12' - run: | - pip install gpcam==8.1.13 - conda install octave - - - name: Install surmise and Tasmanian - if: matrix.os == 'ubuntu-latest' - run: | - pip install --upgrade git+https://github.com/bandframework/surmise.git - pip install Tasmanian --user - - - name: Install generator dependencies for Ubuntu tests - if: matrix.os == 'ubuntu-latest' && matrix.python-version <= '3.12' - run: | - pip install scikit-build packaging + - uses: prefix-dev/setup-pixi@v0.9.2 + with: + pixi-version: v0.55.0 + cache: true + frozen: true + environments: ${{ matrix.python-version }} + activate-environment: ${{ matrix.python-version }} - name: Install other testing dependencies run: | - pip install -r install/testing_requirements.txt - pip install -r install/misc_feature_requirements.txt - source install/install_ibcdfo.sh - conda install numpy scipy + pixi run -e ${{ matrix.python-version }} install/install_ibcdfo.sh - name: Install libEnsemble, flake8, lock environment run: | pip install -e . flake8 libensemble - - name: Remove test using octave, gpcam on Python 3.13 - if: matrix.python-version >= '3.13' + - name: Install gpcam + if: matrix.python-version != 'py313e' && matrix.python-version != 'py314e' + run: | + pixi run -e ${{ matrix.python-version }} pip install gpcam==8.1.13 + + - name: Remove test using octave, gpcam, globus-compute on Python 3.13 + if: matrix.python-version == 'py313e' || matrix.python-version == 'py314e' run: | + rm ./libensemble/tests/unit_tests/test_ufunc_runners.py # needs globus-compute rm ./libensemble/tests/regression_tests/test_persistent_fd_param_finder.py # needs octave, which doesn't yet support 3.13 rm ./libensemble/tests/regression_tests/test_persistent_aposmm_external_localopt.py # needs octave, which doesn't yet support 3.13 rm ./libensemble/tests/regression_tests/test_gpCAM.py # needs gpcam, which doesn't build on 3.13 - - name: Install redis/proxystore - run: | - pip install redis - pip install proxystore==0.7.0 - - name: Start Redis if: matrix.os == 'ubuntu-latest' uses: supercharge/redis-github-action@v2 with: redis-version: 7 - - name: Run extensive tests + - name: Run extensive tests, Ubuntu + if: matrix.os == 'ubuntu-latest' run: | ./libensemble/tests/run_tests.py -e -${{ matrix.comms-type }} + - name: Run extensive tests, macOS + if: matrix.os == 'macos-latest' + run: | + pixi run -e ${{ matrix.python-version }} ./libensemble/tests/run_tests.py -e -${{ matrix.comms-type }} + - name: Merge coverage run: | mv libensemble/tests/.cov* . diff --git a/pixi.lock b/pixi.lock index d019ac56e..b041bbaf2 100644 --- a/pixi.lock +++ b/pixi.lock @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a758e95c16d5e476bec89fd4351a7dc614057b22b7bd2c65cf982604ab45d4c5 -size 1087911 +oid sha256:633eb036d22ceed4164edea8a3c13870a606c5d04206ef8717fe3ad5792b4f04 +size 1091134 diff --git a/pyproject.toml b/pyproject.toml index 4549355b6..d9932d722 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -143,6 +143,9 @@ packaging = "*" octave = ">=9.4.0,<11" pyzmq = ">=26.4.0,<28" +[tool.pixi.feature.extra.target.linux-64.pypi-dependencies] +tasmanian = ">=8.2, <9" + # Python versions [tool.pixi.feature.py310.dependencies] python = "3.10.*" @@ -157,25 +160,25 @@ python = "3.14.*" # ax-platform only works up to 3.13 on Linux [tool.pixi.feature.py310e.target.linux-64.dependencies] -ax-platform = ">=1.2.1,<2" +ax-platform = "==0.5.0" [tool.pixi.feature.py310e.dependencies] globus-compute-sdk = ">=4.3.0,<5" [tool.pixi.feature.py311e.target.linux-64.dependencies] -ax-platform = ">=1.2.1,<2" +ax-platform = "==0.5.0" [tool.pixi.feature.py311e.dependencies] globus-compute-sdk = ">=4.3.0,<5" [tool.pixi.feature.py312e.target.linux-64.dependencies] -ax-platform = ">=1.2.1,<2" +ax-platform = "==0.5.0" [tool.pixi.feature.py312e.dependencies] globus-compute-sdk = ">=4.3.0,<5" [tool.pixi.feature.py313e.target.linux-64.dependencies] -ax-platform = ">=0.5.0,<0.6" +ax-platform = "==0.5.0" [tool.pixi.feature.py314e] @@ -206,6 +209,7 @@ extra = [ "enchant>=0.0.1,<0.0.2", "proxystore>=0.8.3,<0.9", "redis>=7.1.0,<8", + "surmise>=0.3.0,<0.4", ] dev = ["wat>=0.7.0,<0.8"]