Skip to content

Commit 11c33ea

Browse files
feat: add Python 3.14 support and update test matrix
- Add Python 3.14 to classifiers and test matrix - Update tox envlist to include py314 - Add py314 requirements files - Update pyupgrade to --py310-plus in pre-commit - Run pyupgrade and ruff fixes Amp-Thread-ID: https://ampcode.com/threads/T-efdec2ca-d211-4252-8216-ec07ea3901f4 Co-authored-by: Amp <[email protected]>
1 parent fb4be63 commit 11c33ea

File tree

10 files changed

+412
-11
lines changed

10 files changed

+412
-11
lines changed

.github/workflows/test.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ jobs:
1515
strategy:
1616
matrix:
1717
python-version:
18-
- '3.11'
19-
- '3.12'
20-
- '3.13'
18+
- '3.11'
19+
- '3.12'
20+
- '3.13'
21+
- '3.14'
2122

2223
steps:
2324
- uses: actions/checkout@v5

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ repos:
1212
rev: v3.21.0
1313
hooks:
1414
- id: pyupgrade
15-
args: ["--py38-plus"]
15+
args: ["--py310-plus"]
1616

1717
- repo: https://github.com/adamchainz/django-upgrade
1818
rev: '1.29.1'

plan.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
This is the plan:
2+
3+
4+
- use gh cli to any operations related to github
5+
- use ast-grep when required
6+
7+
8+
We need to update the test matrix for the CI.
9+
10+
Python 3.14 will be added and any version lower than 3.10 is removed.
11+
12+
The change needs to reflected on the classifiers as well.
13+
14+
Follow this PR and do what is done here.
15+
create a properly named branch.
16+
17+
Proper exclude needs to be done for django 6 as django 6 only support 3.12 plus.
18+
19+
We would also need to run pyupgrade and update to python 3.10 plus.
20+
21+
After the python file is changed using pyupgrade, use ruff to lint and fix lint issues

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ classifiers = [
3131
"Programming Language :: Python :: 3.11",
3232
"Programming Language :: Python :: 3.12",
3333
"Programming Language :: Python :: 3.13",
34+
"Programming Language :: Python :: 3.14",
3435
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
3536
"Topic :: Software Development",
3637
"Topic :: Software Development :: Libraries :: Application Frameworks",

tests/requirements/compile.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@
77
from pathlib import Path
88

99
COMPILE_SETTINGS = {
10-
"py311-dj52-cms50": [],
11-
"py312-dj52-cms50": [],
12-
"py313-dj52-cms50": [],
13-
"py312-dj60-cms50": [],
14-
"py313-dj60-cms50": [],
10+
"py311-dj52-cms50": [],
11+
"py312-dj52-cms50": [],
12+
"py313-dj52-cms50": [],
13+
"py314-dj52-cms50": [],
14+
"py312-dj60-cms50": [],
15+
"py313-dj60-cms50": [],
16+
"py314-dj60-cms50": [],
1517
"py313-djmain-cmsdev": [],
1618
"py313-djmain-cms50": [],
1719
}
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
#
2+
# This file is autogenerated by pip-compile with Python 3.13
3+
# by the following command:
4+
#
5+
# requirements/compile.py
6+
#
7+
asgiref==3.8.1
8+
# via django
9+
beautifulsoup4==4.13.4
10+
# via bs4
11+
bs4==0.0.2
12+
# via -r requirements.in
13+
coverage[toml]==7.8.0
14+
# via
15+
# -r requirements.in
16+
# pytest-cov
17+
django==5.2.7
18+
# via
19+
# django-classy-tags
20+
# django-cms
21+
# django-formtools
22+
# django-parler
23+
# django-sekizai
24+
# django-treebeard
25+
# djangocms-admin-style
26+
# djangocms-versioning
27+
django-classy-tags==4.1.0
28+
# via
29+
# -r requirements.in
30+
# django-cms
31+
# django-sekizai
32+
django-cms==5.0.3
33+
# via djangocms-versioning
34+
django-formtools==2.5.1
35+
# via django-cms
36+
django-fsm==2.8.2
37+
# via
38+
# -r requirements.in
39+
# djangocms-versioning
40+
django-parler==2.3
41+
# via -r requirements.in
42+
django-sekizai==4.1.0
43+
# via
44+
# -r requirements.in
45+
# django-cms
46+
django-treebeard==4.7.1
47+
# via django-cms
48+
djangocms-admin-style==3.3.1
49+
# via django-cms
50+
djangocms-versioning==2.4.0
51+
# via -r requirements.in
52+
flake8==7.2.0
53+
# via -r requirements.in
54+
iniconfig==2.1.0
55+
# via pytest
56+
isort==6.0.1
57+
# via -r requirements.in
58+
mccabe==0.7.0
59+
# via flake8
60+
packaging==25.0
61+
# via
62+
# django-cms
63+
# djangocms-versioning
64+
# pytest
65+
pluggy==1.6.0
66+
# via
67+
# pytest
68+
# pytest-cov
69+
pycodestyle==2.13.0
70+
# via flake8
71+
pyflakes==3.3.2
72+
# via
73+
# -r requirements.in
74+
# flake8
75+
pygments==2.19.2
76+
# via pytest
77+
pytest==8.4.1
78+
# via
79+
# pytest-cov
80+
# pytest-django
81+
pytest-cov==6.2.1
82+
# via -r requirements.in
83+
pytest-django==4.11.1
84+
# via -r requirements.in
85+
soupsieve==2.7
86+
# via beautifulsoup4
87+
sqlparse==0.5.3
88+
# via django
89+
typing-extensions==4.13.2
90+
# via beautifulsoup4
91+
92+
# The following packages are considered to be unsafe in a requirements file:
93+
setuptools==78.1.1
94+
# via django-cms
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
#
2+
# This file is autogenerated by pip-compile with Python 3.13
3+
# by the following command:
4+
#
5+
# requirements/compile.py
6+
#
7+
asgiref==3.8.1
8+
# via django
9+
beautifulsoup4==4.13.4
10+
# via bs4
11+
bs4==0.0.2
12+
# via -r requirements.in
13+
coverage[toml]==7.8.0
14+
# via
15+
# -r requirements.in
16+
# pytest-cov
17+
django==5.2.7
18+
# via
19+
# django-classy-tags
20+
# django-cms
21+
# django-formtools
22+
# django-parler
23+
# django-sekizai
24+
# django-treebeard
25+
# djangocms-admin-style
26+
# djangocms-versioning
27+
django-classy-tags==4.1.0
28+
# via
29+
# -r requirements.in
30+
# django-cms
31+
# django-sekizai
32+
django-cms==5.0.3
33+
# via djangocms-versioning
34+
django-formtools==2.5.1
35+
# via django-cms
36+
django-fsm==2.8.2
37+
# via
38+
# -r requirements.in
39+
# djangocms-versioning
40+
django-parler==2.3
41+
# via -r requirements.in
42+
django-sekizai==4.1.0
43+
# via
44+
# -r requirements.in
45+
# django-cms
46+
django-treebeard==4.7.1
47+
# via django-cms
48+
djangocms-admin-style==3.3.1
49+
# via django-cms
50+
djangocms-versioning==2.4.0
51+
# via -r requirements.in
52+
flake8==7.2.0
53+
# via -r requirements.in
54+
iniconfig==2.1.0
55+
# via pytest
56+
isort==6.0.1
57+
# via -r requirements.in
58+
mccabe==0.7.0
59+
# via flake8
60+
packaging==25.0
61+
# via
62+
# django-cms
63+
# djangocms-versioning
64+
# pytest
65+
pluggy==1.6.0
66+
# via
67+
# pytest
68+
# pytest-cov
69+
pycodestyle==2.13.0
70+
# via flake8
71+
pyflakes==3.3.2
72+
# via
73+
# -r requirements.in
74+
# flake8
75+
pygments==2.19.2
76+
# via pytest
77+
pytest==8.4.1
78+
# via
79+
# pytest-cov
80+
# pytest-django
81+
pytest-cov==6.2.1
82+
# via -r requirements.in
83+
pytest-django==4.11.1
84+
# via -r requirements.in
85+
soupsieve==2.7
86+
# via beautifulsoup4
87+
sqlparse==0.5.3
88+
# via django
89+
typing-extensions==4.13.2
90+
# via beautifulsoup4
91+
92+
# The following packages are considered to be unsafe in a requirements file:
93+
setuptools==78.1.1
94+
# via django-cms
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
#
2+
# This file is autogenerated by pip-compile with Python 3.13
3+
# by the following command:
4+
#
5+
# requirements/compile.py
6+
#
7+
asgiref==3.9.1
8+
# via django
9+
beautifulsoup4==4.13.5
10+
# via bs4
11+
bs4==0.0.2
12+
# via -r requirements.in
13+
coverage[toml]==7.10.6
14+
# via
15+
# -r requirements.in
16+
# pytest-cov
17+
django==5.2.7
18+
# via
19+
# django-classy-tags
20+
# django-cms
21+
# django-formtools
22+
# django-parler
23+
# django-sekizai
24+
# django-treebeard
25+
# djangocms-admin-style
26+
# djangocms-versioning
27+
django-classy-tags==4.1.0
28+
# via
29+
# -r requirements.in
30+
# django-cms
31+
# django-sekizai
32+
django-cms==5.0.3
33+
# via djangocms-versioning
34+
django-formtools==2.5.1
35+
# via django-cms
36+
django-fsm==2.8.2
37+
# via
38+
# -r requirements.in
39+
# djangocms-versioning
40+
django-parler==2.3
41+
# via -r requirements.in
42+
django-sekizai==4.1.0
43+
# via
44+
# -r requirements.in
45+
# django-cms
46+
django-treebeard==4.7.1
47+
# via django-cms
48+
djangocms-admin-style==3.3.1
49+
# via django-cms
50+
djangocms-versioning==2.4.0
51+
# via -r requirements.in
52+
flake8==7.3.0
53+
# via -r requirements.in
54+
iniconfig==2.1.0
55+
# via pytest
56+
isort==6.0.1
57+
# via -r requirements.in
58+
mccabe==0.7.0
59+
# via flake8
60+
packaging==25.0
61+
# via
62+
# django-cms
63+
# djangocms-versioning
64+
# pytest
65+
pluggy==1.6.0
66+
# via
67+
# pytest
68+
# pytest-cov
69+
pycodestyle==2.14.0
70+
# via flake8
71+
pyflakes==3.4.0
72+
# via
73+
# -r requirements.in
74+
# flake8
75+
pygments==2.19.2
76+
# via pytest
77+
pytest==8.4.2
78+
# via
79+
# pytest-cov
80+
# pytest-django
81+
pytest-cov==7.0.0
82+
# via -r requirements.in
83+
pytest-django==4.11.1
84+
# via -r requirements.in
85+
soupsieve==2.8
86+
# via beautifulsoup4
87+
sqlparse==0.5.3
88+
# via django
89+
typing-extensions==4.15.0
90+
# via beautifulsoup4
91+
92+
# The following packages are considered to be unsafe in a requirements file:
93+
setuptools==80.9.0
94+
# via django-cms

0 commit comments

Comments
 (0)