diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a0008bc..ab567eb 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -91,7 +91,9 @@ jobs: manylinux: 2_28 rustup-components: rust-std rustfmt sccache: 'true' - args: --release --strip --out dist -i python3.10 python3.11 python3.12 python3.13 + # abi3 (see Cargo.toml) produces one wheel for all CPython >= 3.10, + # so a single interpreter is enough to build it. + args: --release --strip --out dist -i python3.10 - uses: actions/upload-artifact@v6 with: @@ -113,7 +115,9 @@ jobs: manylinux: 2_28 rustup-components: rust-std rustfmt sccache: 'true' - args: --release --strip --out dist -i python3.10 python3.11 python3.12 python3.13 + # abi3 (see Cargo.toml) produces one wheel for all CPython >= 3.10, + # so a single interpreter is enough to build it. + args: --release --strip --out dist -i python3.10 - uses: actions/upload-artifact@v6 with: @@ -191,6 +195,10 @@ jobs: upload-to-pypi: needs: verify-built-dist runs-on: ubuntu-latest + # Only publish for real releases. `workflow_dispatch` runs build and + # verify the wheels (uploaded as artifacts) without pushing to PyPI, so + # the workflow can be exercised manually without cutting a release. + if: github.event_name == 'release' steps: - uses: actions/download-artifact@v6 with: diff --git a/Cargo.lock b/Cargo.lock index 8b58e75..21dfa95 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3375,7 +3375,7 @@ checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "xarray_sql" -version = "0.2.3" +version = "0.3.0" dependencies = [ "arrow", "async-stream", diff --git a/Cargo.toml b/Cargo.toml index 1dc95bd..e708379 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,11 @@ async-trait = "0.1" datafusion = { version = "52.0.0" } datafusion-ffi = { version = "52.0.0" } futures = { version = "0.3" } -pyo3 = { version = "0.26.0", features = ["extension-module"] } +# `abi3-py310` builds against CPython's stable ABI, so a single wheel per +# platform works on all CPython >= 3.10 (matching `requires-python`). This +# lets the release workflow ship pre-built wheels for every interpreter +# without compiling per-version, avoiding local rebuilds on install. +pyo3 = { version = "0.26.0", features = ["extension-module", "abi3-py310"] } tokio = { version = "1.46.1", features = ["rt"] }