Skip to content
Open
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
6 changes: 3 additions & 3 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,9 @@ NUMBA=latest
NUMBA_CUDA=latest
NUMPY=latest
PANDAS=latest
PYTHON=3.10
PYTHON_IMAGE_TAG=3.10
PYTHON_ABI_TAG=cp310
PYTHON=3.11
PYTHON_IMAGE_TAG=3.11
PYTHON_ABI_TAG=cp311
R=4.5
SPARK=master

Expand Down
42 changes: 21 additions & 21 deletions .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,36 +66,36 @@ jobs:
matrix:
name:
- conda-python-docs
- conda-python-3.11-nopandas
- conda-python-3.10-pandas-1.3.4
- conda-python-3.13-pandas-latest
- conda-python-3.12-no-numpy
- conda-python-3.12-nopandas
- conda-python-3.11-pandas-1.5.2
- conda-python-3.14-pandas-latest
- conda-python-3.13-no-numpy
include:
- name: conda-python-docs
image: conda-python-docs
title: AMD64 Conda Python 3.11 Sphinx & Numpydoc
python: "3.11"
- name: conda-python-3.11-nopandas
title: AMD64 Conda Python 3.12 Sphinx & Numpydoc
python: "3.12"
- name: conda-python-3.12-nopandas
image: conda-python
title: AMD64 Conda Python 3.11 Without Pandas
python: "3.11"
- name: conda-python-3.10-pandas-1.3.4
title: AMD64 Conda Python 3.12 Without Pandas
python: "3.12"
- name: conda-python-3.11-pandas-1.5.2
image: conda-python-pandas
title: AMD64 Conda Python 3.10 Pandas 1.3.4
python: "3.10"
pandas: "1.3.4"
numpy: "1.21.2"
- name: conda-python-3.13-pandas-latest
title: AMD64 Conda Python 3.11 Pandas 1.5.2
python: "3.11"
pandas: "1.5.2"
numpy: "1.23.2"
- name: conda-python-3.14-pandas-latest
image: conda-python-pandas
title: AMD64 Conda Python 3.13 Pandas latest
python: "3.13"
title: AMD64 Conda Python 3.14 Pandas latest
python: "3.14"
pandas: latest
- name: conda-python-3.12-no-numpy
- name: conda-python-3.13-no-numpy
image: conda-python-no-numpy
title: AMD64 Conda Python 3.12 without NumPy
python: "3.12"
title: AMD64 Conda Python 3.13 without NumPy
python: "3.13"
env:
PYTHON: ${{ matrix.python || 3.10 }}
PYTHON: ${{ matrix.python || 3.11 }}
UBUNTU: ${{ matrix.ubuntu || 22.04 }}
PANDAS: ${{ matrix.pandas || 'latest' }}
NUMPY: ${{ matrix.numpy || 'latest' }}
Expand Down
4 changes: 1 addition & 3 deletions ci/docker/conda-cpp.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,7 @@ FROM --platform=linux/${arch} ${repo}:${arch_short}-conda
COPY ci/scripts/install_minio.sh /arrow/ci/scripts
RUN /arrow/ci/scripts/install_minio.sh latest /opt/conda

# Unless overridden use Python 3.10
# Google GCS fails building with Python 3.11 at the moment.
ARG python=3.10
ARG python=3.11

# install the required conda packages into the test environment
# use `mold` to work around issues with GNU `ld` (GH-47015).
Expand Down
4 changes: 2 additions & 2 deletions ci/docker/conda-python-cpython-debug.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@

ARG repo
ARG arch
ARG python=3.10
ARG python=3.11
FROM ${repo}:${arch}-conda-python-${python}

# (Docker oddity: ARG needs to be repeated after FROM)
ARG python=3.10
ARG python=3.11
RUN mamba install -c conda-forge/label/python_debug cpython "python=${python}[build=*_debug_*]" && \
mamba clean --all --yes
# Quick check that we do have a debug mode CPython
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/conda-python-dask.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
ARG repo
ARG arch
ARG arch_short
ARG python=3.10
ARG python=3.11
FROM --platform=linux/${arch} ${repo}:${arch_short}-conda-python-${python}

ARG dask=latest
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/conda-python-hdfs.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
ARG repo
ARG arch
ARG arch_short
ARG python=3.10
ARG python=3.11
FROM --platform=linux/${arch} ${repo}:${arch_short}-conda-python-${python}

ARG jdk=11
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/conda-python-jpype.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
ARG repo
ARG arch
ARG arch_short
ARG python=3.10
ARG python=3.11
FROM --platform=linux/${arch} ${repo}:${arch_short}-conda-python-${python}

ARG jdk=11
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/conda-python-pandas.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
ARG repo
ARG arch
ARG arch_short
ARG python=3.10
ARG python=3.11
FROM --platform=linux/${arch} ${repo}:${arch_short}-conda-python-${python}

ARG pandas=latest
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/conda-python-spark.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
ARG repo
ARG arch
ARG arch_short
ARG python=3.10
ARG python=3.11
FROM --platform=linux/${arch} ${repo}:${arch_short}-conda-python-${python}

ARG jdk=11
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/conda-python.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ ARG arch_short
FROM --platform=linux/${arch} ${repo}:${arch_short}-conda-cpp

# install python specific packages
ARG python=3.10
ARG python=3.11
COPY ci/conda_env_python.txt \
/arrow/ci/
# If the Python version being tested is the same as the Python used by the system gdb,
Expand Down
4 changes: 2 additions & 2 deletions ci/docker/cpp-jni.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ RUN dnf module enable -y llvm-toolset && \

# A system Python is required for Ninja and vcpkg in this Dockerfile.
# On manylinux_2_28 base images, no system Python is installed.
# We therefore override the PATH with Python 3.10 in /opt/python
# We therefore override the PATH with Python 3.11 in /opt/python
# so that we have a consistent Python version across base images.
ENV CPYTHON_VERSION=cp310
ENV CPYTHON_VERSION=cp311
ENV PATH=/opt/python/${CPYTHON_VERSION}-${CPYTHON_VERSION}/bin:${PATH}

# Install CMake
Expand Down
8 changes: 4 additions & 4 deletions ci/docker/python-wheel-manylinux.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ RUN dnf install -y git flex curl autoconf zip perl-IPC-Cmd perl-Time-Piece wget

# A system Python is required for Ninja and vcpkg in this Dockerfile.
# On manylinux_2_28 base images, no system Python is installed.
# We therefore override the PATH with Python 3.10 in /opt/python
# We therefore override the PATH with Python 3.11 in /opt/python
# so that we have a consistent Python version across base images.
ENV CPYTHON_VERSION=cp310
ENV CPYTHON_VERSION=cp311
ENV PATH=/opt/python/${CPYTHON_VERSION}-${CPYTHON_VERSION}/bin:${PATH}

# Install CMake
Expand Down Expand Up @@ -109,8 +109,8 @@ RUN --mount=type=secret,id=github_repository_owner \
RUN pipx upgrade auditwheel>=6.4.0

# Configure Python for applications running in the bash shell of this Dockerfile
ARG python=3.10
ARG python_abi_tag=cp310
ARG python=3.11
ARG python_abi_tag=cp311
ENV PYTHON_VERSION=${python}
ENV PYTHON_ABI_TAG=${python_abi_tag}
RUN PYTHON_ROOT=$(find /opt/python -name cp${PYTHON_VERSION/./}-${PYTHON_ABI_TAG}) && \
Expand Down
13 changes: 1 addition & 12 deletions ci/docker/python-wheel-musllinux-test.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -36,18 +36,7 @@ RUN cp /usr/share/zoneinfo/Etc/UTC /etc/localtime
# pandas doesn't provide wheel for aarch64 yet, so cache the compiled
# test dependencies in a docker image
COPY python/requirements-wheel-test.txt /arrow/python/
# Pandas 2.0.3 is the last version to support numpy 1.21.x which is
# the lowest version we support for Python 3.10.
# Pandas 2.0.3 doesn't have wheels for Python 3.10 so we need to build from source,
# which requires setuptools < 80.
# Drop when bumping numpy from 1.21.x (GH-48473) or when dropping Python 3.10.
RUN if [ "${python_image_tag}" = "3.10" ]; then \
echo 'setuptools<80' > /tmp/setuptools-constraint.txt; \
PIP_CONSTRAINT=/tmp/setuptools-constraint.txt \
pip install -r /arrow/python/requirements-wheel-test.txt; \
else \
pip install -r /arrow/python/requirements-wheel-test.txt; \
fi
RUN pip install -r /arrow/python/requirements-wheel-test.txt

# Install the GCS testbench with the system Python
COPY ci/scripts/install_gcs_testbench.sh /arrow/ci/scripts/
Expand Down
8 changes: 4 additions & 4 deletions ci/docker/python-wheel-musllinux.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,10 @@ RUN apk add --no-cache mold

# A system Python is required for ninja and vcpkg in this Dockerfile.
# On musllinux_1_2 a system python is installed (3.12) but pip is not
# We therefore override the PATH with Python 3.10 in /opt/python
# We therefore override the PATH with Python 3.11 in /opt/python
# so that we have a consistent Python version across base images
# as well as pip.
ENV CPYTHON_VERSION=cp310
ENV CPYTHON_VERSION=cp311
ENV PATH=/opt/python/${CPYTHON_VERSION}-${CPYTHON_VERSION}/bin:${PATH}

# Install vcpkg
Expand Down Expand Up @@ -110,8 +110,8 @@ RUN --mount=type=secret,id=github_repository_owner \
RUN pipx upgrade auditwheel

# Configure Python for applications running in the bash shell of this Dockerfile
ARG python=3.10
ARG python_abi_tag=cp310
ARG python=3.11
ARG python_abi_tag=cp311
ENV PYTHON_VERSION=${python}
ENV PYTHON_ABI_TAG=${python_abi_tag}
RUN PYTHON_ROOT=$(find /opt/python -name cp${PYTHON_VERSION/./}-${PYTHON_ABI_TAG}) && \
Expand Down
11 changes: 5 additions & 6 deletions ci/docker/python-wheel-windows-test-vs2022.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,12 @@ FROM ${base}

# hadolint shell=cmd.exe

# Define the full version number otherwise choco falls back to patch number 0 (3.10 => 3.10.0)
ARG python=3.10
RUN (if "%python%"=="3.10" setx PYTHON_VERSION "3.10.11" && setx PYTHON_CMD "py -3.10") & \
(if "%python%"=="3.11" setx PYTHON_VERSION "3.11.9" && setx PYTHON_CMD "py -3.11") & \
# Define the full version number otherwise choco falls back to patch number 0 (3.11 => 3.11.0)
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.9" && setx PYTHON_CMD "py -3.13") & \
(if "%python%"=="3.14" setx PYTHON_VERSION "3.14.0" && setx PYTHON_CMD "py -3.14")
(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")

# hadolint ignore=DL3059
RUN choco install -r -y --pre --no-progress --force python --version=%PYTHON_VERSION%
Expand Down
3 changes: 1 addition & 2 deletions ci/docker/python-wheel-windows-vs2022.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@
ARG base
FROM ${base}

# Define the full version number otherwise choco falls back to patch number 0 (3.10 => 3.10.0)
ARG python=3.10
ARG python=3.11

ARG python_variant_suffix=""
ENV PYTHON_VERSION=${python}${python_variant_suffix}
Expand Down
9 changes: 4 additions & 5 deletions ci/scripts/install_python.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,11 @@ platforms=([windows]=Windows
[linux]=Linux)

declare -A versions
versions=([3.10]=3.10.11
[3.11]=3.11.9
versions=([3.11]=3.11.9
[3.12]=3.12.10
[3.13]=3.13.9
[3.14]=3.14.0
[3.14t]=3.14.0)
[3.13]=3.13.14
[3.14]=3.14.6
[3.14t]=3.14.6)

if [ "$#" -ne 2 ]; then
echo "Usage: $0 <platform> <version>"
Expand Down
8 changes: 4 additions & 4 deletions ci/scripts/r_install_system_dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,10 @@ if [ "$ARROW_S3" == "ON" ] || [ "$ARROW_GCS" == "ON" ] || [ "$ARROW_R_DEV" == "T
case "$PACKAGE_MANAGER" in
zypper)
# python3 is Python 3.6 on OpenSUSE 15.3.
# PyArrow supports Python 3.10 or later.
$PACKAGE_MANAGER install -y python310-pip
ln -s /usr/bin/python3.10 /usr/local/bin/python
ln -s /usr/bin/pip3.10 /usr/local/bin/pip
# PyArrow supports Python 3.11 or later.
$PACKAGE_MANAGER install -y python311-pip
ln -s /usr/bin/python3.11 /usr/local/bin/python
ln -s /usr/bin/pip3.11 /usr/local/bin/pip
;;
apk)
$PACKAGE_MANAGER add py3-pip
Expand Down
2 changes: 1 addition & 1 deletion compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -939,7 +939,7 @@ services:
# docker compose run --rm conda-python
# Parameters:
# ARCH: amd64, arm/v7
# PYTHON: 3.10, 3.11, 3.12, 3.13
# PYTHON: 3.11, 3.12, 3.13, 3.14
image: ${REPO}:${ARCH_SHORT}-conda-python-${PYTHON}
build:
context: .
Expand Down
6 changes: 3 additions & 3 deletions dev/archery/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
import sys
from setuptools import setup, find_packages

if sys.version_info < (3, 10):
sys.exit('Python < 3.10 is not supported')
if sys.version_info < (3, 11):
sys.exit('Python < 3.11 is not supported')

# For pathlib.Path compatibility
jinja_req = 'jinja2>=2.11'
Expand All @@ -49,7 +49,7 @@
maintainer_email='dev@arrow.apache.org',
packages=find_packages(),
include_package_data=True,
python_requires='>=3.10',
python_requires='>=3.11',
install_requires=['click>=7'],
tests_require=['pytest', 'responses'],
extras_require=extras,
Expand Down
6 changes: 3 additions & 3 deletions dev/release/verify-release-candidate-wheels.bat
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,6 @@ python dev\release\download_rc_binaries.py %ARROW_VERSION% %RC_NUMBER% ^
set ARROW_TEST_DATA=%cd%\testing\data
set PARQUET_TEST_DATA=%cd%\cpp\submodules\parquet-testing\data

CALL :verify_wheel 3.10
if errorlevel 1 GOTO error

CALL :verify_wheel 3.11
if errorlevel 1 GOTO error

Expand All @@ -58,6 +55,9 @@ if errorlevel 1 GOTO error
CALL :verify_wheel 3.13
if errorlevel 1 GOTO error

CALL :verify_wheel 3.14
if errorlevel 1 GOTO error

:done
cd %_CURRENT_DIR%

Expand Down
2 changes: 1 addition & 1 deletion dev/release/verify-release-candidate.bat
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ if "%VERSION%"=="" (

set ARROW_TEST_DATA=!ARROW_SOURCE!\testing\data
set PARQUET_TEST_DATA=!ARROW_SOURCE!\cpp\submodules\parquet-testing\data
set PYTHON=3.10
set PYTHON=3.11

@rem Using call with conda.bat seems necessary to avoid terminating the batch
@rem script execution
Expand Down
6 changes: 3 additions & 3 deletions dev/release/verify-release-candidate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -859,7 +859,7 @@ test_linux_wheels() {
local arch="x86_64"
fi

local python_versions="${TEST_PYTHON_VERSIONS:-3.10 3.11 3.12 3.13 3.14}"
local python_versions="${TEST_PYTHON_VERSIONS:-3.11 3.12 3.13 3.14}"
local platform_tags="${TEST_WHEEL_PLATFORM_TAGS:-manylinux_2_28_${arch}}"

if [ "${SOURCE_KIND}" != "local" ]; then
Expand Down Expand Up @@ -898,11 +898,11 @@ test_macos_wheels() {

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

Expand Down
2 changes: 1 addition & 1 deletion dev/tasks/python-sdist/github.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
- name: Test sdist
run: archery docker run ubuntu-python-sdist-test
env:
UBUNTU: 22.04
UBUNTU: 24.04
PYARROW_VERSION: {{ arrow.no_rc_version }}

- uses: actions/upload-artifact@v6
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 @@ -107,7 +107,7 @@ jobs:
- name: Test wheel on Ubuntu 22.04
shell: bash
if: |
'{{ python_version }}' == '3.10' && '{{ linux_wheel_kind }}' == 'manylinux'
'{{ python_version }}' == '3.11' && '{{ linux_wheel_kind }}' == 'manylinux'
env:
UBUNTU: "22.04"
run: |
Expand Down
Loading
Loading