Skip to content

Commit f9fa8e0

Browse files
committed
Added support for Python 3.13
Signed-off-by: Andreas Maier <andreas.r.maier@gmx.de>
1 parent a541a40 commit f9fa8e0

File tree

8 files changed

+58
-24
lines changed

8 files changed

+58
-24
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\" ], \
36+
\"python-version\": [ \"3.8\", \"3.9\", \"3.10\", \"3.11\", \"3.12\", \"3.13\" ], \
3737
\"package_level\": [ \"minimum\", \"latest\" ] \
3838
}" >> $GITHUB_OUTPUT; \
3939
else \
4040
echo "matrix={ \
4141
\"os\": [ \"ubuntu-latest\" ], \
42-
\"python-version\": [ \"3.8\", \"3.12\" ], \
42+
\"python-version\": [ \"3.8\", \"3.13\" ], \
4343
\"package_level\": [ \"minimum\", \"latest\" ], \
4444
\"include\": [ \
4545
{ \
@@ -64,7 +64,7 @@ jobs:
6464
}, \
6565
{ \
6666
\"os\": \"macos-latest\", \
67-
\"python-version\": \"3.12\", \
67+
\"python-version\": \"3.13\", \
6868
\"package_level\": \"minimum\" \
6969
}, \
7070
{ \
@@ -74,7 +74,7 @@ jobs:
7474
}, \
7575
{ \
7676
\"os\": \"windows-latest\", \
77-
\"python-version\": \"3.12\", \
77+
\"python-version\": \"3.13\", \
7878
\"package_level\": \"minimum\" \
7979
} \
8080
] \

base-requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@
88
pip>=23.3
99
setuptools>=70.0.0
1010
setuptools-scm[toml]>=8.1.0
11-
wheel>=0.38.1
11+
wheel>=0.41.3

dev-requirements.txt

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,23 @@ pytest-cov>=2.7.0
1818
coveralls>=3.3.0
1919

2020
# Safety CI by pyup.io
21-
# Safety 3.0.0 requires exact versions of authlib==1.2.0 and jwt==1.3.1.
22-
safety>=3.0.1
21+
# Safety 3.0.x pins pydantic to <2.0, preventing bug fixes.
22+
# pydantic 2.8.0 fixes an install issue on Python 3.13.
23+
safety>=3.1.0
24+
safety-schemas>=0.0.2,!=0.0.7
25+
pydantic>=2.8.0
2326

2427
# Click is used by safety
2528
# safety 2.2.0 requires Click >=8.0.2
2629
Click>=8.0.2
2730

2831
# PyYAML is pulled in by dparse
29-
# PyYAML 5.3.1 addressed issue 38100 reported by safety
30-
PyYAML>=5.3.1
32+
# PyYAML is also pulled in by dparse and python-coveralls
33+
# PyYAML 6.0 has wheel archives for Python 3.6 - 3.11
34+
# PyYAML 6.0.0 fails install since Cython 3 was released, see issue
35+
# https://github.com/yaml/pyyaml/issues/724.
36+
# PyYAML 6.0.2 provides wheel archives for Python 3.13 on Windows
37+
PyYAML>=6.0.2
3138

3239
# Tox
3340
# tox 3.17 requires six>=1.14.0 - covered in requirements.txt
@@ -54,11 +61,13 @@ sphinxcontrib-serializinghtml>=1.1.5; python_version == '3.8'
5461
sphinxcontrib-serializinghtml>=1.1.9; python_version >= '3.9'
5562
sphinxcontrib-websupport>=1.2.4
5663
autodocsumm>=0.2.12
57-
Babel>=2.9.1
64+
Babel>=2.11.0
5865

5966
# PyLint (no imports, invoked via pylint script)
60-
pylint>=3.0.1
61-
astroid>=3.0.1
67+
pylint>=3.0.1; python_version == '3.8'
68+
pylint>=3.3.1; python_version >= '3.9'
69+
astroid>=3.0.1; python_version == '3.8'
70+
astroid>=3.3.5; python_version >= '3.9'
6271
lazy-object-proxy>=1.4.3
6372
wrapt>=1.14
6473
# platformdirs is also used by tox

docs/changes.rst

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

3636
**Enhancements:**
3737

38+
* Added support for Python 3.13. This required increasing the minimum version
39+
of several packages needed for development. (issue #203)
40+
3841
* Added '__version_tuple__' with the integer versions. (related to issue #152)
3942

4043
* Dev: Changed from setup.py to using pyproject.toml. (issue #152)

minimum-constraints-develop.txt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@ pytest-cov==2.7.0
2626
coveralls==3.3.0
2727

2828
# Safety CI by pyup.io
29-
safety==3.0.1
30-
safety-schemas==0.0.1
29+
safety==3.1.0
30+
safety-schemas==0.0.2
3131
# TODO: Change to dparse 0.6.4 once released
3232
dparse==0.6.4b0
3333
ruamel.yaml==0.17.21
3434
Authlib==1.3.1
3535
marshmallow==3.15.0
36-
pydantic==1.10.13
36+
pydantic==2.8.0
3737
typer==0.12.0
3838
typer-cli==0.12.0
3939
typer-slim==0.12.0
@@ -43,7 +43,7 @@ psutil==6.0.0
4343
Click==8.0.2
4444

4545
# PyYAML is pulled in by dparse
46-
PyYAML==5.3.1
46+
PyYAML==6.0.2
4747

4848
# Tox
4949
tox==3.21.0
@@ -66,11 +66,13 @@ sphinxcontrib-serializinghtml==1.1.5; python_version == '3.8'
6666
sphinxcontrib-serializinghtml==1.1.9; python_version >= '3.9'
6767
sphinxcontrib-websupport==1.2.4
6868
autodocsumm==0.2.12
69-
Babel==2.9.1
69+
Babel==2.11.0
7070

7171
# PyLint (no imports, invoked via pylint script)
72-
pylint>=3.0.1
73-
astroid==3.0.1
72+
pylint==3.0.1; python_version == '3.8'
73+
pylint==3.3.1; python_version >= '3.9'
74+
astroid==3.0.1; python_version == '3.8'
75+
astroid==3.3.5; python_version >= '3.9'
7476
lazy-object-proxy==1.4.3
7577
wrapt==1.14
7678
platformdirs==4.1.0
@@ -135,11 +137,10 @@ MarkupSafe==2.0.0
135137
more-itertools==5.0.0
136138
pkginfo==1.4.2
137139
py==1.11.0
138-
pydantic==1.10.13
139140
pyparsing==2.4.7
140141
python-dateutil==2.6.0
141-
pyzmq==16.0.4; python_version <= '3.11'
142-
pyzmq==25.1.1; python_version >= '3.12'
142+
# pyzmq 26.1.0 added wheel archives for Python 3.13
143+
pyzmq==26.1.0
143144
requests==2.32.2
144145
requests-mock==1.6.0
145146
requests-toolbelt==0.8.0

minimum-constraints-install.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pip==23.3
1111
setuptools==70.0.0
1212
# Note on not specifying 'setuptools-scm[toml]': Extras cannot be in constraints files
1313
setuptools-scm==8.1.0
14-
wheel==0.38.1
14+
wheel==0.41.3
1515

1616

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

pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ requires = [
99
# minimum-constraints-install.txt
1010
"setuptools>=70.0.0",
1111
"setuptools-scm[toml]>=8.1.0",
12-
"wheel>=0.38.1"
12+
"wheel>=0.41.3"
1313
]
1414
build-backend = "setuptools.build_meta"
1515

@@ -49,6 +49,7 @@ classifiers = [
4949
'Programming Language :: Python :: 3.10',
5050
'Programming Language :: Python :: 3.11',
5151
'Programming Language :: Python :: 3.12',
52+
'Programming Language :: Python :: 3.13',
5253
'Topic :: Software Development :: Libraries :: Python Modules',
5354
]
5455
requires-python = ">=3.8"

tox.ini

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ envlist =
1313
py310
1414
py311
1515
py312
16+
py313
1617
win64_py38_32
1718
win64_py38_64
1819
win64_py39_32
@@ -23,11 +24,14 @@ envlist =
2324
win64_py311_64
2425
win64_py312_32
2526
win64_py312_64
27+
win64_py313_32
28+
win64_py313_64
2629
cygwin64_py38
2730
cygwin64_py39
2831
cygwin64_py310
2932
cygwin64_py311
3033
cygwin64_py312
34+
cygwin64_py313
3135

3236
# For Appveyor, missing interpreters should fail. For local use, you may
3337
# want to allow to skip missing interpreters.
@@ -97,6 +101,10 @@ basepython = python3.11
97101
platform = linux2|darwin
98102
basepython = python3.12
99103

104+
[testenv:py313]
105+
platform = linux2|darwin
106+
basepython = python3.13
107+
100108
# Note: The basepython file paths for the win64* tox environments may need to
101109
# be customized.
102110

@@ -140,6 +148,14 @@ basepython = C:\Python312\python.exe
140148
platform = win32
141149
basepython = C:\Python312-x64\python.exe
142150

151+
[testenv:win64_py313_32]
152+
platform = win32
153+
basepython = C:\Python313\python.exe
154+
155+
[testenv:win64_py313_64]
156+
platform = win32
157+
basepython = C:\Python313-x64\python.exe
158+
143159
# Note: The 32-bit versions of CygWin do not work:
144160
# - On Python 3.6 and upwards, Tox returns success but does not do anything.
145161

@@ -162,3 +178,7 @@ basepython = python3.11
162178
[testenv:cygwin64_py312]
163179
platform = cygwin
164180
basepython = python3.12
181+
182+
[testenv:cygwin64_py313]
183+
platform = cygwin
184+
basepython = python3.13

0 commit comments

Comments
 (0)