Skip to content

Commit dfec475

Browse files
authored
Added support for Python 3.14 (#240)
Signed-off-by: Andreas Maier <andreas.r.maier@gmx.de>
1 parent 55885c8 commit dfec475

File tree

7 files changed

+58
-39
lines changed

7 files changed

+58
-39
lines changed

.github/workflows/test.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ jobs:
3333
if [[ "${{ github.event_name }}" == "schedule" || "${{ github.head_ref }}" =~ ^release_ ]]; then \
3434
echo "matrix={ \
3535
\"os\": [ \"ubuntu-latest\", \"macos-latest\", \"windows-latest\" ], \
36-
\"python-version\": [ \"3.8\", \"3.9\", \"3.10\", \"3.11\", \"3.12\", \"3.13\" ], \
36+
\"python-version\": [ \"3.8\", \"3.9\", \"3.10\", \"3.11\", \"3.12\", \"3.13\", \"3.14\" ], \
3737
\"package_level\": [ \"minimum\", \"latest\" ] \
3838
}" >> $GITHUB_OUTPUT; \
3939
else \
4040
echo "matrix={ \
4141
\"os\": [ \"ubuntu-latest\" ], \
42-
\"python-version\": [ \"3.8\", \"3.13\" ], \
42+
\"python-version\": [ \"3.8\", \"3.14\" ], \
4343
\"package_level\": [ \"minimum\", \"latest\" ], \
4444
\"include\": [ \
4545
{ \
@@ -64,7 +64,7 @@ jobs:
6464
}, \
6565
{ \
6666
\"os\": \"macos-latest\", \
67-
\"python-version\": \"3.13\", \
67+
\"python-version\": \"3.14\", \
6868
\"package_level\": \"minimum\" \
6969
}, \
7070
{ \
@@ -74,7 +74,7 @@ jobs:
7474
}, \
7575
{ \
7676
\"os\": \"windows-latest\", \
77-
\"python-version\": \"3.13\", \
77+
\"python-version\": \"3.14\", \
7878
\"package_level\": \"minimum\" \
7979
} \
8080
] \

dev-requirements.txt

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ build>=1.0.0
99
virtualenv>=20.26.6
1010
pyproject-hooks>=1.1.0
1111

12+
# Unit test (e.g. imports into testcases):
13+
pytest>=8.0.2
14+
1215
# Coverage reporting (no imports, invoked via coveralls script):
1316
# coveralls 3.3.0 pins coverage to <7.0, causing pip backtracking to happen. Pinning
1417
# it to <7.0 in this file saves the time for backtracking, but requires to
@@ -18,23 +21,24 @@ pytest-cov>=2.7.0
1821
coveralls>=3.3.0
1922

2023
# Safety CI by pyup.io
21-
# safety 3.4.0 supports marshmallow>=4.0.0, see https://github.com/pyupio/safety/issues/715
22-
# safety 3.4.0 started using httpx and tenacity
23-
# pydantic 2.8.0 fixes an install issue on Python 3.13.
24-
safety>=3.4.0
25-
safety-schemas>=0.0.14
24+
safety>=3.6.1; python_version == '3.8'
25+
safety>=3.7.0; python_version >= '3.9'
26+
safety-schemas>=0.0.14; python_version == '3.8'
27+
safety-schemas>=0.0.16; python_version >= '3.9'
2628
dparse>=0.6.4
2729
ruamel.yaml>=0.17.21
2830
click>=8.0.2
2931
Authlib>=1.3.2; python_version == '3.8'
3032
Authlib>=1.6.5; python_version >= '3.9'
3133
marshmallow>=3.15.0
32-
pydantic>=2.8.0
33-
pydantic_core>=2.20.0
34+
pydantic>=2.8.0; python_version == '3.8'
35+
pydantic>=2.12.0; python_version >= '3.9'
36+
pydantic_core>=2.20.0; python_version == '3.8'
37+
pydantic_core>=2.41.1; python_version >= '3.9'
3438
# typer >=0.17.0 causes import issue for safety, see https://github.com/pyupio/safety/issues/778
35-
typer>=0.12.1,<0.17.0
36-
typer-cli>=0.12.1,<0.17.0
37-
typer-slim>=0.12.1,<0.17.0
39+
typer>=0.16.0
40+
typer-cli>=0.16.0
41+
typer-slim>=0.16.0
3842
# safety 3.4.0 depends on psutil~=6.1.0
3943
psutil~=6.1.0
4044
# safety 3.4.0 requires filelock~=3.16.1
@@ -77,15 +81,16 @@ Babel>=2.11.0
7781

7882
# PyLint (no imports, invoked via pylint script)
7983
pylint>=3.0.1; python_version == '3.8'
80-
pylint>=3.3.1; python_version >= '3.9'
84+
pylint>=3.3.3; python_version == '3.9'
85+
pylint>=4.0.4; python_version >= '3.10'
8186
astroid>=3.0.1; python_version == '3.8'
82-
astroid>=3.3.5; python_version >= '3.9'
87+
astroid>=3.3.8; python_version == '3.9'
88+
astroid>=4.0.2; python_version >= '3.10'
8389
lazy-object-proxy>=1.4.3
8490
wrapt>=1.14
8591
# platformdirs is also used by tox
8692
platformdirs>=4.1.0
87-
# isort 4.3.8 fixes an issue with py310 and works on py310 (Note that isort 5.10.0 has official support for py310)
88-
isort>=4.3.8
93+
isort>=5.0.9
8994
tomlkit>=0.10.1
9095
dill>=0.3.7
9196

@@ -103,11 +108,11 @@ readme-renderer>=43.0
103108
importlib-metadata>=4.8.3
104109

105110
# Mypy (no imports, invoked via mypy script)
106-
mypy>=1.2.0
111+
mypy>=1.14.1; python_version == '3.8'
112+
mypy>=1.17.1; python_version >= '3.9'
107113

108114
# Package dependency management tools
109115
pipdeptree>=2.24.0
110-
# pip-check-reqs 2.3.2 is needed to have proper support for pip>=21.3 and below.
111116
# pip-check-reqs 2.4.3 fixes a speed issue on Python 3.11.
112117
# pip-check-reqs 2.5.0 has issue https://github.com/r1chardj0n3s/pip-check-reqs/issues/143
113118
pip-check-reqs>=2.4.3,!=2.5.0; python_version == '3.8'
@@ -116,6 +121,9 @@ pip-check-reqs>=2.5.1; python_version >= '3.9'
116121
# packaging (used by pytest, safety)
117122
packaging>=24.1
118123

124+
# pluggy (used by pytest, tox)
125+
pluggy>=1.3.0
126+
119127
# pytz (used by TBD)
120128
pytz>=2019.1
121129

docs/changes.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ Released: not yet
3535

3636
**Enhancements:**
3737

38+
* Added support for Python 3.14.
39+
3840
**Cleanup:**
3941

4042
* Test: Added retries for sending coverage data to the coveralls.io site to

minimum-constraints-develop.txt

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ virtualenv==20.26.6
1414
pyproject-hooks==1.1.0
1515

1616
# Unit test (e.g. imports into testcases):
17-
pytest==7.0.0
17+
pytest==8.0.2
1818

1919
# Install test:
2020
six==1.16.0
@@ -25,19 +25,23 @@ pytest-cov==2.7.0
2525
coveralls==3.3.0
2626

2727
# Safety CI by pyup.io
28-
safety==3.4.0
29-
safety-schemas==0.0.14
28+
safety==3.6.1; python_version == '3.8'
29+
safety==3.7.0; python_version >= '3.9'
30+
safety-schemas==0.0.14; python_version == '3.8'
31+
safety-schemas==0.0.16; python_version >= '3.9'
3032
dparse==0.6.4
3133
ruamel.yaml==0.17.21
3234
click==8.0.2
3335
Authlib==1.3.2; python_version == '3.8'
3436
Authlib==1.6.5; python_version >= '3.9'
3537
marshmallow==3.15.0
36-
pydantic==2.8.0
37-
pydantic_core==2.20.0
38-
typer==0.12.1
39-
typer-cli==0.12.1
40-
typer-slim==0.12.1
38+
pydantic==2.8.0; python_version == '3.8'
39+
pydantic==2.12.0; python_version >= '3.9'
40+
pydantic_core==2.20.0; python_version == '3.8'
41+
pydantic_core==2.41.1; python_version >= '3.9'
42+
typer==0.16.0
43+
typer-cli==0.16.0
44+
typer-slim==0.16.0
4145
psutil==6.1.0
4246
filelock==3.16.1
4347

@@ -72,13 +76,15 @@ roman-numerals==4.1.0
7276

7377
# PyLint (no imports, invoked via pylint script)
7478
pylint==3.0.1; python_version == '3.8'
75-
pylint==3.3.1; python_version >= '3.9'
79+
pylint==3.3.3; python_version == '3.9'
80+
pylint==4.0.4; python_version >= '3.10'
7681
astroid==3.0.1; python_version == '3.8'
77-
astroid==3.3.5; python_version >= '3.9'
82+
astroid==3.3.8; python_version == '3.9'
83+
astroid==4.0.2; python_version >= '3.10'
7884
lazy-object-proxy==1.4.3
7985
wrapt==1.14
8086
platformdirs==4.1.0
81-
isort==4.3.8
87+
isort==5.0.9
8288
tomlkit==0.10.1
8389
dill==0.3.7
8490

@@ -96,18 +102,19 @@ readme-renderer==43.0
96102
importlib-metadata==4.8.3
97103

98104
# Mypy (no imports, invoked via mypy script)
99-
mypy==1.2.0
105+
mypy==1.14.1; python_version == '3.8'
106+
mypy==1.17.1; python_version >= '3.9'
100107

101108
# Package dependency management tools
102109
pipdeptree==2.24.0
103-
pip-check-reqs==2.4.3; python_version <= '3.8'
110+
pip-check-reqs==2.4.3; python_version == '3.8'
104111
pip-check-reqs==2.5.1; python_version >= '3.9'
105112

106113
# packaging (used by pytest, safety)
107114
packaging==24.1
108115

109116
# pluggy (used by pytest, tox)
110-
pluggy==0.13.1
117+
pluggy==1.3.0
111118

112119
# pytz (used by TBD)
113120
pytz==2019.1

minimum-constraints-install.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ wheel==0.41.3
1717

1818
# Direct dependencies for installation (must be consistent with requirements.txt)
1919

20-
typing-extensions==4.7.1; python_version >= '3.8' and python_version <= '3.9'
20+
# typing-extensions 4.14.0 removed support for Python 3.8
21+
typing-extensions==4.13.2; python_version == '3.8'
22+
typing-extensions==4.14.1; python_version >= '3.9'
2123

2224

2325
# Indirect dependencies for installation (must be consistent with requirements.txt, if present)

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ classifiers = [
5050
'Programming Language :: Python :: 3.11',
5151
'Programming Language :: Python :: 3.12',
5252
'Programming Language :: Python :: 3.13',
53+
'Programming Language :: Python :: 3.14',
5354
'Topic :: Software Development :: Libraries :: Python Modules',
5455
]
5556
requires-python = ">=3.8"

requirements.txt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@
66

77
# Direct dependencies for installation (must be consistent with minimum-constraints-install.txt)
88

9-
# The typing-extensions features used by nocaselist are in standard Python on Python>=3.10
10-
# nocaselist 2.0 requires typing-extensions>=3.10
11-
# safety 3.0 requires typing-extensions>=4.7.1
12-
typing-extensions>=4.7.1; python_version >= '3.8' and python_version <= '3.9'
9+
# typing-extensions 4.14.0 removed support for Python 3.8
10+
typing-extensions>=4.13.2; python_version == '3.8'
11+
typing-extensions>=4.14.1; python_version >= '3.9'
1312

1413

1514
# Indirect dependencies for installation that are needed for some reason (must be consistent with minimum-constraints-install.txt)

0 commit comments

Comments
 (0)