Skip to content

Commit 5296033

Browse files
authored
Drop Python 3.9 support (#673)
It reached EOL on 2025-10-31: https://peps.python.org/pep-0596/#lifespan.
1 parent e19d8f8 commit 5296033

8 files changed

Lines changed: 63 additions & 205 deletions

File tree

.github/ISSUE_TEMPLATE/issue.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ body:
66
attributes:
77
label: Python Version
88
description: Which version of Python were you using?
9-
placeholder: 3.9.0
9+
placeholder: 3.14.0
1010
validations:
1111
required: false
1212
- type: input

.github/workflows/main.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ jobs:
2121
- ubuntu-24.04
2222
- windows-2022
2323
python-version:
24-
- '3.9'
2524
- '3.10'
2625
- '3.11'
2726
- '3.12'

docs/changelog.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
Changelog
33
=========
44

5+
* Drop Python 3.9 support.
6+
57
6.11.0 (2025-09-18)
68
-------------------
79

pyproject.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ maintainers = [
2121
authors = [
2222
{ name = "David Evans" },
2323
]
24-
requires-python = ">=3.9"
24+
requires-python = ">=3.10"
2525
classifiers = [
2626
"Development Status :: 5 - Production/Stable",
2727
"Framework :: Django",
@@ -33,7 +33,6 @@ classifiers = [
3333
"Intended Audience :: Developers",
3434
"Operating System :: OS Independent",
3535
"Programming Language :: Python :: 3 :: Only",
36-
"Programming Language :: Python :: 3.9",
3736
"Programming Language :: Python :: 3.10",
3837
"Programming Language :: Python :: 3.11",
3938
"Programming Language :: Python :: 3.12",

src/whitenoise/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import os
44
import re
55
import warnings
6+
from collections.abc import Callable
67
from posixpath import normpath
7-
from typing import Callable
88
from wsgiref.headers import Headers
99
from wsgiref.util import FileWrapper
1010

src/whitenoise/storage.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import textwrap
77
from collections.abc import Generator, Iterator
88
from concurrent.futures import ThreadPoolExecutor, as_completed
9-
from typing import Any, Union
9+
from typing import Any
1010

1111
from django.conf import settings
1212
from django.contrib.staticfiles.storage import (
@@ -16,7 +16,7 @@
1616

1717
from whitenoise.compress import Compressor
1818

19-
_PostProcessT = Iterator[Union[tuple[str, str, bool], tuple[str, None, RuntimeError]]]
19+
_PostProcessT = Iterator[tuple[str, str, bool] | tuple[str, None, RuntimeError]]
2020

2121

2222
class CompressedStaticFilesStorage(StaticFilesStorage):

tox.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ env_list =
88
py312-django{60, 52, 51, 50, 42}
99
py311-django{52, 51, 50, 42}
1010
py310-django{52, 51, 50, 42}
11-
py39-django{42}
1211

1312
[testenv]
1413
runner = uv-venv-lock-runner

uv.lock

Lines changed: 56 additions & 197 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)