Skip to content

Commit

Permalink
Added support for Python 3.13
Browse files Browse the repository at this point in the history
Signed-off-by: Andreas Maier <[email protected]>
  • Loading branch information
andy-maier committed Oct 28, 2024
1 parent 6849b15 commit 0d6091a
Show file tree
Hide file tree
Showing 8 changed files with 97 additions and 25 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,13 @@ jobs:
if [[ "${{ github.event_name }}" == "schedule" || "${{ github.head_ref }}" =~ ^release_ ]]; then \
echo "matrix={ \
\"os\": [ \"ubuntu-latest\", \"macos-latest\", \"windows-latest\" ], \
\"python-version\": [ \"3.8\", \"3.9\", \"3.10\", \"3.11\", \"3.12\" ], \
\"python-version\": [ \"3.8\", \"3.9\", \"3.10\", \"3.11\", \"3.12\", \"3.13\" ], \
\"package_level\": [ \"minimum\", \"latest\" ] \
}" >> $GITHUB_OUTPUT; \
else \
echo "matrix={ \
\"os\": [ \"ubuntu-latest\" ], \
\"python-version\": [ \"3.8\", \"3.12\" ], \
\"python-version\": [ \"3.8\", \"3.13\" ], \
\"package_level\": [ \"minimum\", \"latest\" ], \
\"include\": [ \
{ \
Expand All @@ -60,7 +60,7 @@ jobs:
}, \
{ \
\"os\": \"macos-latest\", \
\"python-version\": \"3.12\", \
\"python-version\": \"3.13\", \
\"package_level\": \"minimum\" \
}, \
{ \
Expand All @@ -70,7 +70,7 @@ jobs:
}, \
{ \
\"os\": \"windows-latest\", \
\"python-version\": \"3.12\", \
\"python-version\": \"3.13\", \
\"package_level\": \"minimum\" \
} \
] \
Expand Down
2 changes: 1 addition & 1 deletion base-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
pip>=23.3
setuptools>=70.0.0
setuptools-scm[toml]>=8.1.0
wheel>=0.38.1
wheel>=0.41.3
23 changes: 15 additions & 8 deletions dev-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,19 @@ coveralls>=3.3.0

# Click is used by safety
# Safety 3.0.0 requires exact versions of authlib==1.2.0 and jwt==1.3.1.
safety>=3.0.1
# Safety 3.0.x pins pydantic to <2.0, preventing bug fixes.
# pydantic 2.8.0 fixes an install issue on Python 3.13.
safety>=3.1.0
safety-schemas>=0.0.2,!=0.0.7
pydantic>=2.8.0

# PyYAML is pulled in by dparse
# PyYAML 5.3.1 addressed issue 38100 reported by safety
# PyYAML 5.3 has wheel archives for Python 2.7, 3.5 - 3.9
# PyYAML 5.4 has wheel archives for Python 2.7, 3.6 - 3.9
# PyYAML is also pulled in by dparse and python-coveralls
# PyYAML 6.0 has wheel archives for Python 3.6 - 3.11
PyYAML>=5.3.1
# PyYAML 6.0.0 fails install since Cython 3 was released, see issue
# https://github.com/yaml/pyyaml/issues/724.
# PyYAML 6.0.2 provides wheel archives for Python 3.13 on Windows
PyYAML>=6.0.2

# Tox
# tox 3.21 requires importlib-metadata>=0.12 on Python<=3.7
Expand All @@ -55,11 +60,13 @@ sphinxcontrib-serializinghtml>=1.1.5; python_version == '3.8'
sphinxcontrib-serializinghtml>=1.1.9; python_version >= '3.9'
sphinxcontrib-websupport>=1.2.4
autodocsumm>=0.2.12
Babel>=2.9.1
Babel>=2.11.0

# PyLint (no imports, invoked via pylint script)
pylint>=3.0.1
astroid>=3.0.1
pylint>=3.0.1; python_version == '3.8'
pylint>=3.3.1; python_version >= '3.9'
astroid>=3.0.1; python_version == '3.8'
astroid>=3.3.5; python_version >= '3.9'
lazy-object-proxy>=1.4.3
wrapt>=1.14
# platformdirs is also used by tox
Expand Down
3 changes: 3 additions & 0 deletions docs/changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ Released: not yet

**Enhancements:**

* Added support for Python 3.13. This required increasing the minimum version
of several packages needed for development. (issue #225)

* Added '__version_tuple__' with the integer versions. (related to issue #180)

* Dev: Changed from setup.py to using pyproject.toml. (issue #180)
Expand Down
21 changes: 11 additions & 10 deletions minimum-constraints-develop.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,21 +28,21 @@ pytest-cov==2.7.0
coveralls==3.3.0

# Safety CI by pyup.io
safety==3.0.1
safety-schemas==0.0.1
safety==3.1.0
safety-schemas==0.0.2
# TODO: Change to dparse 0.6.4 once released
dparse==0.6.4b0
ruamel.yaml==0.17.21
Authlib==1.3.1
marshmallow==3.15.0
pydantic==1.10.13
pydantic==2.8.0
typer==0.12.0
typer-cli==0.12.0
typer-slim==0.12.0
psutil==6.0.0

# PyYAML is pulled in by dparse
PyYAML==5.3.1
PyYAML==6.0.2

# Click is used by safety
Click==8.0.2
Expand All @@ -68,11 +68,13 @@ sphinxcontrib-serializinghtml==1.1.5; python_version == '3.8'
sphinxcontrib-serializinghtml==1.1.9; python_version >= '3.9'
sphinxcontrib-websupport==1.2.4
autodocsumm==0.2.12
Babel==2.9.1
Babel==2.11.0

# PyLint (no imports, invoked via pylint script)
pylint>=3.0.1
astroid==3.0.1
pylint==3.0.1; python_version == '3.8'
pylint==3.3.1; python_version >= '3.9'
astroid==3.0.1; python_version == '3.8'
astroid==3.3.5; python_version >= '3.9'
lazy-object-proxy==1.4.3
wrapt==1.14
platformdirs==4.1.0
Expand Down Expand Up @@ -135,11 +137,10 @@ MarkupSafe==2.0.0
more-itertools==5.0.0
pkginfo==1.4.2
py==1.11.0
pydantic==1.10.13
pyparsing==2.4.7
python-dateutil==2.6.0
pyzmq==16.0.4; python_version <= '3.11'
pyzmq==25.1.1; python_version >= '3.12'
# pyzmq 26.1.0 added wheel archives for Python 3.13
pyzmq==26.1.0
qtconsole==4.2.1
requests==2.32.2
requests-toolbelt==0.8.0
Expand Down
2 changes: 1 addition & 1 deletion minimum-constraints-install.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ pip==23.3
setuptools==70.0.0
# Note on not specifying 'setuptools-scm[toml]': Extras cannot be in constraints files
setuptools-scm==8.1.0
wheel==0.38.1
wheel==0.41.3


# Direct dependencies for installation (must be consistent with requirements.txt)
Expand Down
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ requires = [
# minimum-constraints-install.txt
"setuptools>=70.0.0",
"setuptools-scm[toml]>=8.1.0",
"wheel>=0.38.1"
"wheel>=0.41.3"
]
build-backend = "setuptools.build_meta"

Expand Down Expand Up @@ -49,6 +49,7 @@ classifiers = [
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
'Programming Language :: Python :: 3.13',
'Topic :: Software Development :: Libraries :: Python Modules',
]
requires-python = ">=3.8"
Expand Down
60 changes: 60 additions & 0 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,27 @@ envlist =
py38
py39
py310
py311
py312
py313
win64_py38_32
win64_py38_64
win64_py39_32
win64_py39_64
win64_py310_32
win64_py310_64
win64_py311_32
win64_py311_64
win64_py312_32
win64_py312_64
win64_py313_32
win64_py313_64
cygwin64_py38
cygwin64_py39
cygwin64_py310
cygwin64_py311
cygwin64_py312
cygwin64_py313

# For Appveyor, missing interpreters should fail. For local use, you may
# want to allow to skip missing interpreters.
Expand Down Expand Up @@ -81,6 +93,18 @@ basepython = python3.9
platform = linux2|darwin
basepython = python3.10

[testenv:py311]
platform = linux2|darwin
basepython = python3.11

[testenv:py312]
platform = linux2|darwin
basepython = python3.12

[testenv:py313]
platform = linux2|darwin
basepython = python3.13

# Note: The basepython file paths for the win64* tox environments may need to
# be customized.

Expand Down Expand Up @@ -108,6 +132,30 @@ basepython = C:\Python310\python.exe
platform = win32
basepython = C:\Python310-x64\python.exe

[testenv:win64_py311_32]
platform = win32
basepython = C:\Python311\python.exe

[testenv:win64_py311_64]
platform = win32
basepython = C:\Python311-x64\python.exe

[testenv:win64_py312_32]
platform = win32
basepython = C:\Python312\python.exe

[testenv:win64_py312_64]
platform = win32
basepython = C:\Python312-x64\python.exe

[testenv:win64_py313_32]
platform = win32
basepython = C:\Python313\python.exe

[testenv:win64_py313_64]
platform = win32
basepython = C:\Python313-x64\python.exe

# Note: The 32-bit versions of CygWin do not work:
# - On Python 3.6 and upwards, Tox returns success but does not do anything.

Expand All @@ -122,3 +170,15 @@ basepython = python3.9
[testenv:cygwin64_py310]
platform = cygwin
basepython = python3.10

[testenv:cygwin64_py311]
platform = cygwin
basepython = python3.11

[testenv:cygwin64_py312]
platform = cygwin
basepython = python3.12

[testenv:cygwin64_py313]
platform = cygwin
basepython = python3.13

0 comments on commit 0d6091a

Please sign in to comment.