Skip to content

feature: add CPython 3.14 #1772

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
May 10, 2025
Merged
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
5 changes: 5 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ jobs:
("aarch64", "ubuntu-24.04-arm", ("manylinux2014", "manylinux_2_28", "manylinux_2_34", "musllinux_1_2")),
("i686", "ubuntu-24.04", ("manylinux2014", "musllinux_1_2")),
("armv7l", "ubuntu-24.04-arm", ("manylinux_2_31", "musllinux_1_2")),
("s390x", "ubuntu-24.04", ("musllinux_1_2",)),
]
expanded = [{"policy": policy, "platform": platform, "runner": runner} for platform, runner, policies in reduced for policy in policies]
print(json.dumps(expanded, indent=2))
Expand Down Expand Up @@ -82,6 +83,10 @@ jobs:
with:
fetch-depth: 50

- name: Set up QEMU
if: matrix.platform == 's390x'
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

Expand Down
7 changes: 3 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ jobs:
env: POLICY="manylinux_2_34" PLATFORM="s390x"
- arch: ppc64le
env: POLICY="manylinux_2_34" PLATFORM="ppc64le"
- arch: s390x
env: POLICY="musllinux_1_2" PLATFORM="s390x"
- arch: ppc64le
env: POLICY="musllinux_1_2" PLATFORM="ppc64le"

Expand All @@ -53,10 +51,11 @@ install:
- docker buildx inspect --bootstrap --builder builder-manylinux 2>&1 | tee /dev/null

script: |
BUILD_STATUS=success
(while true; do echo "travis_wait"; docker stats --no-stream; free; df -h; sleep 30; done) &
WAIT_PID=$!
COMMIT_SHA=${TRAVIS_COMMIT} ./build.sh || BUILD_STATUS=failed
disown
BUILD_STATUS=success
COMMIT_SHA=${TRAVIS_COMMIT} ./build.sh 2>&1 || BUILD_STATUS=failed
kill -9 ${WAIT_PID}
if [ "${BUILD_STATUS}" != "success" ]; then
exit 1
Expand Down
7 changes: 7 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,11 @@ RUN manylinux-entrypoint /build_scripts/build-cpython.sh [email protected] https
FROM build_cpython AS build_cpython313_nogil
RUN manylinux-entrypoint /build_scripts/build-cpython.sh [email protected] https://accounts.google.com 3.13.3 nogil

FROM build_cpython AS build_cpython314
RUN manylinux-entrypoint /build_scripts/build-cpython.sh [email protected] https://github.com/login/oauth 3.14.0b1

FROM build_cpython AS build_cpython314_nogil
RUN manylinux-entrypoint /build_scripts/build-cpython.sh [email protected] https://github.com/login/oauth 3.14.0b1 nogil

FROM runtime_base
COPY --from=build_tcl_tk /manylinux-rootfs /
Expand All @@ -157,6 +162,8 @@ RUN --mount=type=bind,target=/build_cpython38,from=build_cpython38 \
--mount=type=bind,target=/build_cpython312,from=build_cpython312 \
--mount=type=bind,target=/build_cpython313,from=build_cpython313 \
--mount=type=bind,target=/build_cpython313_nogil,from=build_cpython313_nogil \
--mount=type=bind,target=/build_cpython314,from=build_cpython314 \
--mount=type=bind,target=/build_cpython314_nogil,from=build_cpython314_nogil \
mkdir -p /opt/_internal && \
cp -rf /build_cpython*/opt/_internal/* /opt/_internal/ && \
manylinux-entrypoint /opt/_internal/build_scripts/finalize.sh \
Expand Down
20 changes: 20 additions & 0 deletions docker/build_scripts/requirements3.14.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# This file was autogenerated by uv via the following command:
# nox -s update_python_dependencies
build==1.2.2.post1 \
--hash=sha256:1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5 \
--hash=sha256:b36993e92ca9375a219c99e606a122ff365a760a2d4bba0caa09bd5278b608b7
# via -r requirements.in
packaging==25.0 \
--hash=sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 \
--hash=sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f
# via
# -r requirements.in
# build
pip==25.1.1 ; implementation_name != 'graalpy' \
--hash=sha256:2913a38a2abf4ea6b64ab507bd9e967f3b53dc1ede74b01b0931e1ce548751af \
--hash=sha256:3de45d411d308d5054c2168185d8da7f9a2cd753dbac8acbfa88a8909ecd9077
# via -r requirements.in
pyproject-hooks==1.2.0 \
--hash=sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8 \
--hash=sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913
# via build
2 changes: 1 addition & 1 deletion noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def update_python_dependencies(session):
# regenerate the constraints files
env["UV_CUSTOM_COMPILE_COMMAND"] = f"nox -s {session.name}"

for python_minor in range(8, 14):
for python_minor in range(8, 15):
python_version = f"3.{python_minor}"
session.run(
"uv",
Expand Down
16 changes: 8 additions & 8 deletions tests/run_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@ set -exuo pipefail
MY_DIR=$(dirname "${BASH_SOURCE[0]}")

if [ "${AUDITWHEEL_POLICY:0:10}" == "musllinux_" ]; then
EXPECTED_PYTHON_COUNT=7
EXPECTED_PYTHON_COUNT_ALL=7
EXPECTED_PYTHON_COUNT=9
EXPECTED_PYTHON_COUNT_ALL=9
else
if [ "${AUDITWHEEL_ARCH}" == "x86_64" ] || [ "${AUDITWHEEL_ARCH}" == "aarch64" ]; then
EXPECTED_PYTHON_COUNT=9
EXPECTED_PYTHON_COUNT_ALL=12
EXPECTED_PYTHON_COUNT=11
EXPECTED_PYTHON_COUNT_ALL=14
elif [ "${AUDITWHEEL_ARCH}" == "i686" ]; then
EXPECTED_PYTHON_COUNT=9
EXPECTED_PYTHON_COUNT_ALL=11
EXPECTED_PYTHON_COUNT=11
EXPECTED_PYTHON_COUNT_ALL=13
else
EXPECTED_PYTHON_COUNT=7
EXPECTED_PYTHON_COUNT_ALL=7
EXPECTED_PYTHON_COUNT=9
EXPECTED_PYTHON_COUNT_ALL=9
fi
fi

Expand Down