diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4c74c1c6..22f314a5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -35,7 +35,7 @@ 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.0-rc.1\" ], \ \"package_level\": [ \"minimum\", \"latest\" ] \ }" >> $GITHUB_OUTPUT; \ else \ @@ -49,6 +49,16 @@ jobs: \"python-version\": \"3.8\", \ \"package_level\": \"latest\" \ }, \ + { \ + \"os\": \"ubuntu-latest\", \ + \"python-version\": \"3.13.0-rc.1\", \ + \"package_level\": \"minimum\" \ + }, \ + { \ + \"os\": \"ubuntu-latest\", \ + \"python-version\": \"3.13.0-rc.1\", \ + \"package_level\": \"latest\" \ + }, \ { \ \"os\": \"macos-latest\", \ \"python-version\": \"3.8\", \ @@ -74,6 +84,16 @@ jobs: \"python-version\": \"3.12\", \ \"package_level\": \"latest\" \ }, \ + { \ + \"os\": \"macos-latest\", \ + \"python-version\": \"3.13.0-rc.1\", \ + \"package_level\": \"minimum\" \ + }, \ + { \ + \"os\": \"macos-latest\", \ + \"python-version\": \"3.13.0-rc.1\", \ + \"package_level\": \"latest\" \ + }, \ { \ \"os\": \"windows-latest\", \ \"python-version\": \"3.8\", \ @@ -88,6 +108,16 @@ jobs: \"os\": \"windows-latest\", \ \"python-version\": \"3.12\", \ \"package_level\": \"latest\" \ + }, \ + { \ + \"os\": \"windows-latest\", \ + \"python-version\": \"3.13.0-rc.1\", \ + \"package_level\": \"minimum\" \ + }, \ + { \ + \"os\": \"windows-latest\", \ + \"python-version\": \"3.13.0-rc.1\", \ + \"package_level\": \"latest\" \ } \ ] \ }" >> $GITHUB_OUTPUT; \ diff --git a/base-requirements.txt b/base-requirements.txt index 124794cd..4ae4dcd6 100644 --- a/base-requirements.txt +++ b/base-requirements.txt @@ -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 diff --git a/changes/612.feature.rst b/changes/612.feature.rst new file mode 100644 index 00000000..7ef96724 --- /dev/null +++ b/changes/612.feature.rst @@ -0,0 +1 @@ +Added support for and tests on Python 3.13.0-rc.1. diff --git a/changes/612.fix.rst b/changes/612.fix.rst new file mode 100644 index 00000000..bc3cbe1a --- /dev/null +++ b/changes/612.fix.rst @@ -0,0 +1,2 @@ +Increased minimum versions of PyYAML to 6.0.2 and pyrsistent to 0.20.0 to fix +install errors with Python 3.13 on Windows. diff --git a/dev-requirements.txt b/dev-requirements.txt index 6510ef51..a20bca70 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -80,13 +80,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 lazy-object-proxy>=1.4.3 -wrapt>=1.14 +wrapt>=1.15 # platformdirs is also used by tox platformdirs>=4.1.0 # isort 4.3.8 fixes an issue with py310 and works on py310 (Note that isort 5.10.0 has official support for py310) diff --git a/minimum-constraints-develop.txt b/minimum-constraints-develop.txt index 543f995d..6fd82af9 100644 --- a/minimum-constraints-develop.txt +++ b/minimum-constraints-develop.txt @@ -69,13 +69,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 lazy-object-proxy==1.4.3 -wrapt==1.14 +wrapt==1.15 platformdirs==4.1.0 isort==4.3.8 tomlkit==0.10.1 diff --git a/minimum-constraints-install.txt b/minimum-constraints-install.txt index 8c38056e..66766522 100644 --- a/minimum-constraints-install.txt +++ b/minimum-constraints-install.txt @@ -7,7 +7,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 install (must be consistent with requirements.txt) @@ -28,7 +28,7 @@ click-option-group==0.5.6 prompt-toolkit==3.0.13 # PyYAML is pulled in by zhmccli, zhmcclient, yamlloader -PyYAML==5.3.1 +PyYAML==6.0.2 jsonschema==3.1.0 yamlloader==0.5.5 @@ -39,7 +39,7 @@ urllib3==1.26.19 # Indirect dependencies for install that are needed for some reason (must be consistent with requirements.txt) -pyrsistent==0.15.1 +pyrsistent==0.20.0 # All other indirect dependencies for install that are not in requirements.txt diff --git a/pyproject.toml b/pyproject.toml index bbcdf8af..d859348e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -60,6 +60,7 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", ] requires-python = ">=3.8" dynamic = ["version", "dependencies", "optional-dependencies"] diff --git a/requirements.txt b/requirements.txt index d71dece1..7e3891a4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -26,14 +26,12 @@ click-option-group>=0.5.6 prompt-toolkit>=3.0.13 -# PyYAML 5.3.x has wheel archives for Python 2.7, 3.5 - 3.9 -# PyYAML 5.4.x has wheel archives for Python 2.7, 3.6 - 3.9 -# PyYAML 6.0.0 has wheel archives for Python 3.6 - 3.11 -# PyYAML 6.0.1 has wheel archives for Python 3.6 - 3.12 +# PyYAML is pulled in by zhmccli, zhmcclient, yamlloader +# PyYAML 6.0 has wheel archives for Python 3.6 - 3.11 # PyYAML versions without wheel archives fail install since Cython 3 was # released, see https://github.com/yaml/pyyaml/issues/724. -PyYAML>=5.3.1,!=5.4.0,!=5.4.1; python_version <= '3.11' -PyYAML>=5.3.1,!=5.4.0,!=5.4.1,!=6.0.0; python_version >= '3.12' +# PyYAML 6.0.2 provides wheel archives for Python 3.13 on Windows +PyYAML>=6.0.2 jsonschema>=3.1.0 yamlloader>=0.5.5 @@ -44,4 +42,5 @@ urllib3>=1.26.19 # Indirect dependencies for install that are needed for some reason (must be consistent with minimum-constraints-install.txt) # pyrsistent is used by jsonschema 3.x (no longer by jsonschema 4.x) -pyrsistent>=0.15.1 +# pyrsistent 0.20.0 has official support for Python 3.12 +pyrsistent>=0.20.0 diff --git a/tox.ini b/tox.ini index 0bf27249..3cbfaf5b 100644 --- a/tox.ini +++ b/tox.ini @@ -14,6 +14,7 @@ envlist = py310 py311 py312 + py313 win64_py38_32 win64_py38_64 win64_py39_32 @@ -24,6 +25,8 @@ envlist = win64_py311_64 win64_py312_32 win64_py312_64 + win64_py313_32 + win64_py313_64 skip_missing_interpreters = true @@ -82,6 +85,10 @@ basepython = python3.11 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. @@ -144,3 +151,15 @@ platform = win32 basepython = python setenv = PATH = C:\Python312-x64;{env:PATH} + +[testenv:win64_py313_32] +platform = win32 +basepython = python +setenv = + PATH = C:\Python313;{env:PATH} + +[testenv:win64_py313_64] +platform = win32 +basepython = python +setenv = + PATH = C:\Python313-x64;{env:PATH}