From 504f9057e23f89910e81c795e0b368f3e11e6ef8 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Fri, 19 Dec 2025 22:49:09 +0100 Subject: [PATCH 01/14] remove EOL Python version from pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 59c1c20b..63ea73cf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ name = "PyPartMC" dynamic = ["version"] description = "Python interface to PartMC" readme = "README.md" -requires-python = ">=3.8" +requires-python = ">=3.9" authors = [ {name = "https://github.com/open-atmos/PyPartMC/graphs/contributors", email = "nriemer@illinois.edu"} ] From ccbc178caf2901ca3c73e8f966427c8421cf97d8 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Fri, 19 Dec 2025 23:10:32 +0100 Subject: [PATCH 02/14] bump CI macos images versions --- .github/workflows/buildwheels.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/buildwheels.yml b/.github/workflows/buildwheels.yml index 0150d38e..8d478bf6 100644 --- a/.github/workflows/buildwheels.yml +++ b/.github/workflows/buildwheels.yml @@ -41,7 +41,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, ubuntu-24.04-arm, macos-13, macos-latest, windows-latest] + os: [ubuntu-latest, ubuntu-24.04-arm, macos-15-intel, macos-15, windows-latest] steps: - uses: actions/checkout@v4 @@ -92,7 +92,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, ubuntu-24.04-arm, macos-13, macos-latest, windows-latest] + os: [ubuntu-latest, ubuntu-24.04-arm, macos-15-intel, macos-15, windows-latest] steps: - uses: actions/checkout@v4 @@ -217,4 +217,4 @@ jobs: path: dist merge-multiple: true - - uses: pypa/gh-action-pypi-publish@release/v1 \ No newline at end of file + - uses: pypa/gh-action-pypi-publish@release/v1 From 63db86c01eb9e59856165ff44bd512a36236bcf5 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Tue, 23 Dec 2025 14:36:39 +0100 Subject: [PATCH 03/14] Update macOS build step to install numba from a binary package --- .github/workflows/buildwheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buildwheels.yml b/.github/workflows/buildwheels.yml index 8d478bf6..ab4bdb99 100644 --- a/.github/workflows/buildwheels.yml +++ b/.github/workflows/buildwheels.yml @@ -74,7 +74,7 @@ jobs: CIBW_BEFORE_BUILD_WINDOWS: pip install delvewheel CIBW_ENVIRONMENT_WINDOWS: CMAKE_ARGS="-DCMAKE_MAKE_PROGRAM=D:/a/_temp/msys64/mingw64/bin/ninja.exe" CMAKE_PROGRAM_PATH="D:/a/_temp/msys64/usr/bin" CMAKE_GENERATOR="Ninja" TEMP="D:/a/_temp/" CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: delvewheel repair -w {dest_dir} {wheel} - CIBW_BEFORE_BUILD_MACOS: brew reinstall gcc + CIBW_BEFORE_BUILD_MACOS: brew reinstall gcc; pip install --only-binary=numba numba CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=`sw_vers -productVersion` SYSTEM_VERSION_COMPAT=0 CIBW_TEST_REQUIRES: pytest pytest-order CIBW_TEST_COMMAND: pytest -v -s -We -p no:unraisableexception {package}/tests From e6f55515e85026adab4d3c45767eb73991183f59 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Tue, 23 Dec 2025 16:34:08 +0100 Subject: [PATCH 04/14] try forcing binary llvmlite instead --- .github/workflows/buildwheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buildwheels.yml b/.github/workflows/buildwheels.yml index ab4bdb99..db8842d6 100644 --- a/.github/workflows/buildwheels.yml +++ b/.github/workflows/buildwheels.yml @@ -74,7 +74,7 @@ jobs: CIBW_BEFORE_BUILD_WINDOWS: pip install delvewheel CIBW_ENVIRONMENT_WINDOWS: CMAKE_ARGS="-DCMAKE_MAKE_PROGRAM=D:/a/_temp/msys64/mingw64/bin/ninja.exe" CMAKE_PROGRAM_PATH="D:/a/_temp/msys64/usr/bin" CMAKE_GENERATOR="Ninja" TEMP="D:/a/_temp/" CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: delvewheel repair -w {dest_dir} {wheel} - CIBW_BEFORE_BUILD_MACOS: brew reinstall gcc; pip install --only-binary=numba numba + CIBW_BEFORE_BUILD_MACOS: brew reinstall gcc; pip install --only-binary=llvmlite llvmlite CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=`sw_vers -productVersion` SYSTEM_VERSION_COMPAT=0 CIBW_TEST_REQUIRES: pytest pytest-order CIBW_TEST_COMMAND: pytest -v -s -We -p no:unraisableexception {package}/tests From f798b63fd4fea9a256846a58a35c041e22690a77 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Tue, 23 Dec 2025 22:32:58 +0100 Subject: [PATCH 05/14] enforce binary llvmlite installation for examples run as well Updated the Fortran compiler installation step to include llvmlite. --- .github/workflows/buildwheels.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/buildwheels.yml b/.github/workflows/buildwheels.yml index db8842d6..92c828c7 100644 --- a/.github/workflows/buildwheels.yml +++ b/.github/workflows/buildwheels.yml @@ -109,10 +109,11 @@ jobs: name: dist-${{matrix.os}}-${{matrix.manylinux}} path: dist - # install fortran compiler needed by dustpy + # install fortran compiler needed by dustpy and force binary-packaged llvmlite - if: startsWith(matrix.os, 'macos-') run: | brew reinstall gcc + pip install --only-binary=llvmlite llvmlite # TODO #440 - if: startsWith(matrix.os, 'windows-') From 3b747e2e820021fa110df12c63cbf6102870129c Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Tue, 23 Dec 2025 23:50:34 +0100 Subject: [PATCH 06/14] try to enforce binary-pnly with PIP_INSTALL_OPTS environment variable for all installs --- .github/workflows/buildwheels.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/buildwheels.yml b/.github/workflows/buildwheels.yml index 92c828c7..706bb26f 100644 --- a/.github/workflows/buildwheels.yml +++ b/.github/workflows/buildwheels.yml @@ -4,6 +4,9 @@ defaults: run: shell: bash +env: + PIP_INSTALL_OPTS: "--only-binary=:all: --verbose" + on: push: branches: [ main ] @@ -22,7 +25,7 @@ jobs: with: submodules: recursive fetch-depth: 0 # https://github.com/pypa/setuptools_scm/issues/480 - - run: DEBUG=1 VERBOSE=1 pip install --verbose -e .[tests] + - run: DEBUG=1 VERBOSE=1 pip install $PIP_INSTALL_OPTS -e .[tests] - run: pytest -v -s -We -p no:unraisableexception tests zenodo_json: @@ -65,16 +68,16 @@ jobs: python-version: "3.11" - name: Install cibuildwheel - run: python -m pip install cibuildwheel + run: python -m pip install $PIP_INSTALL_OPTS cibuildwheel - name: Build and test wheels env: # skip 32-bit, musllinux, and free-threaded builds CIBW_SKIP: "*-win32 *-manylinux_i686 *musllinux* cp3??t-*" - CIBW_BEFORE_BUILD_WINDOWS: pip install delvewheel + CIBW_BEFORE_BUILD_WINDOWS: pip install $PIP_INSTALL_OPTS delvewheel CIBW_ENVIRONMENT_WINDOWS: CMAKE_ARGS="-DCMAKE_MAKE_PROGRAM=D:/a/_temp/msys64/mingw64/bin/ninja.exe" CMAKE_PROGRAM_PATH="D:/a/_temp/msys64/usr/bin" CMAKE_GENERATOR="Ninja" TEMP="D:/a/_temp/" CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: delvewheel repair -w {dest_dir} {wheel} - CIBW_BEFORE_BUILD_MACOS: brew reinstall gcc; pip install --only-binary=llvmlite llvmlite + CIBW_BEFORE_BUILD_MACOS: brew reinstall gcc; pip install $PIP_INSTALL_OPTS llvmlite CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=`sw_vers -productVersion` SYSTEM_VERSION_COMPAT=0 CIBW_TEST_REQUIRES: pytest pytest-order CIBW_TEST_COMMAND: pytest -v -s -We -p no:unraisableexception {package}/tests @@ -113,7 +116,6 @@ jobs: - if: startsWith(matrix.os, 'macos-') run: | brew reinstall gcc - pip install --only-binary=llvmlite llvmlite # TODO #440 - if: startsWith(matrix.os, 'windows-') @@ -121,7 +123,7 @@ jobs: - run: | temp=`find dist/ -name "*cp313*.whl"` - python -m pip install $temp[examples] + python -m pip install $PIP_INSTALL_OPTS $temp[examples] ex -sc 'g/^PyPartMC/d' -cx .binder/requirements.txt python -m pip install --force-reinstall --no-deps $PIP_INSTALL_OPTS -r .binder/requirements.txt python -m pip install $PIP_INSTALL_OPTS -r gitmodules/devops_tests/requirements.txt @@ -138,7 +140,7 @@ jobs: fetch-depth: 0 - run: | - python -m pip install pytest + python -m pip install $PIP_INSTALL_OPTS pytest python -m pip install $PIP_INSTALL_OPTS -r gitmodules/devops_tests/requirements.txt GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} python -m pytest --durations=10 -v -s -We -p no:unraisableexception gitmodules/devops_tests/test_todos_annotated.py @@ -152,7 +154,7 @@ jobs: - uses: actions/setup-python@v5.0.0 with: python-version: "3.11" - - run: pip install twine auditwheel + - run: pip install $PIP_INSTALL_OPTS twine auditwheel - uses: actions/download-artifact@v4 with: name: dist-${{matrix.os}}-${{matrix.manylinux}} From 306b612a01a8aa70b4e2bdde2016ece28f54236b Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Wed, 24 Dec 2025 00:25:15 +0100 Subject: [PATCH 07/14] fix PIP_INSTALL_OPTS use in env var setting --- .github/workflows/buildwheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buildwheels.yml b/.github/workflows/buildwheels.yml index 706bb26f..c589bc24 100644 --- a/.github/workflows/buildwheels.yml +++ b/.github/workflows/buildwheels.yml @@ -77,7 +77,7 @@ jobs: CIBW_BEFORE_BUILD_WINDOWS: pip install $PIP_INSTALL_OPTS delvewheel CIBW_ENVIRONMENT_WINDOWS: CMAKE_ARGS="-DCMAKE_MAKE_PROGRAM=D:/a/_temp/msys64/mingw64/bin/ninja.exe" CMAKE_PROGRAM_PATH="D:/a/_temp/msys64/usr/bin" CMAKE_GENERATOR="Ninja" TEMP="D:/a/_temp/" CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: delvewheel repair -w {dest_dir} {wheel} - CIBW_BEFORE_BUILD_MACOS: brew reinstall gcc; pip install $PIP_INSTALL_OPTS llvmlite + CIBW_BEFORE_BUILD_MACOS: brew reinstall gcc; pip install ${{ env.PIP_INSTALL_OPTS }} llvmlite CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=`sw_vers -productVersion` SYSTEM_VERSION_COMPAT=0 CIBW_TEST_REQUIRES: pytest pytest-order CIBW_TEST_COMMAND: pytest -v -s -We -p no:unraisableexception {package}/tests From afca1132c32ebe87315fb0caf3116201f2fefed0 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Wed, 24 Dec 2025 00:47:07 +0100 Subject: [PATCH 08/14] Update llvmlite installation command for macOS --- .github/workflows/buildwheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buildwheels.yml b/.github/workflows/buildwheels.yml index c589bc24..47c7c8c4 100644 --- a/.github/workflows/buildwheels.yml +++ b/.github/workflows/buildwheels.yml @@ -77,7 +77,7 @@ jobs: CIBW_BEFORE_BUILD_WINDOWS: pip install $PIP_INSTALL_OPTS delvewheel CIBW_ENVIRONMENT_WINDOWS: CMAKE_ARGS="-DCMAKE_MAKE_PROGRAM=D:/a/_temp/msys64/mingw64/bin/ninja.exe" CMAKE_PROGRAM_PATH="D:/a/_temp/msys64/usr/bin" CMAKE_GENERATOR="Ninja" TEMP="D:/a/_temp/" CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: delvewheel repair -w {dest_dir} {wheel} - CIBW_BEFORE_BUILD_MACOS: brew reinstall gcc; pip install ${{ env.PIP_INSTALL_OPTS }} llvmlite + CIBW_BEFORE_BUILD_MACOS: brew reinstall gcc; pip install --only-binary=llvmlite llvmlite CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=`sw_vers -productVersion` SYSTEM_VERSION_COMPAT=0 CIBW_TEST_REQUIRES: pytest pytest-order CIBW_TEST_COMMAND: pytest -v -s -We -p no:unraisableexception {package}/tests From 025b7bed110dc20f8e4aa5273992e75d207c92d1 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Wed, 24 Dec 2025 01:08:07 +0100 Subject: [PATCH 09/14] undo addition of PIP_INSTALL_OPTS where it does not work --- .github/workflows/buildwheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buildwheels.yml b/.github/workflows/buildwheels.yml index 47c7c8c4..c418dec3 100644 --- a/.github/workflows/buildwheels.yml +++ b/.github/workflows/buildwheels.yml @@ -74,7 +74,7 @@ jobs: env: # skip 32-bit, musllinux, and free-threaded builds CIBW_SKIP: "*-win32 *-manylinux_i686 *musllinux* cp3??t-*" - CIBW_BEFORE_BUILD_WINDOWS: pip install $PIP_INSTALL_OPTS delvewheel + CIBW_BEFORE_BUILD_WINDOWS: pip install delvewheel CIBW_ENVIRONMENT_WINDOWS: CMAKE_ARGS="-DCMAKE_MAKE_PROGRAM=D:/a/_temp/msys64/mingw64/bin/ninja.exe" CMAKE_PROGRAM_PATH="D:/a/_temp/msys64/usr/bin" CMAKE_GENERATOR="Ninja" TEMP="D:/a/_temp/" CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: delvewheel repair -w {dest_dir} {wheel} CIBW_BEFORE_BUILD_MACOS: brew reinstall gcc; pip install --only-binary=llvmlite llvmlite From bf839d74f51edec0854e7f703fae07fb82e23ecb Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Sat, 27 Dec 2025 19:11:24 +0100 Subject: [PATCH 10/14] reorder pip install commands for example runs --- .github/workflows/buildwheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buildwheels.yml b/.github/workflows/buildwheels.yml index c418dec3..fef11d7f 100644 --- a/.github/workflows/buildwheels.yml +++ b/.github/workflows/buildwheels.yml @@ -123,10 +123,10 @@ jobs: - run: | temp=`find dist/ -name "*cp313*.whl"` - python -m pip install $PIP_INSTALL_OPTS $temp[examples] ex -sc 'g/^PyPartMC/d' -cx .binder/requirements.txt python -m pip install --force-reinstall --no-deps $PIP_INSTALL_OPTS -r .binder/requirements.txt python -m pip install $PIP_INSTALL_OPTS -r gitmodules/devops_tests/requirements.txt + python -m pip install $PIP_INSTALL_OPTS $temp[examples] GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} python -m pytest --durations=10 ${{ env.PYTEST_SKIP_ARGS }} -v -s -We -p no:unraisableexception gitmodules/devops_tests/test_run_notebooks.py check_annotated_todos: From b3fedeaab0c7c56965ce3dcb5c541527d4d75206 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Sun, 28 Dec 2025 12:37:32 +0100 Subject: [PATCH 11/14] pin PySDM version to 3.0.0rc19? Added specific version of PySDM to the installation command. --- .github/workflows/buildwheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buildwheels.yml b/.github/workflows/buildwheels.yml index fef11d7f..15cf3999 100644 --- a/.github/workflows/buildwheels.yml +++ b/.github/workflows/buildwheels.yml @@ -126,7 +126,7 @@ jobs: ex -sc 'g/^PyPartMC/d' -cx .binder/requirements.txt python -m pip install --force-reinstall --no-deps $PIP_INSTALL_OPTS -r .binder/requirements.txt python -m pip install $PIP_INSTALL_OPTS -r gitmodules/devops_tests/requirements.txt - python -m pip install $PIP_INSTALL_OPTS $temp[examples] + python -m pip install $PIP_INSTALL_OPTS $temp[examples] PySDM==3.0.0rc19 GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} python -m pytest --durations=10 ${{ env.PYTEST_SKIP_ARGS }} -v -s -We -p no:unraisableexception gitmodules/devops_tests/test_run_notebooks.py check_annotated_todos: From 4cf581f0e742bc28bb0c9f692b361b0d1ab829c3 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Fri, 2 Jan 2026 00:55:14 +0100 Subject: [PATCH 12/14] pin chempy and pyneqsys versions --- .github/workflows/buildwheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buildwheels.yml b/.github/workflows/buildwheels.yml index 15cf3999..999da662 100644 --- a/.github/workflows/buildwheels.yml +++ b/.github/workflows/buildwheels.yml @@ -126,7 +126,7 @@ jobs: ex -sc 'g/^PyPartMC/d' -cx .binder/requirements.txt python -m pip install --force-reinstall --no-deps $PIP_INSTALL_OPTS -r .binder/requirements.txt python -m pip install $PIP_INSTALL_OPTS -r gitmodules/devops_tests/requirements.txt - python -m pip install $PIP_INSTALL_OPTS $temp[examples] PySDM==3.0.0rc19 + python -m pip install $PIP_INSTALL_OPTS $temp[examples] PySDM==3.0.0rc19 chempy==0.10.1 pyneqsys==0.5.7 GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} python -m pytest --durations=10 ${{ env.PYTEST_SKIP_ARGS }} -v -s -We -p no:unraisableexception gitmodules/devops_tests/test_run_notebooks.py check_annotated_todos: From 2fcf67d94e9e3013fd4f08acd1bd8b54bb40f1f3 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Fri, 2 Jan 2026 01:28:30 +0100 Subject: [PATCH 13/14] remove outdated comment change Removed comment about force binary-packaged llvmlite. --- .github/workflows/buildwheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/buildwheels.yml b/.github/workflows/buildwheels.yml index 999da662..b614956b 100644 --- a/.github/workflows/buildwheels.yml +++ b/.github/workflows/buildwheels.yml @@ -112,7 +112,7 @@ jobs: name: dist-${{matrix.os}}-${{matrix.manylinux}} path: dist - # install fortran compiler needed by dustpy and force binary-packaged llvmlite + # install fortran compiler needed by dustpy - if: startsWith(matrix.os, 'macos-') run: | brew reinstall gcc From a019fadd9e8f46a96f6c0eb8c15c0dbf079b0dd2 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Fri, 2 Jan 2026 03:05:45 +0100 Subject: [PATCH 14/14] Change Python version from 3.13 to 3.12 for examples run (due to pyneqsys incompatibility) --- .github/workflows/buildwheels.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/buildwheels.yml b/.github/workflows/buildwheels.yml index b614956b..1905c60e 100644 --- a/.github/workflows/buildwheels.yml +++ b/.github/workflows/buildwheels.yml @@ -105,7 +105,7 @@ jobs: - uses: actions/setup-python@v5.0.0 with: - python-version: "3.13" + python-version: "3.12" - uses: actions/download-artifact@v4 with: @@ -122,7 +122,7 @@ jobs: run: echo 'PYTEST_SKIP_ARGS=-k "not camp"' >> $GITHUB_ENV - run: | - temp=`find dist/ -name "*cp313*.whl"` + temp=`find dist/ -name "*cp312*.whl"` ex -sc 'g/^PyPartMC/d' -cx .binder/requirements.txt python -m pip install --force-reinstall --no-deps $PIP_INSTALL_OPTS -r .binder/requirements.txt python -m pip install $PIP_INSTALL_OPTS -r gitmodules/devops_tests/requirements.txt