Skip to content

Commit 0702304

Browse files
authored
Drop Python 3.9 and lxml 4 support (#138)
2 parents 8babf82 + 92a1060 commit 0702304

13 files changed

+79
-71
lines changed

.github/workflows/test.yaml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ jobs:
3232
- name: "Linux"
3333
runner: "ubuntu-latest"
3434
cpythons:
35-
- "3.9"
3635
- "3.10"
3736
- "3.11"
3837
- "3.12"
@@ -41,28 +40,28 @@ jobs:
4140
pypys:
4241
- "3.11"
4342
tox-post-environments:
44-
- "py3.9-minimum_dependencies"
45-
- "py3.9-http-lxml"
43+
- "py3.10-minimum_dependencies"
44+
- "py3.10-http-lxml"
4645
- "py3.13-http-lxml"
4746

4847
# Test lowest and highest versions on Mac.
4948
- name: "macOS"
5049
runner: "macos-latest"
5150
cpythons:
52-
- "3.9"
51+
- "3.10"
5352
- "3.13"
5453
tox-environments:
55-
- "py3.9"
54+
- "py3.10"
5655
- "py3.13"
5756

5857
# Test lowest and highest versions on Windows.
5958
- name: "Windows"
6059
runner: "windows-latest"
6160
cpythons:
62-
- "3.9"
61+
- "3.10"
6362
- "3.13"
6463
tox-environments:
65-
- "py3.9"
64+
- "py3.10"
6665
- "py3.13"
6766

6867
# Check type annotations and documentation.

.pre-commit-config.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ repos:
1111
- id: "check-useless-excludes"
1212

1313
- repo: "https://github.com/pre-commit/pre-commit-hooks"
14-
rev: "v5.0.0"
14+
rev: "v6.0.0"
1515
hooks:
1616
- id: "check-added-large-files"
1717
- id: "check-merge-conflict"
@@ -26,9 +26,9 @@ repos:
2626
rev: "v3.20.0"
2727
hooks:
2828
- id: "pyupgrade"
29-
name: "Enforce Python 3.9+ idioms"
29+
name: "Enforce Python 3.10+ idioms"
3030
args:
31-
- "--py39-plus"
31+
- "--py310-plus"
3232

3333
- repo: "https://github.com/psf/black-pre-commit-mirror"
3434
rev: "25.1.0"
@@ -49,12 +49,12 @@ repos:
4949
- "flake8-bugbear==24.12.12"
5050

5151
- repo: "https://github.com/editorconfig-checker/editorconfig-checker"
52-
rev: "v3.3.0"
52+
rev: "v3.4.0"
5353
hooks:
5454
- id: "editorconfig-checker"
5555

5656
- repo: "https://github.com/python-jsonschema/check-jsonschema"
57-
rev: "0.33.2"
57+
rev: "0.33.3"
5858
hooks:
5959
- id: "check-dependabot"
6060
- id: "check-github-workflows"
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Python support
2+
--------------
3+
4+
* Drop support for Python 3.9.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Development
2+
-----------
3+
4+
* Locally test type annotations for all support Python versions.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
Changed
2+
-------
3+
4+
* Drop support for lxml v4 releases.
5+
* Support lxml v6 releases.

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ classifiers = [
1515
"Programming Language :: Python :: 3",
1616
"Topic :: Text Processing :: Markup :: XML",
1717
]
18-
requires-python = ">=3.9"
18+
requires-python = ">=3.10"
1919

2020
[project.urls]
2121
Repository = "https://github.com/kurtmckee/listparser/"
@@ -27,7 +27,7 @@ http = [
2727
"requests >=2.32.0, <3",
2828
]
2929
lxml = [
30-
"lxml >=4.6.2, <6",
30+
"lxml >=5.0.0, <7",
3131
]
3232

3333
[build-system]

requirements/docs/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
package-mode = false
33

44
[tool.poetry.dependencies]
5-
python = ">=3.9"
5+
python = ">=3.10"
66
sphinx = "*"

requirements/docs/requirements.txt

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,23 @@
1-
alabaster==0.7.16 ; python_version >= "3.9"
2-
babel==2.17.0 ; python_version >= "3.9"
3-
certifi==2025.7.14 ; python_version >= "3.9"
4-
charset-normalizer==3.4.2 ; python_version >= "3.9"
5-
colorama==0.4.6 ; python_version >= "3.9" and sys_platform == "win32"
6-
docutils==0.21.2 ; python_version >= "3.9"
7-
idna==3.10 ; python_version >= "3.9"
8-
imagesize==1.4.1 ; python_version >= "3.9"
9-
importlib-metadata==8.7.0 ; python_version == "3.9"
10-
jinja2==3.1.6 ; python_version >= "3.9"
11-
markupsafe==3.0.2 ; python_version >= "3.9"
12-
packaging==25.0 ; python_version >= "3.9"
13-
pygments==2.19.2 ; python_version >= "3.9"
14-
requests==2.32.4 ; python_version >= "3.9"
15-
snowballstemmer==3.0.1 ; python_version >= "3.9"
16-
sphinx==7.4.7 ; python_version >= "3.9"
17-
sphinxcontrib-applehelp==2.0.0 ; python_version >= "3.9"
18-
sphinxcontrib-devhelp==2.0.0 ; python_version >= "3.9"
19-
sphinxcontrib-htmlhelp==2.1.0 ; python_version >= "3.9"
20-
sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.9"
21-
sphinxcontrib-qthelp==2.0.0 ; python_version >= "3.9"
22-
sphinxcontrib-serializinghtml==2.0.0 ; python_version >= "3.9"
23-
tomli==2.2.1 ; python_version >= "3.9" and python_version < "3.11"
24-
urllib3==2.5.0 ; python_version >= "3.9"
25-
zipp==3.23.0 ; python_version == "3.9"
1+
alabaster==1.0.0 ; python_version >= "3.10"
2+
babel==2.17.0 ; python_version >= "3.10"
3+
certifi==2025.8.3 ; python_version >= "3.10"
4+
charset-normalizer==3.4.3 ; python_version >= "3.10"
5+
colorama==0.4.6 ; python_version >= "3.10" and sys_platform == "win32"
6+
docutils==0.21.2 ; python_version >= "3.10"
7+
idna==3.10 ; python_version >= "3.10"
8+
imagesize==1.4.1 ; python_version >= "3.10"
9+
jinja2==3.1.6 ; python_version >= "3.10"
10+
markupsafe==3.0.2 ; python_version >= "3.10"
11+
packaging==25.0 ; python_version >= "3.10"
12+
pygments==2.19.2 ; python_version >= "3.10"
13+
requests==2.32.5 ; python_version >= "3.10"
14+
snowballstemmer==3.0.1 ; python_version >= "3.10"
15+
sphinx==8.1.3 ; python_version >= "3.10"
16+
sphinxcontrib-applehelp==2.0.0 ; python_version >= "3.10"
17+
sphinxcontrib-devhelp==2.0.0 ; python_version >= "3.10"
18+
sphinxcontrib-htmlhelp==2.1.0 ; python_version >= "3.10"
19+
sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.10"
20+
sphinxcontrib-qthelp==2.0.0 ; python_version >= "3.10"
21+
sphinxcontrib-serializinghtml==2.0.0 ; python_version >= "3.10"
22+
tomli==2.2.1 ; python_version == "3.10"
23+
urllib3==2.5.0 ; python_version >= "3.10"

requirements/mypy/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
package-mode = false
33

44
[tool.poetry.dependencies]
5-
python = ">=3.9"
5+
python = ">=3.10"
66
mypy = "*"
77
lxml-stubs = "*"
88
types-requests = "*"

requirements/mypy/requirements.txt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
lxml-stubs==0.5.1 ; python_version >= "3.9"
2-
mypy-extensions==1.1.0 ; python_version >= "3.9"
3-
mypy==1.16.1 ; python_version >= "3.9"
4-
pathspec==0.12.1 ; python_version >= "3.9"
5-
tomli==2.2.1 ; python_version >= "3.9" and python_version < "3.11"
6-
types-requests==2.32.4.20250611 ; python_version >= "3.9"
7-
types-toml==0.10.8.20240310 ; python_version >= "3.9"
8-
typing-extensions==4.14.1 ; python_version >= "3.9"
9-
urllib3==2.5.0 ; python_version >= "3.9"
1+
lxml-stubs==0.5.1 ; python_version >= "3.10"
2+
mypy-extensions==1.1.0 ; python_version >= "3.10"
3+
mypy==1.17.1 ; python_version >= "3.10"
4+
pathspec==0.12.1 ; python_version >= "3.10"
5+
tomli==2.2.1 ; python_version == "3.10"
6+
types-requests==2.32.4.20250809 ; python_version >= "3.10"
7+
types-toml==0.10.8.20240310 ; python_version >= "3.10"
8+
typing-extensions==4.15.0 ; python_version >= "3.10"
9+
urllib3==2.5.0 ; python_version >= "3.10"

0 commit comments

Comments
 (0)