From e4d6ad1bf403b23d9a7551503ed1793e44063c5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Fri, 14 Nov 2025 20:16:03 +0100 Subject: [PATCH 1/2] Create release.yml --- .github/workflows/release.yml | 113 ++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..0e2d9e4a --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,113 @@ +name: PyPI Release + +on: + release: + types: [published] + +jobs: + check_tag: + name: Check tag + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v5 + + - uses: actions/setup-python@v6 + with: + python-version: '3.11' + + - shell: bash + run: | + TAG="${{ github.event.release.tag_name }}" + GH_TAG_NAME="${TAG#v}" + PY_VERSION=$(python - <<'PY' + import pathlib, tomllib + data = tomllib.loads(pathlib.Path("pyproject.toml").read_text(encoding="utf-8")) + print(data.get("project").get("version")) + PY + ) + if [ "${GH_TAG_NAME}" != "${PY_VERSION}" ]; then + echo "::error::Tag (${GH_TAG_NAME}) does not match pyproject.toml version (${PY_VERSION})." + exit 2 + fi + + build_wheels: + name: Build wheels + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v5 + + - uses: actions/setup-python@v6 + with: + python-version: '3.11' + + - name: Build wheel + run: | + python -m pip install build + python -m build --wheel --sdist --outdir wheelhouse + + - name: Store wheels + uses: actions/upload-artifact@v4 + with: + name: wheels + path: wheelhouse/* + + pytest-nosoftdeps: + name: no-softdeps + runs-on: ${{ matrix.os }} + needs: [build_wheels] + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + + steps: + - uses: actions/checkout@v5 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v6 + with: + python-version: ${{ matrix.python-version }} + + - name: Setup macOS + if: runner.os == 'macOS' + run: | + brew install libomp # https://github.com/pytorch/pytorch/issues/20030 + + - name: Get full Python version + id: full-python-version + shell: bash + run: echo version=$(python -c "import sys; print('-'.join(str(v) for v in sys.version_info))") >> $GITHUB_OUTPUT + + - name: Install dependencies + shell: bash + run: | + pip install ".[dev]" + + - name: Show dependencies + run: python -m pip list + + - name: Run pytest + shell: bash + run: python -m pytest tests + + upload_wheels: + name: Upload wheels to PyPI + runs-on: ubuntu-latest + needs: [pytest-nosoftdeps] + + permissions: + id-token: write + + steps: + - uses: actions/download-artifact@v5 + with: + name: wheels + path: wheelhouse + + - name: Publish package to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: wheelhouse/ From d88401bc0729ab42a8e1d8cae62414a085451c50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Sun, 16 Nov 2025 13:40:55 +0100 Subject: [PATCH 2/2] Update release.yml --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0e2d9e4a..ddfa9964 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,7 +61,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v5