Skip to content

Commit 491e89b

Browse files
chore: drop py3.9; support py3.14; update deps (#933)
* chore: drop py3.9; support py3.14; update deps * chore: update requirements.txt files --------- Co-authored-by: GitHub Action <action@github.com>
1 parent 86d22e0 commit 491e89b

6 files changed

Lines changed: 4452 additions & 3729 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
runs-on: ubuntu-latest
4646
strategy:
4747
matrix:
48-
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
48+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
4949
fail-fast: false
5050
defaults:
5151
run:

docs/requirements.txt

Lines changed: 66 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
11
# This file was autogenerated by uv via the following command:
22
# uv export --no-hashes --only-group=docs --output-file=docs/requirements.txt
3-
alabaster==0.7.16
3+
accessible-pygments==0.0.5
4+
# via furo
5+
alabaster==1.0.0
46
# via sphinx
5-
anyio==4.10.0
7+
anyio==4.13.0
68
# via
79
# starlette
810
# watchfiles
9-
attrs==25.3.0
11+
attrs==26.1.0
1012
# via
1113
# jsonschema
1214
# referencing
13-
babel==2.17.0
15+
babel==2.18.0
1416
# via sphinx
15-
beautifulsoup4==4.13.4
17+
beautifulsoup4==4.14.3
1618
# via
1719
# furo
1820
# nbconvert
19-
bleach==6.2.0
21+
bleach==6.3.0
2022
# via nbconvert
21-
certifi==2025.8.3
23+
certifi==2026.2.25
2224
# via requests
23-
cffi==1.17.1 ; implementation_name == 'pypy'
25+
cffi==2.0.0 ; implementation_name == 'pypy'
2426
# via pyzmq
25-
charset-normalizer==3.4.2
27+
charset-normalizer==3.4.7
2628
# via requests
27-
click==8.1.8 ; python_full_version < '3.10'
28-
# via uvicorn
29-
click==8.2.1 ; python_full_version >= '3.10'
29+
click==8.3.2
3030
# via uvicorn
3131
colorama==0.4.6
3232
# via
@@ -35,109 +35,120 @@ colorama==0.4.6
3535
# sphinx-autobuild
3636
defusedxml==0.7.1
3737
# via nbconvert
38-
docutils==0.21.2
38+
docutils==0.21.2 ; python_full_version < '3.11'
39+
# via
40+
# nbsphinx
41+
# sphinx
42+
docutils==0.22.4 ; python_full_version >= '3.11'
3943
# via
4044
# nbsphinx
4145
# sphinx
42-
exceptiongroup==1.3.0 ; python_full_version < '3.11'
46+
exceptiongroup==1.3.1 ; python_full_version < '3.11'
4347
# via anyio
44-
fastjsonschema==2.21.1
48+
fastjsonschema==2.21.2
4549
# via nbformat
46-
furo==2024.8.6
50+
furo==2025.12.19
4751
h11==0.16.0
4852
# via uvicorn
49-
idna==3.10
53+
idna==3.11
5054
# via
5155
# anyio
5256
# requests
53-
imagesize==1.4.1
57+
imagesize==2.0.0
5458
# via sphinx
55-
importlib-metadata==8.7.0 ; python_full_version < '3.10'
56-
# via
57-
# jupyter-client
58-
# nbconvert
59-
# sphinx
6059
jinja2==3.1.6
6160
# via
6261
# nbconvert
6362
# nbsphinx
6463
# sphinx
65-
jsonschema==4.25.0
64+
jsonschema==4.26.0
6665
# via nbformat
67-
jsonschema-specifications==2025.4.1
66+
jsonschema-specifications==2025.9.1
6867
# via jsonschema
69-
jupyter-client==8.6.3
68+
jupyter-client==8.8.0
7069
# via nbclient
71-
jupyter-core==5.8.1
70+
jupyter-core==5.9.1
7271
# via
7372
# jupyter-client
7473
# nbclient
7574
# nbconvert
7675
# nbformat
7776
jupyterlab-pygments==0.3.0
7877
# via nbconvert
79-
markupsafe==3.0.2
78+
markupsafe==3.0.3
8079
# via
8180
# jinja2
8281
# nbconvert
83-
mistune==3.1.3
82+
mistune==3.2.0
8483
# via nbconvert
85-
nbclient==0.10.2
84+
nbclient==0.10.4
8685
# via nbconvert
87-
nbconvert==7.16.6
86+
nbconvert==7.17.1
8887
# via nbsphinx
8988
nbformat==5.10.4
9089
# via
9190
# nbclient
9291
# nbconvert
9392
# nbsphinx
94-
nbsphinx==0.9.7
95-
packaging==25.0
93+
nbsphinx==0.9.8
94+
packaging==26.0
9695
# via
9796
# nbconvert
9897
# sphinx
9998
pandocfilters==1.5.1
10099
# via nbconvert
101-
platformdirs==4.3.8
100+
platformdirs==4.9.6
102101
# via jupyter-core
103-
pycparser==2.22 ; implementation_name == 'pypy'
102+
pycparser==3.0 ; implementation_name == 'pypy'
104103
# via cffi
105-
pygments==2.19.2
104+
pygments==2.20.0
106105
# via
106+
# accessible-pygments
107107
# furo
108108
# nbconvert
109109
# sphinx
110110
python-dateutil==2.9.0.post0
111111
# via jupyter-client
112-
pywin32==311 ; platform_python_implementation != 'PyPy' and sys_platform == 'win32'
113-
# via jupyter-core
114-
pyzmq==27.0.1
112+
pyzmq==27.1.0
115113
# via jupyter-client
116-
referencing==0.36.2
114+
referencing==0.37.0
117115
# via
118116
# jsonschema
119117
# jsonschema-specifications
120-
requests==2.32.3
118+
requests==2.33.1
119+
# via sphinx
120+
roman-numerals==4.1.0 ; python_full_version >= '3.11'
121121
# via sphinx
122-
rpds-py==0.26.0
122+
rpds-py==0.30.0
123123
# via
124124
# jsonschema
125125
# referencing
126126
six==1.17.0
127127
# via python-dateutil
128-
sniffio==1.3.1
129-
# via anyio
130128
snowballstemmer==3.0.1
131129
# via sphinx
132-
soupsieve==2.7
130+
soupsieve==2.8.3
133131
# via beautifulsoup4
134-
sphinx==7.4.7
132+
sphinx==8.1.3 ; python_full_version < '3.11'
133+
# via
134+
# furo
135+
# nbsphinx
136+
# sphinx-autobuild
137+
# sphinx-basic-ng
138+
sphinx==9.0.4 ; python_full_version == '3.11.*'
139+
# via
140+
# furo
141+
# nbsphinx
142+
# sphinx-autobuild
143+
# sphinx-basic-ng
144+
sphinx==9.1.0 ; python_full_version >= '3.12'
135145
# via
136146
# furo
137147
# nbsphinx
138148
# sphinx-autobuild
139149
# sphinx-basic-ng
140-
sphinx-autobuild==2024.10.3
150+
sphinx-autobuild==2024.10.3 ; python_full_version < '3.11'
151+
sphinx-autobuild==2025.8.25 ; python_full_version >= '3.11'
141152
sphinx-basic-ng==1.0.0b2
142153
# via furo
143154
sphinxcontrib-applehelp==2.0.0
@@ -152,13 +163,13 @@ sphinxcontrib-qthelp==2.0.0
152163
# via sphinx
153164
sphinxcontrib-serializinghtml==2.0.0
154165
# via sphinx
155-
starlette==0.47.2
166+
starlette==1.0.0
156167
# via sphinx-autobuild
157168
tinycss2==1.4.0
158169
# via bleach
159-
tomli==2.2.1 ; python_full_version < '3.11'
170+
tomli==2.4.1 ; python_full_version < '3.11'
160171
# via sphinx
161-
tornado==6.5.1
172+
tornado==6.5.5
162173
# via jupyter-client
163174
traitlets==5.14.3
164175
# via
@@ -168,7 +179,7 @@ traitlets==5.14.3
168179
# nbconvert
169180
# nbformat
170181
# nbsphinx
171-
typing-extensions==4.14.1
182+
typing-extensions==4.15.0
172183
# via
173184
# anyio
174185
# beautifulsoup4
@@ -177,17 +188,15 @@ typing-extensions==4.14.1
177188
# referencing
178189
# starlette
179190
# uvicorn
180-
urllib3==1.26.20
191+
urllib3==2.6.3
181192
# via requests
182-
uvicorn==0.35.0
193+
uvicorn==0.44.0
183194
# via sphinx-autobuild
184-
watchfiles==1.1.0
195+
watchfiles==1.1.1
185196
# via sphinx-autobuild
186197
webencodings==0.5.1
187198
# via
188199
# bleach
189200
# tinycss2
190-
websockets==15.0.1
201+
websockets==16.0
191202
# via sphinx-autobuild
192-
zipp==3.23.0 ; python_full_version < '3.10'
193-
# via importlib-metadata

pyproject.toml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,16 @@ classifiers = [
2424

2525
# ━━━━━━━━━━━━━━━━━━━━━━ Primary Dependencies ━━━━━━━━━━━━━━━━━━━━━━ #
2626

27-
requires-python = ">=3.9,<3.14"
27+
requires-python = ">=3.10,<3.15"
2828
dependencies = [
2929
"html5lib>=1.1,<2.0.0",
30-
"pandas>=2.0.0,!=2.1.0,<3.0.0",
31-
"wrapper-tls-requests>=1.1.4,<2.0.0",
32-
"tqdm>=4.67.1,<5.0.0",
33-
"rich>=14.0.0,<15.0.0",
34-
"seleniumbase>=4.38.2,<5.0.0",
35-
"unidecode>=1.4.0,<2.0.0",
36-
"urllib3<2",
30+
"pandas>=2.0.0,!=2.1.0,<4.0.0",
31+
"wrapper-tls-requests>=1.1.4,<3.0.0",
32+
"tqdm>=4.67.1,<6.0.0",
33+
"rich>=14.0.0,<16.0.0",
34+
"seleniumbase>=4.38.2,<6.0.0",
35+
"unidecode>=1.4.0,<3.0.0",
36+
"urllib3<3",
3737
"lxml>=5.0.0; python_version >= '3.13'",
3838
"lxml>=4.9.4; python_version < '3.13'"
3939
]
@@ -58,15 +58,15 @@ lint = [
5858
"ruff",
5959
"mypy",
6060
"pyright>=1.1.403",
61-
"pre-commit>=4.0.0,<5.0.0",
61+
"pre-commit>=4.0.0,<6.0.0",
6262
]
6363

6464
# Testing
6565
test = [
66-
"pytest>=8.0.0,<9.0.0",
67-
"pytest-mock>=3.10.0,<4.0.0",
66+
"pytest>=8.0.0,<10.0.0",
67+
"pytest-mock>=3.10.0,<5.0.0",
6868
"pytest-cov>=6.2.1",
69-
"time-machine>=2.8.2,<3.0.0",
69+
"time-machine>=2.8.2,<4.0.0",
7070
"dvc[gs]>=3.62.0",
7171
]
7272

@@ -77,10 +77,10 @@ release = [
7777

7878
# Documentation
7979
docs = [
80-
"Sphinx>=7.0.0,<8.0.0",
81-
"furo>=2024.0.0,<2025.0.0",
80+
"Sphinx>=7.0.0,<10.0.0",
81+
"furo>=2024.0.0,<2026.0.0",
8282
"nbsphinx>=0.9.0,<1.0.0",
83-
"sphinx-autobuild>=2024.0.0,<2025.0.0",
83+
"sphinx-autobuild>=2024.0.0,<2026.0.0",
8484
]
8585

8686
# Example notebooks
@@ -104,7 +104,7 @@ default-groups = [
104104
[tool.ruff]
105105
src = ['soccerdata', 'tests']
106106
line-length = 99
107-
target-version = 'py39'
107+
target-version = 'py310'
108108

109109
[tool.ruff.lint]
110110
ignore = ['B904']

0 commit comments

Comments
 (0)