Skip to content

Commit 6ae6791

Browse files
committed
chore!: drop Python 3.9 and 3.10 and bump vulnerable dev dependencies
Python 3.9 (EOL 2025-10-31) and 3.10 (EOL 2026-10-01) are end of life, so require >=3.11. Classifiers, pyright, ruff, tox and the CI matrix are updated, 3.14 is added, and the EOL notice now points at Python 3.11. Refresh pdm.lock and package/requirements.*.txt so that urllib3, idna, soupsieve, requests, pytest and Pygments reach their patched versions, closing the open Dependabot alerts (and superseding #443).
1 parent 70de324 commit 6ae6791

9 files changed

Lines changed: 82 additions & 130 deletions

File tree

‎.github/workflows/pycqa.yaml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ jobs:
1616
- name: Checkout repository
1717
uses: actions/checkout@v6
1818
# set up specific python version
19-
- name: Set up Python v3.10
19+
- name: Set up Python v3.11
2020
uses: actions/setup-python@v6
2121
with:
22-
python-version: "3.10"
22+
python-version: "3.11"
2323
# tooling
2424
- name: Install 'tooling' dependencies
2525
run: pip install -r package/requirements.tooling.txt
@@ -33,7 +33,7 @@ jobs:
3333
fail-fast: true
3434
matrix:
3535
os: [ubuntu-latest]
36-
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
36+
python-version: ["3.11", "3.12", "3.13", "3.14"]
3737
runs-on: ${{ matrix.os }}
3838
steps:
3939
# checkout repository again!

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ True
3636

3737
---
3838

39-
> **_Python 3.9 [reaches EOL in](https://endoflife.date/python) October 2025._**
39+
> **_Python 3.11 [reaches EOL in](https://endoflife.date/python) October 2027._**
4040
4141
<!-- Links -->
4242
[sast-badge]: https://github.com/python-validators/validators/actions/workflows/sast.yaml/badge.svg

‎docs/index.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ True
3636

3737
---
3838

39-
> **_Python 3.9 [reaches EOL in](https://endoflife.date/python) October 2025._**
39+
> **_Python 3.11 [reaches EOL in](https://endoflife.date/python) October 2027._**
4040
4141
<!-- Links -->
4242
[sast-badge]: https://github.com/python-validators/validators/actions/workflows/sast.yaml/badge.svg

‎docs/index.rst‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ Resources
4747

4848
--------------
4949

50-
**Python 3.9** `reaches EOL in <https://endoflife.date/python>`__
51-
**October 2025.**
50+
**Python 3.11** `reaches EOL in <https://endoflife.date/python>`__
51+
**October 2027.**
5252

5353
.. raw:: html
5454

‎package/requirements.sphinx.txt‎

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ babel==2.15.0 \
1010
beautifulsoup4==4.12.3 \
1111
--hash=sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051 \
1212
--hash=sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed
13-
certifi==2024.7.4 \
14-
--hash=sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b \
15-
--hash=sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90
13+
certifi==2024.6.2 \
14+
--hash=sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516 \
15+
--hash=sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56
1616
charset-normalizer==3.3.2 \
1717
--hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \
1818
--hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \
@@ -103,18 +103,15 @@ eth-hash[pycryptodome]==0.7.0 \
103103
furo==2024.8.6 \
104104
--hash=sha256:6cd97c58b47813d3619e63e9081169880fbe331f0ca883c871ff1f3f11814f5c \
105105
--hash=sha256:b63e4cee8abfc3136d3bc03a3d45a76a850bada4d6374d24c1716b0e01394a01
106-
idna==3.7 \
107-
--hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \
108-
--hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0
106+
idna==3.20 \
107+
--hash=sha256:a7db850025b95ded1eae8a46181a1a6c56c92c96f0e2b005d9ff8dc0210cab44 \
108+
--hash=sha256:ab7ae7122974553370f0bdb919e1a960b2cd1bc1ef0276416d896db81c14582c
109109
imagesize==1.4.1 \
110110
--hash=sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b \
111111
--hash=sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a
112-
importlib-metadata==8.0.0 \
113-
--hash=sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f \
114-
--hash=sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812
115-
jinja2==3.1.6 \
116-
--hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \
117-
--hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67
112+
jinja2==3.1.4 \
113+
--hash=sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369 \
114+
--hash=sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d
118115
markdown-it-py==3.0.0 \
119116
--hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \
120117
--hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb
@@ -204,9 +201,9 @@ pycryptodome==3.20.0 \
204201
--hash=sha256:f35d6cee81fa145333137009d9c8ba90951d7d77b67c79cbe5f03c7eb74d8fe2 \
205202
--hash=sha256:f47888542a0633baff535a04726948e876bf1ed880fddb7c10a736fa99146ab3 \
206203
--hash=sha256:fb3b87461fa35afa19c971b0a2b7456a7b1db7b4eba9a8424666104925b78128
207-
pygments==2.18.0 \
208-
--hash=sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199 \
209-
--hash=sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a
204+
pygments==2.21.0 \
205+
--hash=sha256:2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9 \
206+
--hash=sha256:610ca751c9bc2492b38eb9a38a7fbc93edbbb2d7182edaf34e66ae493dee5c8c
210207
pypandoc-binary==1.13 \
211208
--hash=sha256:11a2497320eb3dccb74de3c67b6df3e5d3f66cdc2a36a67e9a871708f7e48412 \
212209
--hash=sha256:21ef0345726d36fc45a50211320614daf2caede684b0d0963ce8738292809746 \
@@ -255,15 +252,15 @@ pyyaml==6.0.1 \
255252
--hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \
256253
--hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \
257254
--hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f
258-
requests==2.32.4 \
259-
--hash=sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c \
260-
--hash=sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422
255+
requests==2.34.2 \
256+
--hash=sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0 \
257+
--hash=sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed
261258
snowballstemmer==2.2.0 \
262259
--hash=sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1 \
263260
--hash=sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a
264-
soupsieve==2.5 \
265-
--hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \
266-
--hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7
261+
soupsieve==2.10 \
262+
--hash=sha256:49e9380d7d2905463583bafe285e818c7366a9ed7b3aee221c1ac79c905d8bc0 \
263+
--hash=sha256:8596eb8967d744174820280fa62b4542a2e955bfaccca73ed8a13c6eb8e9b502
267264
sphinx==7.1.2 \
268265
--hash=sha256:780f4d32f1d7d1126576e0e5ecc19dc32ab76cd24e950228dcf7b1f6d3d9e22f \
269266
--hash=sha256:d170a81825b2fcacb6dfd5a0d7f578a053e45d3f2b153fecc948c37344eb4cbe
@@ -288,9 +285,6 @@ sphinxcontrib-qthelp==1.0.3 \
288285
sphinxcontrib-serializinghtml==1.1.5 \
289286
--hash=sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd \
290287
--hash=sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952
291-
urllib3==2.2.2 \
292-
--hash=sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472 \
293-
--hash=sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168
294-
zipp==3.19.2 \
295-
--hash=sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19 \
296-
--hash=sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c
288+
urllib3==2.8.0 \
289+
--hash=sha256:0cf3cae568d36aa9576b28dfb35f11328f1cb974ca7647d9475ebb86c75ac6e3 \
290+
--hash=sha256:63bf2ead4c879426ebf22ef2a781eeb4aa3b4ae798a0435506f8687fd5bb9b63

‎package/requirements.testing.txt‎

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@ colorama==0.4.6 \
77
eth-hash[pycryptodome]==0.7.0 \
88
--hash=sha256:b8d5a230a2b251f4a291e3164a23a14057c4a6de4b0aa4a16fa4dc9161b57e2f \
99
--hash=sha256:bacdc705bfd85dadd055ecd35fd1b4f846b671add101427e089a4ca2e8db310a
10-
exceptiongroup==1.2.1; python_version < "3.11" \
11-
--hash=sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad \
12-
--hash=sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16
1310
iniconfig==2.0.0 \
1411
--hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \
1512
--hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
@@ -41,9 +38,9 @@ pycryptodome==3.20.0 \
4138
--hash=sha256:f35d6cee81fa145333137009d9c8ba90951d7d77b67c79cbe5f03c7eb74d8fe2 \
4239
--hash=sha256:f47888542a0633baff535a04726948e876bf1ed880fddb7c10a736fa99146ab3 \
4340
--hash=sha256:fb3b87461fa35afa19c971b0a2b7456a7b1db7b4eba9a8424666104925b78128
44-
pytest==8.3.2 \
45-
--hash=sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5 \
46-
--hash=sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce
47-
tomli==2.0.1; python_version < "3.11" \
48-
--hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \
49-
--hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f
41+
pygments==2.21.0 \
42+
--hash=sha256:2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9 \
43+
--hash=sha256:610ca751c9bc2492b38eb9a38a7fbc93edbbb2d7182edaf34e66ae493dee5c8c
44+
pytest==9.1.1 \
45+
--hash=sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313 \
46+
--hash=sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c

‎package/requirements.tooling.txt‎

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@ colorama==0.4.6 \
77
eth-hash[pycryptodome]==0.7.0 \
88
--hash=sha256:b8d5a230a2b251f4a291e3164a23a14057c4a6de4b0aa4a16fa4dc9161b57e2f \
99
--hash=sha256:bacdc705bfd85dadd055ecd35fd1b4f846b671add101427e089a4ca2e8db310a
10-
exceptiongroup==1.2.1; python_version < "3.11" \
11-
--hash=sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad \
12-
--hash=sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16
1310
iniconfig==2.0.0 \
1411
--hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \
1512
--hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
@@ -44,6 +41,9 @@ pycryptodome==3.20.0 \
4441
--hash=sha256:f35d6cee81fa145333137009d9c8ba90951d7d77b67c79cbe5f03c7eb74d8fe2 \
4542
--hash=sha256:f47888542a0633baff535a04726948e876bf1ed880fddb7c10a736fa99146ab3 \
4643
--hash=sha256:fb3b87461fa35afa19c971b0a2b7456a7b1db7b4eba9a8424666104925b78128
44+
pygments==2.21.0 \
45+
--hash=sha256:2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9 \
46+
--hash=sha256:610ca751c9bc2492b38eb9a38a7fbc93edbbb2d7182edaf34e66ae493dee5c8c
4747
pypandoc-binary==1.13 \
4848
--hash=sha256:11a2497320eb3dccb74de3c67b6df3e5d3f66cdc2a36a67e9a871708f7e48412 \
4949
--hash=sha256:21ef0345726d36fc45a50211320614daf2caede684b0d0963ce8738292809746 \
@@ -55,9 +55,9 @@ pypandoc-binary==1.13 \
5555
pyright==1.1.378 \
5656
--hash=sha256:78a043be2876d12d0af101d667e92c7734f3ebb9db71dccc2c220e7e7eb89ca2 \
5757
--hash=sha256:8853776138b01bc284da07ac481235be7cc89d3176b073d2dba73636cb95be79
58-
pytest==8.3.2 \
59-
--hash=sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5 \
60-
--hash=sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce
58+
pytest==9.1.1 \
59+
--hash=sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313 \
60+
--hash=sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c
6161
ruff==0.6.3 \
6262
--hash=sha256:14a9528a8b70ccc7a847637c29e56fd1f9183a9db743bbc5b8e0c4ad60592a82 \
6363
--hash=sha256:183b99e9edd1ef63be34a3b51fee0a9f4ab95add123dbf89a71f7b1f0c991983 \
@@ -77,6 +77,3 @@ ruff==0.6.3 \
7777
--hash=sha256:d2e2c23cef30dc3cbe9cc5d04f2899e7f5e478c40d2e0a633513ad081f7361b5 \
7878
--hash=sha256:d8a136aa7d228975a6aee3dd8bea9b28e2b43e9444aa678fb62aeb1956ff2351 \
7979
--hash=sha256:f92fe93bc72e262b7b3f2bba9879897e2d58a989b4714ba6a5a7273e842ad2f8
80-
tomli==2.0.1; python_version < "3.11" \
81-
--hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \
82-
--hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f

0 commit comments

Comments
 (0)