python-version: ${{ env.python-version }}
- name: Build wheels
- uses: pypa/cibuildwheel@v2.23
+ uses: pypa/cibuildwheel@v3.1.3
- name: Audit ABI3 compliance
# This may be moved into cibuildwheel itself in the future. See
# https://github.com/pypa/cibuildwheel/issues/1342
- run: "pip install abi3audit && abi3audit --verbose --summary ./wheelhouse/*.whl"
+ run: python -m pip install abi3audit && abi3audit --verbose --summary ./wheelhouse/*abi3*.whl
- uses: actions/upload-artifact@v4
with:
tox_env: py312-full
- python: '3.13'
tox_env: py313-full
- - python: '3.14.0-beta.1 - 3.14'
+ - python: '3.14.0-rc.1 - 3.14'
tox_env: py314-full
+ - python: '3.14t-dev'
+ tox_env: py314t
- python: 'pypy-3.10'
# Pypy is a lot slower due to jit warmup costs, so don't run the
# "full" test config there.
# built here; the real build is defined in build.yml.
CIBW_ARCHS: native
CIBW_BUILD: cp313-manylinux*
-
- # Alternatively, uncomment the following lines (and replace the previous CIBW_BUILD)
- # to test a freethreading build of python.
- #CIBW_BUILD: cp313t-manylinux*
- #CIBW_ENABLE: cpython-freethreading
- # I don't understand what this does but auditwheel seems to fail in this configuration.
- # Since we're throwing away the wheels here, just skip it.
- # TODO: When we no longer need to disable this, we can enable freethreading in
- # build.yml.
- #CIBW_REPAIR_WHEEL_COMMAND: ""
target-version = ['py39', 'py310', 'py311', 'py312', 'py313']
[tool.cibuildwheel]
-build = "cp39* cp310* cp311* cp312* cp313*"
+build = "cp39* cp310* cp311* cp312* cp313* cp314* cp314t*"
test-command = "python -m tornado.test"
[tool.cibuildwheel.macos]
[tool.cibuildwheel.windows]
# TODO: figure out what's going on with these occasional log messages.
test-command = "python -m tornado.test --fail-if-logs=false"
-
-[tool.cibuildwheel.linux]
-# This configuration has a bug which appears unrelated to Tornado:
-# https://github.com/python/cpython/issues/130522
-# If the underlying bug is not fixed by the time 3.14 is released,
-# we may need to skip that in musllinux_i686 as well.
-#
-# Note that because we use the stable ABI, the wheels built for
-# cp39-musllinux_i686 will still be available for users of 3.13, this just
-# means we won't be testing them in this configuration.
-test-skip = "cp313-musllinux_i686"
import os
import re
import socket
+import sys
import typing
import unittest
import urllib.parse
self.assertEqual(headers[2], "c=1; HttpOnly; Path=/")
self.assertEqual(headers[3], "d=1; Path=/")
+ @unittest.skipIf(
+ getattr(sys.flags, "context_aware_warnings", False),
+ "interaction with context-aware warnings is buggy",
+ )
def test_set_cookie_deprecated(self):
with ignore_deprecation():
response = self.fetch("/set_deprecated")
[tox]
envlist =
# Basic configurations: Run the tests for each python version.
- py39-full,py310-full,py311-full,py312-full,py313-full,pypy3-full
+ py39-full,py310-full,py311-full,py312-full,py313-full,py314-full,py314t,pypy3-full
# Build and test the docs with sphinx.
docs
setenv =
# Treat the extension as mandatory in testing (but not on pypy)
- {py3,py39,py310,py311,py312,py313,py314}: TORNADO_EXTENSION=1
+ {py3,py39,py310,py311,py312,py313,py314,py314t}: TORNADO_EXTENSION=1
# CI workers are often overloaded and can cause our tests to exceed
# the default timeout of 5s.
ASYNC_TEST_TIMEOUT=25