diff --git a/ci/docker/python-wheel-manylinux.dockerfile b/ci/docker/python-wheel-manylinux.dockerfile index d22a70a2d77..452809ad09c 100644 --- a/ci/docker/python-wheel-manylinux.dockerfile +++ b/ci/docker/python-wheel-manylinux.dockerfile @@ -114,5 +114,10 @@ RUN PYTHON_ROOT=$(find /opt/python -name cp${PYTHON_VERSION/./}-${PYTHON_ABI_TAG SHELL ["/bin/bash", "-i", "-c"] ENTRYPOINT ["/bin/bash", "-i", "-c"] +# Remove once there are released Cython wheels for 3.13 free-threaded available +RUN if [ "${python_abi_tag}" = "cp313t" ]; then \ + pip install cython --pre --extra-index-url "https://pypi.anaconda.org/scientific-python-nightly-wheels/simple" --prefer-binary ; \ + fi + COPY python/requirements-wheel-build.txt /arrow/python/ RUN pip install -r /arrow/python/requirements-wheel-build.txt diff --git a/ci/scripts/python_wheel_macos_build.sh b/ci/scripts/python_wheel_macos_build.sh index d2c392e6b9d..91925e7abe8 100755 --- a/ci/scripts/python_wheel_macos_build.sh +++ b/ci/scripts/python_wheel_macos_build.sh @@ -49,8 +49,15 @@ fi echo "=== (${PYTHON_VERSION}) Install Python build dependencies ===" export PIP_SITE_PACKAGES=$(python -c 'import site; print(site.getsitepackages()[0])') +# Remove once there are released Cython wheels for 3.13 free-threaded available +FREE_THREADED_BUILD="$(python -c"import sysconfig; print(bool(sysconfig.get_config_var('Py_GIL_DISABLED')))")" +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 \ - --upgrade \ --only-binary=:all: \ --target $PIP_SITE_PACKAGES \ -r ${source_dir}/python/requirements-wheel-build.txt diff --git a/python/requirements-wheel-build.txt b/python/requirements-wheel-build.txt index 2d448004768..faa078d3d7f 100644 --- a/python/requirements-wheel-build.txt +++ b/python/requirements-wheel-build.txt @@ -1,8 +1,3 @@ -# Remove pre and extra index url once there's NumPy and Cython wheels for 3.13 -# on PyPI ---pre ---extra-index-url "https://pypi.anaconda.org/scientific-python-nightly-wheels/simple" - cython>=0.29.31 oldest-supported-numpy>=0.14; python_version<'3.9' numpy>=2.0.0; python_version>='3.9' diff --git a/python/requirements-wheel-test.txt b/python/requirements-wheel-test.txt index d129ac753ab..c051efb0aaa 100644 --- a/python/requirements-wheel-test.txt +++ b/python/requirements-wheel-test.txt @@ -1,9 +1,3 @@ -# Remove pre and extra index url once there's NumPy and Cython wheels for 3.13 -# on PyPI ---pre ---prefer-binary ---extra-index-url "https://pypi.anaconda.org/scientific-python-nightly-wheels/simple" - cffi cython hypothesis