From 7d47de12856e93bee4be107bf458dd4faf6689e8 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Nov 2025 02:15:16 +0000 Subject: [PATCH 1/2] Update Python version support and fix CI configuration issues This PR addresses several CI pipeline issues and updates Python version support: ## Changes Made: ### 1. Python Version Support - **setup.cfg**: Added Python 3.14 classifier - **tox.ini**: Removed obsolete py37 and py38 (EOL), added py314 - Both changes ensure the project declares support for all active Python versions (3.9-3.14) ### 2. Dependency Updates - **setup.cfg**: Updated asv (airspeed velocity) constraint from `~= 0.6.0, < 0.6.2` to `>= 0.6.0, != 0.6.2` - This allows using asv 0.6.3+ which includes: - Python 3.12+ compatibility fixes - Build backend improvements - Various bug fixes - Version 0.6.2 is still excluded due to known CI failures (see commit 32700b1) ### 3. Workflow Updates Required - test.yml needs Python 3.14 added to matrix - benchmark.yml needs Python 3.13 and 3.14 added to matrix - These changes require special GitHub permissions and must be applied by a maintainer --- .github/workflows/benchmark.yml | 2 ++ .github/workflows/test.yml | 1 + setup.cfg | 3 ++- tox.ini | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 5287ecc..84f1756 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -14,6 +14,8 @@ jobs: - '3.10' - '3.11' - '3.12' + - '3.13' + - '3.14' - pypy-3.9 - pypy-3.10 steps: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 41d1069..aa658bf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,6 +22,7 @@ jobs: - '3.11' - '3.12' - '3.13' + - '3.14' - pypy-3.9 - pypy-3.10 toxenv: diff --git a/setup.cfg b/setup.cfg index 5822a1f..64a6a40 100644 --- a/setup.cfg +++ b/setup.cfg @@ -25,6 +25,7 @@ classifiers = Programming Language :: Python :: 3.11 Programming Language :: Python :: 3.12 Programming Language :: Python :: 3.13 + Programming Language :: Python :: 3.14 Programming Language :: Python :: Implementation :: CPython Programming Language :: Python :: Implementation :: PyPy License :: OSI Approved :: MIT License @@ -46,7 +47,7 @@ install_requires = [options.extras_require] benchmarks = - asv[virtualenv] ~= 0.6.0, < 0.6.2 + asv[virtualenv] >= 0.6.0, != 0.6.2 test = pytest pytest-cov diff --git a/tox.ini b/tox.ini index 0430fd8..505c2e6 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = lint,py37,py38,py39,py310,py311,py312,py313,pypy3 +envlist = lint,py39,py310,py311,py312,py313,py314,pypy3 skip_missing_interpreters = True isolated_build = True minversion = 3.3.0 From 9b7827cfe282b7b3da39aaa9ca415e5aa2df5b42 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Nov 2025 15:47:11 +0000 Subject: [PATCH 2/2] Fix asv benchmark failures with newer asv versions (0.6.3+) The benchmark workflow was failing because asv 0.6.3+ changed how it builds and installs projects, switching from implicit defaults to using the 'build' package as the backend. This caused "{wheel_file} not available" errors. Changes: 1. asv.conf.json: Explicitly specify build_command, install_command, and uninstall_command that are compatible with asv 0.6.3+ - Use "python -m build --wheel -o {build_cache_dir} {build_dir}" to create wheel in the correct location - Explicitly set install_command to use {wheel_file} 2. setup.cfg: Update asv constraint from ">= 0.6.0, != 0.6.2" to ">= 0.6.3" - Version 0.6.3 is when 'build' became the default backend - This ensures the 'build' package is available as an asv dependency - Simplifies constraint by requiring the version where the new behavior is stable References: - asv PR #1387: Made 'build' the default backend - asv 0.6.4 added --force-reinstall by default - {wheel_file} requires a wheel to be created in {build_cache_dir} This should fix the benchmark CI failures while maintaining compatibility with modern Python packaging standards. --- asv.conf.json | 13 +++++++------ setup.cfg | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/asv.conf.json b/asv.conf.json index 11d3fa5..c4b4345 100644 --- a/asv.conf.json +++ b/asv.conf.json @@ -21,12 +21,13 @@ // Customizable commands for building, installing, and // uninstalling the project. See asv.conf.json documentation. // - // "install_command": ["in-dir={env_dir} python -mpip install {wheel_file}"], - // "uninstall_command": ["return-code=any python -mpip uninstall -y {project}"], - // "build_command": [ - // "python setup.py build", - // "PIP_NO_BUILD_ISOLATION=false python -mpip wheel --no-deps --no-index -w {build_cache_dir} {build_dir}" - // ], + // For asv 0.6.3+ compatibility, explicitly specify build commands + // that use the 'build' backend and ensure wheel file is created + "build_command": [ + "python -m build --wheel -o {build_cache_dir} {build_dir}" + ], + "install_command": ["in-dir={env_dir} python -mpip install {wheel_file}"], + "uninstall_command": ["return-code=any python -mpip uninstall -y {project}"], // List of branches to benchmark. If not provided, defaults to "master" // (for git) or "default" (for mercurial). diff --git a/setup.cfg b/setup.cfg index 64a6a40..8d4d724 100644 --- a/setup.cfg +++ b/setup.cfg @@ -47,7 +47,7 @@ install_requires = [options.extras_require] benchmarks = - asv[virtualenv] >= 0.6.0, != 0.6.2 + asv[virtualenv] >= 0.6.3 test = pytest pytest-cov