Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 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 @@ -70,9 +70,9 @@ NUMBA=latest
NUMBA_CUDA=latest
NUMPY=latest
PANDAS=latest
PYTHON=3.9
PYTHON_IMAGE_TAG=3.9
PYTHON_ABI_TAG=cp39
PYTHON=3.10
PYTHON_IMAGE_TAG=3.10
PYTHON_ABI_TAG=cp310
R=4.5
SPARK=master
TURBODBC=latest
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/archery.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5.6.0
with:
python-version: '3.9'
python-version: '3.10'
- name: Install pygit2 binary wheel
run: pip install pygit2 --only-binary pygit2
- name: Install Archery, Crossbow- and Test Dependencies
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,7 @@ jobs:
uses: actions/setup-python@v5.6.0
id: python-install
with:
python-version: 3.9
python-version: '3.10'
- name: Install Google Cloud Storage Testbench
shell: msys2 {0}
env:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/docs_light.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ env:
jobs:

light:
name: AMD64 Conda Python 3.9 Sphinx Documentation
name: AMD64 Conda Python 3.10 Sphinx Documentation
runs-on: ubuntu-latest
if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
timeout-minutes: 60
env:
PYTHON: "3.9"
PYTHON: "3.10"
steps:
- name: Checkout Arrow
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
Expand Down
46 changes: 23 additions & 23 deletions .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,41 +63,41 @@ jobs:
matrix:
name:
- conda-python-docs
- conda-python-3.10-nopandas
- conda-python-3.9-pandas-1.1.3
- conda-python-3.11-pandas-latest
- conda-python-3.11-no-numpy
- conda-python-3.11-nopandas
- conda-python-3.10-pandas-1.3.4
- conda-python-3.12-pandas-latest
- conda-python-3.12-no-numpy
include:
- name: conda-python-docs
cache: conda-python-3.10
image: conda-python-docs
title: AMD64 Conda Python 3.10 Sphinx & Numpydoc
python: "3.10"
- name: conda-python-3.10-nopandas
cache: conda-python-3.10
- name: conda-python-3.11-nopandas
cache: conda-python-3.11
image: conda-python
title: AMD64 Conda Python 3.10 Without Pandas
python: "3.10"
- name: conda-python-3.9-pandas-1.1.3
cache: conda-python-3.9
title: AMD64 Conda Python 3.11 Without Pandas
python: "3.11"
- name: conda-python-3.10-pandas-1.3.4
cache: conda-python-3.10
image: conda-python-pandas
title: AMD64 Conda Python 3.9 Pandas 1.1.3
python: 3.9
pandas: "1.1.3"
numpy: 1.19.5
- name: conda-python-3.11-pandas-latest
cache: conda-python-3.11
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.12-pandas-latest
cache: conda-python-3.12
image: conda-python-pandas
title: AMD64 Conda Python 3.11 Pandas latest
python: "3.11"
title: AMD64 Conda Python 3.12 Pandas latest
python: "3.12"
pandas: latest
- name: conda-python-3.11-no-numpy
cache: conda-python-3.11
- name: conda-python-3.12-no-numpy
cache: conda-python-3.12
image: conda-python-no-numpy
title: AMD64 Conda Python 3.11 without NumPy
python: "3.11"
title: AMD64 Conda Python 3.12 without NumPy
python: "3.12"
env:
PYTHON: ${{ matrix.python || 3.9 }}
PYTHON: ${{ matrix.python || 3.10 }}
UBUNTU: ${{ matrix.ubuntu || 22.04 }}
PANDAS: ${{ matrix.pandas || 'latest' }}
NUMPY: ${{ matrix.numpy || 'latest' }}
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.9
ARG python=3.10
FROM ${repo}:${arch}-conda-python-${python}

# (Docker oddity: ARG needs to be repeated after FROM)
ARG python=3.9
ARG python=3.10
RUN mamba install -y "conda-forge/label/python_debug::python=${python}[build=*_cpython]" && \
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 @@ -17,7 +17,7 @@

ARG repo
ARG arch=amd64
ARG python=3.9
ARG python=3.10
FROM ${repo}:${arch}-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 @@ -17,7 +17,7 @@

ARG repo
ARG arch=amd64
ARG python=3.9
ARG python=3.10
FROM ${repo}:${arch}-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 @@ -17,7 +17,7 @@

ARG repo
ARG arch=amd64
ARG python=3.9
ARG python=3.10
FROM ${repo}:${arch}-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 @@ -17,7 +17,7 @@

ARG repo
ARG arch=amd64
ARG python=3.9
ARG python=3.10
FROM ${repo}:${arch}-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 @@ -17,7 +17,7 @@

ARG repo
ARG arch=amd64
ARG python=3.9
ARG python=3.10
FROM ${repo}:${arch}-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 @@ -20,7 +20,7 @@ ARG arch
FROM ${repo}:${arch}-conda-cpp

# install python specific packages
ARG python=3.9
ARG python=3.10
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
15 changes: 11 additions & 4 deletions ci/docker/python-sdist.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
# specific language governing permissions and limitations
# under the License.

FROM amd64/ubuntu:20.04
FROM amd64/ubuntu:24.04

SHELL ["/bin/bash", "-o", "pipefail", "-c"]

Expand All @@ -25,12 +25,19 @@ RUN echo "debconf debconf/frontend select Noninteractive" | \
RUN apt-get update -y -q && \
apt-get install -y -q --no-install-recommends \
git \
python3-pip && \
python3-pip \
python3-venv && \
apt-get clean && \
rm -rf /var/lib/apt/lists*

COPY python/requirements-build.txt \
/arrow/python/requirements-build.txt
RUN pip3 install --requirement /arrow/python/requirements-build.txt

ENV PYTHON=/usr/bin/python3
ENV ARROW_PYTHON_VENV /arrow-dev

RUN python3 -m venv ${ARROW_PYTHON_VENV} && \
. ${ARROW_PYTHON_VENV}/bin/activate && \
pip install \
-r arrow/python/requirements-build.txt

ENV PYTHON=${ARROW_PYTHON_VENV}/bin/python
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 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.9 in /opt/python
# We therefore override the PATH with Python 3.10 in /opt/python
# so that we have a consistent Python version across base images.
ENV CPYTHON_VERSION=cp39
ENV CPYTHON_VERSION=cp310
ENV PATH=/opt/python/${CPYTHON_VERSION}-${CPYTHON_VERSION}/bin:${PATH}

# Install CMake
Expand Down Expand Up @@ -103,8 +103,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.9
ARG python_abi_tag=cp39
ARG python=3.10
ARG python_abi_tag=cp310
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
8 changes: 4 additions & 4 deletions ci/docker/python-wheel-musllinux.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ RUN apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/c

# 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.9 in /opt/python
# We therefore override the PATH with Python 3.10 in /opt/python
# so that we have a consistent Python version across base images
# as well as pip.
ENV CPYTHON_VERSION=cp39
ENV CPYTHON_VERSION=cp310
ENV PATH=/opt/python/${CPYTHON_VERSION}-${CPYTHON_VERSION}/bin:${PATH}

# Install vcpkg
Expand Down Expand Up @@ -100,8 +100,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.9
ARG python_abi_tag=cp39
ARG python=3.10
ARG python_abi_tag=cp310
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
7 changes: 3 additions & 4 deletions ci/docker/python-wheel-windows-test-vs2022.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,9 @@ FROM ${base}

# hadolint shell=cmd.exe

# Define the full version number otherwise choco falls back to patch number 0 (3.9 => 3.9.0)
ARG python=3.9
RUN (if "%python%"=="3.9" setx PYTHON_VERSION "3.9.13" && setx PYTHON_CMD "C:\Python39\python") & \
(if "%python%"=="3.10" setx PYTHON_VERSION "3.10.11" && setx PYTHON_CMD "py -3.10") & \
# 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") & \
(if "%python%"=="3.12" setx PYTHON_VERSION "3.12.8" && setx PYTHON_CMD "py -3.12") & \
(if "%python%"=="3.13" setx PYTHON_VERSION "3.13.1" && setx PYTHON_CMD "py -3.13")
Expand Down
8 changes: 3 additions & 5 deletions ci/docker/python-wheel-windows-vs2022.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,9 @@
ARG base
FROM ${base}

# Define the full version number otherwise choco falls back to patch number 0 (3.9 => 3.9.0)
# Note that Python 3.9 does not come with the "py" launcher
ARG python=3.9
RUN (if "%python%"=="3.9" setx PYTHON_VERSION "3.9.13" && setx PYTHON_CMD "C:\Python39\python") & \
(if "%python%"=="3.10" setx PYTHON_VERSION "3.10.11" && setx PYTHON_CMD "py -3.10") & \
# 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") & \
(if "%python%"=="3.12" setx PYTHON_VERSION "3.12.8" && setx PYTHON_CMD "py -3.12") & \
(if "%python%"=="3.13" setx PYTHON_VERSION "3.13.1" && setx PYTHON_CMD "py -3.13")
Expand Down
10 changes: 2 additions & 8 deletions ci/scripts/install_python.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ platforms=([windows]=Windows
[linux]=Linux)

declare -A versions
versions=([3.9]=3.9.13
[3.10]=3.10.11
versions=([3.10]=3.10.11
[3.11]=3.11.9
[3.12]=3.12.9
[3.13]=3.13.2
Expand All @@ -47,12 +46,7 @@ full_version=${versions[$2]}
if [ "$platform" = "macOS" ]; then
echo "Downloading Python installer..."

if [ "$(uname -m)" = "x86_64" ] && [ "$version" = "3.9" ];
then
fname="python-${full_version}-macosx10.9.pkg"
else
fname="python-${full_version}-macos11.pkg"
fi
fname="python-${full_version}-macos11.pkg"
wget "https://www.python.org/ftp/python/${full_version}/${fname}"

echo "Installing Python..."
Expand Down
3 changes: 2 additions & 1 deletion ci/scripts/python_sdist_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,5 @@ fi

${PYTHON:-python} -m pip install "${sdist}"

pytest -r s "${PYTEST_ARGS:-}" --pyargs pyarrow
# shellcheck disable=SC2086
pytest -r s ${PYTEST_ARGS:-} --pyargs pyarrow
2 changes: 0 additions & 2 deletions ci/scripts/python_wheel_macos_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,6 @@ FREE_THREADED_BUILD="$(python -c"import sysconfig; print(bool(sysconfig.get_conf
if [[ $FREE_THREADED_BUILD == "True" ]]; then
pip install cython --pre --extra-index-url "https://pypi.anaconda.org/scientific-python-nightly-wheels/simple" --prefer-binary
fi
# With Python 3.9, the `--upgrade` flag is required to force full replacement of setuptools' distutils patching
pip install --upgrade --target $PIP_SITE_PACKAGES "setuptools>=58"

pip install \
--only-binary=:all: \
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 @@ -54,10 +54,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.9 or later.
$PACKAGE_MANAGER install -y python39-pip
ln -s /usr/bin/python3.9 /usr/local/bin/python
ln -s /usr/bin/pip3.9 /usr/local/bin/pip
# 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
;;
*)
$PACKAGE_MANAGER install -y python3-pip
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, 9):
sys.exit('Python < 3.9 is not supported')
if sys.version_info < (3, 10):
sys.exit('Python < 3.10 is not supported')

# For pathlib.Path compatibility
jinja_req = 'jinja2>=2.11'
Expand Down Expand Up @@ -51,7 +51,7 @@
maintainer_email='dev@arrow.apache.org',
packages=find_packages(),
include_package_data=True,
python_requires='>=3.9',
python_requires='>=3.10',
install_requires=['click>=7'],
tests_require=['pytest', 'responses'],
extras_require=extras,
Expand Down
4 changes: 0 additions & 4 deletions dev/release/verify-release-candidate-wheels.bat
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +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.9
if errorlevel 1 GOTO error

CALL :verify_wheel 3.10
if errorlevel 1 GOTO error

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.9
set PYTHON=3.10

@rem Using call with conda.bat seems necessary to avoid terminating the batch
@rem script execution
Expand Down
Loading
Loading