diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 83de720da4..2b46f54a7d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,8 +36,6 @@ jobs: strategy: matrix: include: - - python: '3.8' - tox_env: py38-full - python: '3.9' tox_env: py39-full - python: '3.10' @@ -54,9 +52,8 @@ jobs: - python: '3.12.0' tox_env: py312-full - python: '3.13.0-beta.2 - 3.13' - # Some optional dependencies don't seem to work on 3.13 yet - tox_env: py313 - - python: 'pypy-3.8' + tox_env: py313-full + - python: 'pypy-3.10' # Pypy is a lot slower due to jit warmup costs, so don't run the # "full" test config there. tox_env: pypy3 diff --git a/docs/index.rst b/docs/index.rst index c33fb0b080..9b1218625a 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -99,7 +99,7 @@ installed in this way, so you may wish to download a copy of the source tarball or clone the `git repository `_ as well. -**Prerequisites**: Tornado 6.3 requires Python 3.8 or newer. The following +**Prerequisites**: Tornado 6.3 requires Python 3.9 or newer. The following optional packages may be useful: * `pycurl `_ is used by the optional diff --git a/pyproject.toml b/pyproject.toml index f8268bf0ed..755fb8ab73 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,10 +3,10 @@ requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" [tool.black] -target-version = ['py38', 'py39', 'py310', 'py311', 'py312'] +target-version = ['py39', 'py310', 'py311', 'py312', 'py313'] [tool.cibuildwheel] -build = "cp3[89]* cp310* cp311* cp312*" +build = "cp39* cp310* cp311* cp312* cp313*" test-command = "python -m tornado.test" [tool.cibuildwheel.macos] diff --git a/setup.cfg b/setup.cfg index 53b16dff17..f1d2b312f8 100644 --- a/setup.cfg +++ b/setup.cfg @@ -2,7 +2,7 @@ license_file = LICENSE [mypy] -python_version = 3.8 +python_version = 3.9 no_implicit_optional = True [mypy-tornado.*,tornado.platform.*] diff --git a/setup.py b/setup.py index d524bd3f84..14ddc3f25f 100644 --- a/setup.py +++ b/setup.py @@ -52,7 +52,7 @@ # Use the stable ABI so our wheels are compatible across python # versions. py_limited_api=True, - define_macros=[("Py_LIMITED_API", "0x03080000")], + define_macros=[("Py_LIMITED_API", "0x03090000")], ) ] @@ -63,7 +63,7 @@ def get_tag(self): python, abi, plat = super().get_tag() if python.startswith("cp"): - return "cp38", "abi3", plat + return "cp39", "abi3", plat return python, abi, plat kwargs["cmdclass"] = {"bdist_wheel": bdist_wheel_abi3} @@ -72,7 +72,7 @@ def get_tag(self): setuptools.setup( name="tornado", version=version, - python_requires=">= 3.8", + python_requires=">= 3.9", packages=["tornado", "tornado.test", "tornado.platform"], package_data={ # data files need to be listed both here (which determines what gets @@ -112,13 +112,13 @@ def get_tag(self): classifiers=[ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", ], - **kwargs + **kwargs, ) diff --git a/tox.ini b/tox.ini index adb1347a6f..66d07cba2e 100644 --- a/tox.ini +++ b/tox.ini @@ -13,7 +13,7 @@ [tox] envlist = # Basic configurations: Run the tests for each python version. - py38-full,py39-full,py310-full,py311-full,py312-full,pypy3-full + py39-full,py310-full,py311-full,py312-full,py313-full,pypy3-full # Build and test the docs with sphinx. docs @@ -24,7 +24,6 @@ envlist = [testenv] basepython = py3: python3 - py38: python3.8 py39: python3.9 py310: python3.10 py311: python3.11 @@ -49,7 +48,7 @@ deps = setenv = # Treat the extension as mandatory in testing (but not on pypy) - {py3,py38,py39,py310,py311,py312,py313}: TORNADO_EXTENSION=1 + {py3,py39,py310,py311,py312,py313}: TORNADO_EXTENSION=1 # CI workers are often overloaded and can cause our tests to exceed # the default timeout of 5s. ASYNC_TEST_TIMEOUT=25 @@ -61,7 +60,7 @@ setenv = # during sdist installation (and it doesn't seem to be # possible to set environment variables during that phase of # tox). - {py3,py38,py39,py310,py311,py312,py313,pypy3}: PYTHONWARNINGS=error:::tornado + {py3,py39,py310,py311,py312,py313,pypy3}: PYTHONWARNINGS=error:::tornado # Warn if we try to open a file with an unspecified encoding. # (New in python 3.10, becomes obsolete when utf8 becomes the # default in 3.15)