From 1dafc876eb0e8e2b8605a1f39ad7cc6255da73ac Mon Sep 17 00:00:00 2001 From: Thomas Pellissier-Tanon Date: Thu, 30 Apr 2026 17:28:31 +0200 Subject: [PATCH 1/5] Publishes the binary as a wheel on Pypi --- .github/workflows/python-wheel.yml | 108 +++++++++++++++++++++++++++++ pyo3-introspection/pyproject.toml | 33 +++++++++ 2 files changed, 141 insertions(+) create mode 100644 .github/workflows/python-wheel.yml create mode 100644 pyo3-introspection/pyproject.toml diff --git a/.github/workflows/python-wheel.yml b/.github/workflows/python-wheel.yml new file mode 100644 index 00000000000..2656bd6758b --- /dev/null +++ b/.github/workflows/python-wheel.yml @@ -0,0 +1,108 @@ +name: Build and release wheels + +on: + pull_request: # TODO: remove before merging + merge_group: + types: [ checks_requested ] + workflow_dispatch: + push: + tags: + - "v*" + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }} + cancel-in-progress: true + +jobs: + pypi_linux: + runs-on: ubuntu-latest + strategy: + matrix: + target: [x86_64, x86, aarch64, armv7, s390x, ppc64le] + steps: + - uses: actions/checkout@v6.0.2 + - uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.target }} + args: --release --out dist --compatibility pypi + manylinux: auto + working-directory: pyo3-introspection + - uses: actions/upload-artifact@v7 + with: + name: wheels-linux-${{ matrix.target }} + path: dist + + pypi_windows: + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: windows-latest + target: x64 + - runner: windows-latest + target: x86 + - runner: windows-11-arm + target: aarch64 + steps: + - uses: actions/checkout@v6.0.2 + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --release --out dist --compatibility pypi + working-directory: pyo3-introspection + - uses: actions/upload-artifact@v7 + with: + name: wheels-windows-${{ matrix.platform.target }} + path: dist + + pypi_macos: + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: macos-15-intel + target: x86_64 + - runner: macos-latest + target: aarch64 + steps: + - uses: actions/checkout@v6.0.2 + - uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --release --out dist --compatibility pypi + working-directory: pyo3-introspection + - uses: actions/upload-artifact@v7 + with: + name: wheels-macos-${{ matrix.platform.target }} + path: dist + + pypi_sdist: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6.0.2 + - uses: PyO3/maturin-action@v1 + with: + command: sdist + args: --out dist + working-directory: pyo3-introspection + - uses: actions/upload-artifact@v7 + with: + name: wheels-sdist + path: dist + + pypi_release: + if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') + permissions: + id-token: write + + runs-on: ubuntu-latest + environment: release + needs: [pypi_linux, pypi_windows, pypi_macos, pypi_sdist] + steps: + - uses: actions/download-artifact@v8 + with: + pattern: wheels-* + path: dist + merge-multiple: true + - uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/pyo3-introspection/pyproject.toml b/pyo3-introspection/pyproject.toml new file mode 100644 index 00000000000..76ff4171825 --- /dev/null +++ b/pyo3-introspection/pyproject.toml @@ -0,0 +1,33 @@ +[project] +name = "pyo3-introspection" +classifiers = [ + "Development Status :: 3 - Alpha", + "Intended Audience :: Developers", + "License :: OSI Approved :: Apache Software License", + "License :: OSI Approved :: MIT License", + "Programming Language :: Rust", +] +dynamic = [ + "authors", + "description", + "keywords", + "license", + "license-files", + "maintainers", + "readme", + "version", +] + +[project.urls] +Changelog = "https://github.com/PyO3/pyo3/blob/main/CHANGELOG.md" +Documentation = "https://pyo3.rs/" +Homepage = "https://pyo3.rs/" +Source = "https://github.com/PyO3/pyo3/tree/main/pyo3-introspection" +Tracker = "https://github.com/PyO3/pyo3/issues" + +[build-system] +requires = ["maturin>=1,<2"] +build-backend = "maturin" + +[tool.maturin] +bindings = "bin" From 1e1f9d2d795f75aa0f8f789ed860b8b24424e5b3 Mon Sep 17 00:00:00 2001 From: Thomas Tanon Date: Sat, 9 May 2026 17:20:16 +0200 Subject: [PATCH 2/5] Fix artifact upload path --- .github/workflows/python-wheel.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/python-wheel.yml b/.github/workflows/python-wheel.yml index 2656bd6758b..35fde78c2c6 100644 --- a/.github/workflows/python-wheel.yml +++ b/.github/workflows/python-wheel.yml @@ -30,7 +30,7 @@ jobs: - uses: actions/upload-artifact@v7 with: name: wheels-linux-${{ matrix.target }} - path: dist + path: pyo3-introspection/dist pypi_windows: runs-on: ${{ matrix.platform.runner }} @@ -54,7 +54,7 @@ jobs: - uses: actions/upload-artifact@v7 with: name: wheels-windows-${{ matrix.platform.target }} - path: dist + path: pyo3-introspection/dist pypi_macos: runs-on: ${{ matrix.platform.runner }} @@ -75,7 +75,7 @@ jobs: - uses: actions/upload-artifact@v7 with: name: wheels-macos-${{ matrix.platform.target }} - path: dist + path: pyo3-introspection/dist pypi_sdist: runs-on: ubuntu-latest @@ -89,7 +89,7 @@ jobs: - uses: actions/upload-artifact@v7 with: name: wheels-sdist - path: dist + path: pyo3-introspection/dist pypi_release: if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') @@ -103,6 +103,6 @@ jobs: - uses: actions/download-artifact@v8 with: pattern: wheels-* - path: dist + path: pyo3-introspection/dist merge-multiple: true - uses: pypa/gh-action-pypi-publish@release/v1 From b87c2e2e3ddca709eec96160ebb5f080bc9d1d00 Mon Sep 17 00:00:00 2001 From: Thomas Tanon Date: Sat, 9 May 2026 17:32:52 +0200 Subject: [PATCH 3/5] Stop running on PRs --- .github/workflows/python-wheel.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/python-wheel.yml b/.github/workflows/python-wheel.yml index 35fde78c2c6..95569d5f3e9 100644 --- a/.github/workflows/python-wheel.yml +++ b/.github/workflows/python-wheel.yml @@ -1,7 +1,6 @@ name: Build and release wheels on: - pull_request: # TODO: remove before merging merge_group: types: [ checks_requested ] workflow_dispatch: From d3283344c9088fb05d4d3cdec8bf4f7b5bc326b9 Mon Sep 17 00:00:00 2001 From: Thomas Pellissier-Tanon Date: Wed, 13 May 2026 15:56:48 +0200 Subject: [PATCH 4/5] Allow publishing on workflow_dispatch if it's on a tag --- .github/workflows/python-wheel.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-wheel.yml b/.github/workflows/python-wheel.yml index 95569d5f3e9..e4665cfbcd9 100644 --- a/.github/workflows/python-wheel.yml +++ b/.github/workflows/python-wheel.yml @@ -91,7 +91,7 @@ jobs: path: pyo3-introspection/dist pypi_release: - if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') + if: contains(github.ref, 'refs/tags/') permissions: id-token: write From c0b7938b4d4e6c9b5db43a891c950216a2ef85c1 Mon Sep 17 00:00:00 2001 From: Thomas Tanon Date: Wed, 13 May 2026 20:06:37 +0200 Subject: [PATCH 5/5] Update .github/workflows/python-wheel.yml Co-authored-by: David Hewitt --- .github/workflows/python-wheel.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-wheel.yml b/.github/workflows/python-wheel.yml index e4665cfbcd9..d2f6eb7911a 100644 --- a/.github/workflows/python-wheel.yml +++ b/.github/workflows/python-wheel.yml @@ -91,7 +91,7 @@ jobs: path: pyo3-introspection/dist pypi_release: - if: contains(github.ref, 'refs/tags/') + if: startsWith(github.ref, 'refs/tags/') permissions: id-token: write