This is an automated email from the ASF dual-hosted git repository.
lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git
The following commit(s) were added to refs/heads/main by this push:
new fe88b72a9 build: distribute wheels for Python 3.15/3.15t (#4879)
fe88b72a9 is described below
commit fe88b72a9917763a1ff2eb694341b5b6da8aa6f4
Author: David Li <[email protected]>
AuthorDate: Tue Oct 13 21:24:29 2026 -0700
build: distribute wheels for Python 3.15/3.15t (#4879)
Assisted-by: GPT-6.1 Sol
---
.github/workflows/native-unix.yml | 2 +
.github/workflows/native-windows.yml | 1 +
.github/workflows/nightly-verify.yml | 2 +
.github/workflows/packaging.yml | 68 ++++++++++++++++++++++++++++++-
.github/workflows/verify.yml | 20 +++++++++
ci/scripts/python_wheel_unix_relocate.sh | 2 +-
dev/release/verify-release-candidate.ps1 | 2 +-
dev/release/verify-release-candidate.sh | 8 ++--
python/adbc_driver_manager/pyproject.toml | 2 +-
9 files changed, 98 insertions(+), 9 deletions(-)
diff --git a/.github/workflows/native-unix.yml
b/.github/workflows/native-unix.yml
index b20cfcfc2..f2289e497 100644
--- a/.github/workflows/native-unix.yml
+++ b/.github/workflows/native-unix.yml
@@ -535,6 +535,7 @@ jobs:
strategy:
matrix:
os: ["macos-15-intel", "macos-latest", "ubuntu-latest"]
+ # TODO(lidavidm): 3.14 -> 3.15 once conda packages are available
python: ["3.11", "3.14"]
env:
# Required for macOS
@@ -668,6 +669,7 @@ jobs:
strategy:
matrix:
os: ["ubuntu-latest"]
+ # TODO(lidavidm): 3.14 -> 3.15 once conda packages are available
python: ["3.14"]
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 #
v7.0.1
diff --git a/.github/workflows/native-windows.yml
b/.github/workflows/native-windows.yml
index ff844f70d..adcad8434 100644
--- a/.github/workflows/native-windows.yml
+++ b/.github/workflows/native-windows.yml
@@ -264,6 +264,7 @@ jobs:
strategy:
matrix:
os: ["windows-latest"]
+ # TODO(lidavidm): 3.14 -> 3.15 once conda packages are available
python: ["3.11", "3.14"]
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 #
v7.0.1
diff --git a/.github/workflows/nightly-verify.yml
b/.github/workflows/nightly-verify.yml
index 6a047792f..426e9c820 100644
--- a/.github/workflows/nightly-verify.yml
+++ b/.github/workflows/nightly-verify.yml
@@ -182,6 +182,8 @@ jobs:
env:
CI: "false"
REPOSITORY: ${{ github.repository }}
+ # TODO(lidavidm): 3.14 -> 3.15 once conda packages are available
+ PYTHON_VERSION: "3.14"
TEST_DEFAULT: "0"
TEST_SOURCE: "1"
USE_CONDA: "1"
diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml
index 92be0caeb..cf2f20437 100644
--- a/.github/workflows/packaging.yml
+++ b/.github/workflows/packaging.yml
@@ -770,6 +770,22 @@ jobs:
pushd adbc
env PYTHON=3.14t docker compose run
python-wheel-manylinux-freethreaded-test
+ - name: Test wheel 3.15
+ env:
+ ARCH: ${{ matrix.arch }}
+ PLATFORM: ${{ matrix.platform }}
+ run: |
+ pushd adbc
+ env PYTHON=3.15 docker compose run python-wheel-manylinux-test
+
+ - name: Test wheel 3.15t
+ env:
+ ARCH: ${{ matrix.arch }}
+ PLATFORM: ${{ matrix.platform }}
+ run: |
+ pushd adbc
+ env PYTHON=3.15t docker compose run
python-wheel-manylinux-freethreaded-test
+
python-macos:
name: "Python ${{ matrix.arch }} macOS"
runs-on: ${{ matrix.os }}
@@ -914,6 +930,27 @@ jobs:
./ci/scripts/python_wheel_unix_test.sh $(pwd)
deactivate
+ - name: Test wheel 3.15
+ run: |
+ pushd adbc
+
+ /Library/Frameworks/Python.framework/Versions/3.15/bin/python3.15 -m
venv test-env-315
+ source test-env-315/bin/activate
+ export PYTHON_VERSION=3.15
+ ./ci/scripts/python_wheel_unix_test.sh $(pwd)
+ deactivate
+
+ - name: Test wheel 3.15t
+ run: |
+ pushd adbc
+
+ /Library/Frameworks/PythonT.framework/Versions/3.15/bin/python3.15t
-m venv test-env-315t
+ source test-env-315t/bin/activate
+ export PYTHON_GIL=0
+ export PYTHON_VERSION=3.15t
+ ./ci/scripts/python_wheel_unix_test.sh $(pwd)
+ deactivate
+
- name: Assemble logs
if: failure()
run: |
@@ -1061,6 +1098,24 @@ jobs:
python-version: "3.14t"
update-environment: false
+ - name: Install Python 3.15
+ id: python315
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 #
v7.0.0
+ with:
+ architecture: ${{ matrix.python_arch }}
+ check-latest: true
+ python-version: "3.15"
+ update-environment: false
+
+ - name: Install Python 3.15t
+ id: python315t
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 #
v7.0.0
+ with:
+ architecture: ${{ matrix.python_arch }}
+ check-latest: true
+ python-version: "3.15t"
+ update-environment: false
+
- name: Build driver wheels
shell: pwsh
env:
@@ -1084,6 +1139,8 @@ jobs:
PYTHON_313: ${{ steps.python313.outputs.python-path }}
PYTHON_314: ${{ steps.python314.outputs.python-path }}
PYTHON_314T: ${{ steps.python314t.outputs.python-path }}
+ PYTHON_315: ${{ steps.python315.outputs.python-path }}
+ PYTHON_315T: ${{ steps.python315t.outputs.python-path }}
SETUPTOOLS_SCM_PRETEND_VERSION: ${{ env.VERSION }}
run: |
$OriginalPath = $env:PATH
@@ -1092,7 +1149,9 @@ jobs:
@{ Version = "3.12"; Path = $env:PYTHON_312 },
@{ Version = "3.13"; Path = $env:PYTHON_313 },
@{ Version = "3.14"; Path = $env:PYTHON_314 },
- @{ Version = "3.14t"; Path = $env:PYTHON_314T }
+ @{ Version = "3.14t"; Path = $env:PYTHON_314T },
+ @{ Version = "3.15"; Path = $env:PYTHON_315 },
+ @{ Version = "3.15t"; Path = $env:PYTHON_315T }
)
Set-Location adbc
foreach ($Python in $Pythons) {
@@ -1128,6 +1187,8 @@ jobs:
PYTHON_313: ${{ steps.python313.outputs.python-path }}
PYTHON_314: ${{ steps.python314.outputs.python-path }}
PYTHON_314T: ${{ steps.python314t.outputs.python-path }}
+ PYTHON_315: ${{ steps.python315.outputs.python-path }}
+ PYTHON_315T: ${{ steps.python315t.outputs.python-path }}
run: |
$DriverDir = Join-Path $PWD "adbc/build/bin"
$OriginalPath = "$DriverDir;$env:PATH"
@@ -1136,7 +1197,9 @@ jobs:
@{ Version = "3.12"; Path = $env:PYTHON_312 },
@{ Version = "3.13"; Path = $env:PYTHON_313 },
@{ Version = "3.14"; Path = $env:PYTHON_314 },
- @{ Version = "3.14t"; Path = $env:PYTHON_314T }
+ @{ Version = "3.14t"; Path = $env:PYTHON_314T },
+ @{ Version = "3.15"; Path = $env:PYTHON_315 },
+ @{ Version = "3.15t"; Path = $env:PYTHON_315T }
)
Set-Location adbc
foreach ($Python in $Pythons) {
@@ -1144,6 +1207,7 @@ jobs:
continue
}
Write-Host "::group::Testing wheels with Python $($Python.Version)"
+ Remove-Item -Path Env:PYTHON_GIL -ErrorAction SilentlyContinue
$env:PYTHON_VERSION = $Python.Version
$PythonDir = Split-Path $Python.Path
$env:PATH = "$PythonDir;$OriginalPath"
diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml
index 863f39e97..cbd4ac714 100644
--- a/.github/workflows/verify.yml
+++ b/.github/workflows/verify.yml
@@ -107,6 +107,24 @@ jobs:
check-latest: true
python-version: "3.14t"
update-environment: false
+ - name: Install Python 3.15
+ if: matrix.os == 'windows-11-arm'
+ id: python315
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 #
v7.0.0
+ with:
+ architecture: arm64
+ check-latest: true
+ python-version: "3.15"
+ update-environment: false
+ - name: Install Python 3.15t
+ if: matrix.os == 'windows-11-arm'
+ id: python315t
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 #
v7.0.0
+ with:
+ architecture: arm64
+ check-latest: true
+ python-version: "3.15t"
+ update-environment: false
# No Docker on M1
- name: Skip Binary Verifiction
if: matrix.os == 'macos-latest'
@@ -139,6 +157,8 @@ jobs:
PYTHON_313_PATH: ${{ steps.python313.outputs.python-path }}
PYTHON_314_PATH: ${{ steps.python314.outputs.python-path }}
PYTHON_314T_PATH: ${{ steps.python314t.outputs.python-path }}
+ PYTHON_315_PATH: ${{ steps.python315.outputs.python-path }}
+ PYTHON_315T_PATH: ${{ steps.python315t.outputs.python-path }}
REPOSITORY: ${{ github.repository }}
TEST_DEFAULT: "0"
TEST_BINARIES: "1"
diff --git a/ci/scripts/python_wheel_unix_relocate.sh
b/ci/scripts/python_wheel_unix_relocate.sh
index 539c49f2f..c83f94aea 100755
--- a/ci/scripts/python_wheel_unix_relocate.sh
+++ b/ci/scripts/python_wheel_unix_relocate.sh
@@ -56,7 +56,7 @@ fi
echo "=== Relocating wheels ==="
# https://github.com/pypa/pip/issues/7555
# Get the latest pip so we have in-tree-build by default
-python -m pip install --upgrade pip auditwheel 'cibuildwheel>=4' delocate
setuptools wheel
+python -m pip install --upgrade pip auditwheel 'cibuildwheel>=4.2' delocate
setuptools wheel
# Build with Cython debug info
export ADBC_BUILD_TYPE="debug"
diff --git a/dev/release/verify-release-candidate.ps1
b/dev/release/verify-release-candidate.ps1
index 70d9d5994..396cdcf7c 100755
--- a/dev/release/verify-release-candidate.ps1
+++ b/dev/release/verify-release-candidate.ps1
@@ -443,7 +443,7 @@ if ($TestBinaryArtifacts) {
}
if ($env:TEST_PYTHON_VERSIONS -eq $null) {
- $PythonVersions = @("3.11", "3.12", "3.13", "3.14", "3.14t")
+ $PythonVersions = @("3.11", "3.12", "3.13", "3.14", "3.14t",
"3.15", "3.15t")
} else {
$PythonVersions = @($env:TEST_PYTHON_VERSIONS.Split(" ",
[System.StringSplitOptions]::RemoveEmptyEntries))
}
diff --git a/dev/release/verify-release-candidate.sh
b/dev/release/verify-release-candidate.sh
index 87a8cf92b..a5ff80770 100755
--- a/dev/release/verify-release-candidate.sh
+++ b/dev/release/verify-release-candidate.sh
@@ -415,14 +415,14 @@ maybe_setup_conda() {
conda deactivate || :
fi
# Ensure that conda is installed
- install_conda
+ install_conda || return 1
# Create environment
if ! conda env list | cut -d" " -f 1 | grep $env; then
- mamba create -y -n $env python=${pyver} ${pymarker}
+ mamba create -y -n $env python=${pyver} ${pymarker} || return 1
fi
# Install dependencies
if [ $# -gt 0 ]; then
- mamba install -y -n $env $@
+ mamba install -y -n $env $@ || return 1
fi
# Activate the environment
conda activate $env
@@ -821,7 +821,7 @@ test_unix_wheels() {
local arch="${1}"
local platform="${2}"
- local python_versions="${TEST_PYTHON_VERSIONS:-3.11 3.12 3.13 3.14 3.14t}"
+ local python_versions="${TEST_PYTHON_VERSIONS:-3.11 3.12 3.13 3.14 3.14t
3.15 3.15t}"
for python in ${python_versions}; do
local pyver=${python/t}
diff --git a/python/adbc_driver_manager/pyproject.toml
b/python/adbc_driver_manager/pyproject.toml
index 3999f7aa8..59d509cfa 100644
--- a/python/adbc_driver_manager/pyproject.toml
+++ b/python/adbc_driver_manager/pyproject.toml
@@ -35,7 +35,7 @@ homepage = "https://arrow.apache.org/adbc/"
repository = "https://github.com/apache/arrow-adbc"
[build-system]
-requires = ["Cython >= 3.1.0", "setuptools >= 77.0.0"]
+requires = ["Cython >= 3.3.0", "setuptools >= 77.0.0"]
build-backend = "setuptools.build_meta"
[tool.pytest.ini_options]