Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -98,5 +98,5 @@ VCPKG="9b965a116838c6cdcd36bca60d1b81b030c8ab8d" # 2026.05.27 (not release, u
# ci/docker/python-*-windows-*.dockerfile or the vcpkg config.
# This is a workaround for our CI problem that "archery docker build" doesn't
# use pulled built images in dev/tasks/python-wheels/github.windows.yml.
PYTHON_WHEEL_WINDOWS_IMAGE_REVISION=2026-07-13
PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION=2026-07-13
PYTHON_WHEEL_WINDOWS_IMAGE_REVISION=2026-07-21
PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION=2026-07-21
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ FROM ${base}
ARG python=3.14

# hadolint ignore=SC1072
RUN (if "%python%"=="3.14" setx PYTHON_VERSION "3.14.5")
RUN (if "%python%"=="3.14" setx PYTHON_VERSION "3.14.5") & \
(if "%python%"=="3.15" setx PYTHON_VERSION "3.15.0b4")

SHELL ["powershell", "-NoProfile", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
RUN $version = $env:PYTHON_VERSION; \
Expand Down
3 changes: 2 additions & 1 deletion ci/docker/python-wheel-windows-test-vs2022.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ ARG python=3.11
RUN (if "%python%"=="3.11" setx PYTHON_VERSION "3.11.9" && setx PYTHON_CMD "py -3.11") & \
(if "%python%"=="3.12" setx PYTHON_VERSION "3.12.10" && setx PYTHON_CMD "py -3.12") & \
(if "%python%"=="3.13" setx PYTHON_VERSION "3.13.14" && setx PYTHON_CMD "py -3.13") & \
(if "%python%"=="3.14" setx PYTHON_VERSION "3.14.6" && setx PYTHON_CMD "py -3.14")
(if "%python%"=="3.14" setx PYTHON_VERSION "3.14.6" && setx PYTHON_CMD "py -3.14") & \
(if "%python%"=="3.15" setx PYTHON_VERSION "3.15.0b4" && setx PYTHON_CMD "py -3.15")

# hadolint ignore=DL3059
RUN choco install -r -y --pre --no-progress --force python --version=%PYTHON_VERSION%
Expand Down
6 changes: 4 additions & 2 deletions ci/scripts/install_python.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ versions=([3.11]=3.11.9
[3.12]=3.12.10
[3.13]=3.13.14
[3.14]=3.14.6
[3.14t]=3.14.6)
[3.14t]=3.14.6
[3.15]=3.15.0b4
[3.15t]=3.15.0b4)

if [ "$#" -ne 2 ]; then
echo "Usage: $0 <platform> <version>"
Expand Down Expand Up @@ -78,7 +80,7 @@ EOF
rm "$fname"

python="/Library/Frameworks/Python.framework/Versions/${version}/bin/python${version}"
if [[ $2 == "3.14t" ]]; then
if [[ $2 == "3.14t" ]] || [[ $2 == "3.15t" ]]; then
base_version="${version%t}"
python="/Library/Frameworks/PythonT.framework/Versions/${base_version}/bin/python${base_version}t"
fi
Expand Down
7 changes: 6 additions & 1 deletion ci/scripts/python_wheel_unix_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,12 @@ export PYARROW_TEST_GANDIVA=OFF
export PYARROW_TEST_GCS=${ARROW_GCS}
export PYARROW_TEST_HDFS=ON
export PYARROW_TEST_ORC=ON
export PYARROW_TEST_PANDAS=ON
# TODO: To be removed once pandas provides wheels for Python 3.15
if python -c "import sys; sys.exit(0 if sys.version_info < (3, 15) else 1)"; then
export PYARROW_TEST_PANDAS=ON
else
export PYARROW_TEST_PANDAS=OFF
fi
export PYARROW_TEST_PARQUET=ON
export PYARROW_TEST_PARQUET_ENCRYPTION=ON
export PYARROW_TEST_SUBSTRAIT=${ARROW_SUBSTRAIT}
Expand Down
4 changes: 2 additions & 2 deletions compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1178,7 +1178,7 @@ services:
args:
arch: ${ARCH}
arch_short: ${ARCH_SHORT}
base: quay.io/pypa/manylinux_2_28_${ARCH_ALIAS}:2026.05.31-3
base: quay.io/pypa/manylinux_2_28_${ARCH_ALIAS}:2026.07.19-1
manylinux: 2_28
python: ${PYTHON}
python_abi_tag: ${PYTHON_ABI_TAG}
Expand All @@ -1203,7 +1203,7 @@ services:
args:
arch: ${ARCH}
arch_short: ${ARCH_SHORT}
base: quay.io/pypa/musllinux_1_2_${ARCH_ALIAS}:2026.05.31-3
base: quay.io/pypa/musllinux_1_2_${ARCH_ALIAS}:2026.07.19-1
musllinux: 1_2
python: ${PYTHON}
python_abi_tag: ${PYTHON_ABI_TAG}
Expand Down
4 changes: 2 additions & 2 deletions dev/release/verify-release-candidate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -898,11 +898,11 @@ test_macos_wheels() {

# apple silicon processor
if [ "$(uname -m)" = "arm64" ]; then
local python_versions="3.11 3.12 3.13 3.14"
local python_versions="3.11 3.12 3.13 3.14 3.15"
local platform_tags="macosx_12_0_arm64"
local check_flight=OFF
else
local python_versions="3.11 3.12 3.13 3.14"
local python_versions="3.11 3.12 3.13 3.14 3.15"
local platform_tags="macosx_12_0_x86_64"
fi

Expand Down
2 changes: 1 addition & 1 deletion dev/tasks/python-wheels/github.linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
{% endif %}
PYTHON: "{{ python_version }}"
PYTHON_ABI_TAG: "{{ python_abi_tag }}"
PYTHON_IMAGE_TAG: "{{ python_version }}"
PYTHON_IMAGE_TAG: "{{ python_image_tag }}"

steps:
{{ macros.github_checkout_arrow()|indent }}
Expand Down
15 changes: 9 additions & 6 deletions dev/tasks/tasks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -138,11 +138,13 @@ tasks:

########################### Python Wheels ############################

{% for python_version, python_tag, abi_tag in [("3.11", "cp311", "cp311"),
("3.12", "cp312", "cp312"),
("3.13", "cp313", "cp313"),
("3.14", "cp314", "cp314"),
("3.14", "cp314", "cp314t")] %}
{% for python_version, python_image_tag, python_tag, abi_tag in [("3.11", "3.11", "cp311", "cp311"),
("3.12", "3.12", "cp312", "cp312"),
("3.13", "3.13", "cp313", "cp313"),
("3.14", "3.14", "cp314", "cp314"),
("3.14", "3.14", "cp314", "cp314t"),
("3.15", "3.15.0b4", "cp315", "cp315"),
("3.15", "3.15.0b4", "cp315", "cp315t")] %}

{############################## Wheel Linux ##################################}

Expand All @@ -159,6 +161,7 @@ tasks:
linux_wheel_version: "{{ version }}"
python_abi_tag: "{{ abi_tag }}"
python_version: "{{ python_version }}"
python_image_tag: "{{ python_image_tag }}"
wheel_platform_tag: "{{ platform_tag }}"
artifacts:
- pyarrow-{no_rc_version}-{{ python_tag }}-{{ abi_tag }}-{{ platform_tag }}.whl
Expand Down Expand Up @@ -495,7 +498,7 @@ tasks:
UBUNTU: 22.04
image: ubuntu-cpp-emscripten

{% for python_version in ["3.11", "3.12", "3.13", "3.14"] %}
{% for python_version in ["3.11", "3.12", "3.13", "3.14", "3.15"] %}
test-conda-python-{{ python_version }}:
ci: github
template: docker-tests/github.linux.yml
Expand Down
8 changes: 6 additions & 2 deletions python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,11 @@
requires = [
"scikit-build-core >= 1.0",
"cython >= 3.1",
# Needed for build-time stub docstring extraction
"libcst>=1.8.6",
# Needed for build-time stub docstring extraction.
# GH-50575: no libcst wheels for Python 3.15 yet and the source build
# requires a PyO3 version that doesn't support 3.15. Stub docstring
# extraction is currently disabled anyway (GH-49831), so skip it there.
"libcst>=1.8.6; python_version < '3.15'",
"numpy>=1.25",
"setuptools_scm[toml]>=8",
]
Expand All @@ -42,6 +45,7 @@ classifiers = [
'Programming Language :: Python :: 3.12',
'Programming Language :: Python :: 3.13',
'Programming Language :: Python :: 3.14',
'Programming Language :: Python :: 3.15',
'Programming Language :: Python :: Free Threading :: 2 - Beta',
]
maintainers = [
Expand Down
2 changes: 1 addition & 1 deletion python/requirements-build.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
build
cython>=3.1
libcst>=1.8.6
libcst>=1.8.6; python_version < "3.15"
numpy>=1.25
scikit-build-core>=1.0
setuptools_scm>=8
7 changes: 5 additions & 2 deletions python/requirements-wheel-build.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
build
cython>=3.1
# Needed for build-time stub docstring extraction
libcst>=1.8.6
# Needed for build-time stub docstring extraction.
# GH-50575: no libcst wheels for Python 3.15 yet and the source build requires
# a PyO3 version that doesn't support 3.15. Stub docstring extraction is
# currently disabled anyway (GH-49831), so skip it there.
libcst>=1.8.6; python_version < "3.15"
numpy>=2.0.0
scikit-build-core>=1.0
setuptools_scm
Expand Down
3 changes: 2 additions & 1 deletion python/requirements-wheel-test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ numpy~=1.26.0; python_version == "3.12"
numpy~=2.1.0; python_version == "3.13"
numpy~=2.3.3; python_version >= "3.14"

pandas
# TODO: To be removed once pandas provides wheels for Python 3.15
pandas; python_version < "3.15"
Loading