Repository: pywbem/pywbemtools (language: python)

Issue:
Use official Python 3.13.0 for testing once released
Currently, we are using Python 3.13.0-rc.1 in the test workflow.

This ticket is to move to the officially released Python 3.13.0. Planned GA date is 2024-10-01 (see https://peps.python.org/pep-0719).

Also, reduce the set of test combinations for normal tests again.


Discussion / hints:

Fix patch:
diff --git a/Makefile b/Makefile
index b75bec5a..82d7a740 100644
--- a/Makefile
+++ b/Makefile
@@ -308,12 +308,12 @@ dist_dependent_files_all := \
     README.md \
     README_PYPI.md \
     requirements.txt \
-		pyproject.toml \
+    pyproject.toml \
     $(wildcard $( package_name)/*.py) \
     $(wildcard $(package_name)/*/*.py) \
     $(wildcard $(package_name)/*/*/*.py) \
 
-# The actually used dependency list, which removes the version file. Reason is that the
+# The dependency list actually used, which removes the version file. Reason is that the
 # version file is rebuilt during build.
 dist_dependent_files := $(filter-out $(version_file), $(dist_dependent_files_all))
 
diff --git a/base-requirements.txt b/base-requirements.txt
index 2ae27727..ce35623d 100644
--- a/base-requirements.txt
+++ b/base-requirements.txt
@@ -7,4 +7,4 @@
 pip>=23.3
 setuptools>=70.0.0
 setuptools-scm>=8.1.0
-wheel>=0.38.1
+wheel>=0.41.3
diff --git a/dev-requirements.txt b/dev-requirements.txt
index ef40591f..64b33321 100644
--- a/dev-requirements.txt
+++ b/dev-requirements.txt
@@ -1,8 +1,8 @@
 # Pip requirements file for development dependencies.
 
 
-# Direct dependencies for development and indirect dependencies for development
-# that are needed for some reason (must be consistent with minimum-constraints-develop.txt)
+# Direct and necessary indirect dependencies for development (must be consistent
+# with minimum-constraints-develop.txt)
 
 # Build distribution archive
 build>=1.1.1
@@ -56,7 +56,7 @@ 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>=2.17.7; python_version <= '3.11'
@@ -64,7 +64,7 @@ pylint>=3.2.0; python_version >= '3.12'
 astroid>=2.15.8; python_version <= '3.11'
 astroid>=3.2.0; python_version >= '3.12'
 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/docs/changes.rst b/docs/changes.rst
index 54f9e9b5..7b0eab97 100644
--- a/docs/changes.rst
+++ b/docs/changes.rst
@@ -16,9 +16,10 @@ Released: not yet
 
 * Removed support for Python 2.7, 3.6, and 3.7. (issue #1390)
 
-* Removed setup.py and therefore the possibility to run setup.py as a command,
-  for example to install or test pywbemtools. Running setup.py as a command has
-  been deprecated by Python.
+* The migration from setup.py to pyproject.toml removed the possibility to run
+  setup.py as a command, for example to install or test pywbemtools. Note that
+  running setup.py as a command has been deprecated by the Python setuptools
+  team.
 
 **Deprecations:**
 
@@ -32,8 +33,13 @@ Released: not yet
   with Python 3.9-3.11, by running it without login shell. Added Python 3.11 on
   MacOS to the normal tests.
 
+* Increased minimum versions of PyYAML to 6.0.2 and psutil to 6.0.0, to fix
+  install errors with Python 3.13 on Windows. (related to issue #3225)
+
 **Enhancements:**
 
+* Added support for and testing on Python 3.13.0-rc.1. (issue #1429)
+
 * Development: Changed release process to use a GitHub Actions workflow
   add as documented in DEVELOP.md. (issue #1395)
 
@@ -50,8 +56,7 @@ Released: not yet
 
 * Development: The pywbem version during development now uses an automatically
   calculated dev number and the git commit hash, e.g. ``1.4.0a1.dev9+gad875911``.
-  Note that the pywbem version numbers for packages released to Pypi is
-  unchanged: M.N.U.
+  The pywbem version numbers for packages released to Pypi are unchanged: M.N.U.
   Updated the release description in DEVELOP.md to no longer edit the version
   file.
 
diff --git a/minimum-constraints-develop.txt b/minimum-constraints-develop.txt
index a6bebaec..81d35ff3 100644
--- a/minimum-constraints-develop.txt
+++ b/minimum-constraints-develop.txt
@@ -65,7 +65,7 @@ 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==2.17.7; python_version <= '3.11'
@@ -73,7 +73,7 @@ pylint==3.2.0; python_version >= '3.12'
 astroid==2.15.8; python_version <= '3.11'
 astroid==3.2.0; python_version >= '3.12'
 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 1a4b9182..3fa11b02 100644
--- a/minimum-constraints-install.txt
+++ b/minimum-constraints-install.txt
@@ -13,7 +13,7 @@
 pip==23.3
 setuptools==70.0.0
 setuptools-scm==8.1.0
-wheel==0.38.1
+wheel==0.41.3
 
 
 # Direct dependencies for install (must be consistent with requirements.txt)
@@ -35,12 +35,11 @@ tabulate==0.8.2; python_version <= '3.9'
 tabulate==0.8.8; python_version >= '3.10'
 
 toposort==1.6
-psutil==5.6.6; python_version <= '3.9'
-psutil==5.8.0; python_version >= '3.10'
+psutil==6.0.0
 
 prompt-toolkit==3.0.13
 
-PyYAML==5.3.1
+PyYAML==6.0.2
 
 yamlloader==0.5.5
 # Packaging 21.0 is required by safety 2.2.0
diff --git a/pyproject.toml b/pyproject.toml
index ddfd7db4..a8265625 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -52,6 +52,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"]
diff --git a/requirements.txt b/requirements.txt
index 9e674a8e..5acf415a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -34,21 +34,18 @@ tabulate>=0.8.2; python_version <= '3.9'
 tabulate>=0.8.8; python_version >= '3.10'
 
 toposort>=1.6
-# psutil 5.8.0 fixes an install error on Python 3.10
-psutil>=5.6.6; python_version <= '3.9'
-psutil>=5.8.0; python_version >= '3.10'
+# psutil 6.0.0 fixes an install error on Python 3.13 on Windows
+psutil>=6.0.0
 
 # prompt-toolkit>=3.0 may cause WinError 995 on py38 on Windows (issue #690).
 prompt-toolkit>=3.0.13
 
 # PyYAML is also pulled in by dparse and python-coveralls
-# 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 6.0 has wheel archives for Python 3.6 - 3.11
-# PyYAML 5.4 and 6.0.0 fails install since Cython 3 was released, see issue
+# PyYAML 6.0.0 fails install since Cython 3 was released, see issue
 #   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
 
 yamlloader>=0.5.5
 
diff --git a/tox.ini b/tox.ini
index 9041cc16..0e796f04 100644
--- a/tox.ini
+++ b/tox.ini
@@ -15,6 +15,7 @@ envlist =
     py310
     py311
     py312
+    py313
     win64_py38_32
     win64_py38_64
     win64_py39_32
@@ -25,12 +26,15 @@ envlist =
     win64_py311_64
     win64_py312_32
     win64_py312_64
+    win64_py313_32
+    win64_py313_64
     cygwin32_py38
     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.
@@ -102,6 +106,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.
 
@@ -145,6 +153,14 @@ basepython = C:\Python312\python.exe
 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
+
 [testenv:cygwin32_py38]
 platform = cygwin
 basepython = python3.8
@@ -168,3 +184,7 @@ basepython = python3.11
 [testenv:cygwin64_py312]
 platform = cygwin
 basepython = python3.12
+
+[testenv:cygwin64_py313]
+platform = cygwin
+basepython = python3.13


Test patch:
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 5fc1a591..bc84e584 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -40,7 +40,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 \
@@ -64,6 +64,16 @@ jobs:
                 \"python-version\": \"3.10\", \
                 \"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\", \
@@ -79,6 +89,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; \