Skip to content

v9.0.0 - #299

Open
pytooling-claude[bot] wants to merge 21 commits into
mainfrom
dev
Open

v9.0.0#299
pytooling-claude[bot] wants to merge 21 commits into
mainfrom
dev

Conversation

@pytooling-claude

Copy link
Copy Markdown

Note

A new major version, @r9: Python 3.15 becomes the default, MSYS2 runs on UCRT64 only.

  • ✨ Python 3.15 (default) and 3.16 (pre-release), PyPy 3.12; application tests can download artifacts.
  • ⚠️ MSYS2 runtimes mingw32 and mingw64 removed (with the input mingw64_before_script); Python 3.9, PyPy 3.9
    and 3.10 removed.
  • 🔧 Default version lists, exclude and disable lists follow; Python 3.10 warns; pacboy entries for pyEDAA.Reports and
    pyTooling.Sphinx.
  • 📖 Version and system lists, every template's defaults; GoatCounter page views.

Important

Merge after Python 3.15.0 is installable on the runners. Until actions/python-versions lists 3.15.0 (it lists
3.15.0-rc.3 today), every job asking for the new default 3.15 fails at setup - including this repository's
verifications, which is why dev is red since the v9.0.0 preparation.

✨ New Features

  • Python 3.15 is the latest CPython release, Python 3.16 the pre-release (Add PyPy 3.12 and Python 3.15, Python 3.16 as pre-release #292). 3.15 gets 🟢, 3.16 🟣
    (3.16.0-alpha.1); the older versions move down one level: 3.14 🟢, 3.13 🟡, 3.12 🟠, 3.11 🔴, 3.10 ⚫.

  • PyPy 3.12 (pypy-3.12, PyPy 8.0.0) (Add PyPy 3.12 and Python 3.15, Python 3.16 as pre-release #292). It runs on Linux, macOS and Windows on x86-64 and on Linux and macOS
    on arm64; PyPy publishes no Windows-on-arm64 build, so windows-arm:pypy-3.12 is in the default disable_list. Icons:
    pypy-3.11 ⟲🟠, pypy-3.12 ⟲🟡.

  • ApplicationTesting.yml downloads artifacts the application tests read (ApplicationTesting: download artifacts the application tests read #296):

    • artifacts_pattern: a glob of artifact names, e.g. 'Example-*'. Empty by default - no download, so existing
      pipelines are unchanged. Named like unittest_artifacts_pattern (PublishTestResults.yml) and
      coverage_artifacts_pattern (PublishCoverageResults.yml).
    • artifacts_directory: where they go, default 'artifacts'; each artifact is extracted into a subdirectory named
      after it.
    • The download runs after the wheel is installed, before the tests, on every system of the matrix.
    AppTesting:
      uses: pyTooling/Actions/.github/workflows/ApplicationTesting.yml@r9
      needs:
        - ExampleJobs
      with:
        artifacts_pattern: 'Example-*'

⚠️ Breaking Changes

Moving a pipeline from @r8 to @r9:

  • mingw64_before_script → ucrt64_before_script.
  • Remove mingw32/mingw64 from system_list, exclude_list, disable_list and include_list (only warns
    otherwise).
  • A pinned python_version of 3.9 or a pypy-3.9/pypy-3.10 entry creates no job any more.

🔧 Changes

📖 Documentation

🧪 Unit Tests

Known Issues

  • Python 3.15 and 3.16 aren't field-tested yet: 3.15.0 is due 2026-10-09, 3.16.0a1 2026-10-16. Each job asking for one
    of them fails at setup until actions/python-versions lists it.
  • On PyPy 8.0 (pypy-3.11, pypy-3.12), packages without a pp80 wheel are built from source, e.g. Pillow (for
    matplotlib) fails on Linux for missing libjpeg headers - Skip the matplotlib testcases on PyPy 8.0 on Linux pyTooling#474.
  • CompletePipeline.yml doesn't forward artifacts_pattern/artifacts_directory; pipelines with example jobs wire
    ApplicationTesting by hand.
  • tests/pacman_packages.py, the standalone copy of ComputePacboyPackages, lags behind the action.
  • Callers to clean up when moving to @r9: pyEDAA.CLITool passes mingw64_before_script; pyTooling names mingw32
    and mingw64 in system lists, pyEDAA.ProjectModel mingw64:* in a disable list.

Related Issues and Pull-Requests

claude-code and others added 21 commits October 2, 2026 21:12
Co-Authored-By: Patrick Lehmann <[email protected]>
'Parameters' warns when 'system_list' still names it and creates no job for it.

Co-Authored-By: Patrick Lehmann <[email protected]>
The default 'system_list' runs MSYS2 on 'ucrt64' only. 'UnitTesting' and 'ApplicationTesting' lose the input
'mingw64_before_script'. 'Parameters' warns when 'system_list' still names 'mingw64' and creates no job for it.

Co-Authored-By: Patrick Lehmann <[email protected]>
PyPy 8.0 ships Python 3.12 for every runner except Windows on aarch64, so 'windows-arm:pypy-3.12' joins the default
'disable_list'. The PyPy icons shift by one color, 'pypy-3.12' becomes the latest PyPy.

Co-Authored-By: Patrick Lehmann <[email protected]>
'pypy-3.9' and 'pypy-3.10' leave the list of known versions, 'windows-arm:pypy-3.10' the default 'disable_list'.

Co-Authored-By: Patrick Lehmann <[email protected]>
Versions 3.9 to 3.15 with the icons 'Parameters' uses: 3.14 is the latest release, 3.15 the pre-release.

Co-Authored-By: Patrick Lehmann <[email protected]>
Python 3.15 becomes the default 'python_version' of every template, and the default 'python_version_list' is
'3.11 3.12 3.13 3.14 3.15'. Python 3.9 leaves the list of known versions; listing 3.10 warns that its support ended.
The pre-release version is now 3.16.

Co-Authored-By: Patrick Lehmann <[email protected]>
'3.16' maps to '3.16.0-alpha.1', spelled as in setup-python's version manifest ('alpha', not 'a').

Co-Authored-By: Patrick Lehmann <[email protected]>
'py-0' is 3.15 now, so every 'py-N' test case and its expected job matrix move up by one version. The default
'exclude_list' loses 'windows-arm:3.9', as 3.9 is no known version any more.

Co-Authored-By: Patrick Lehmann <[email protected]>
The documentation built on GitHub Actions - the one published to GitHub Pages - loads GoatCounter's script, which
counts each page view for the site 'pytooling'. A local build has no script.

Co-Authored-By: Patrick Lehmann <[email protected]>
…jsonschema

pyEDAA.Reports reads JSON reports validated with jsonschema (coverage.py's JSON format, edaa-org/pyEDAA.Reports#204).
Its transitive entry, and the one of sphinx_reports depending on it, list python-jsonschema:p, so MSYS2 jobs of
packages depending on pyEDAA.Reports install it from MSYS2 instead of building rpds-py from source.

Co-Authored-By: Patrick Lehmann <[email protected]>
… extra

pyTooling.Sphinx took over the reports of sphinx_reports. It needs python-aiohttp:p (pyTooling[pypi]) and
python-markupsafe:p (Sphinx, through Jinja2); its 'reports' extra adds pyEDAA.Reports (jsonschema, lxml,
ruamel.yaml) and docstr_coverage (PyYAML).

Co-Authored-By: Patrick Lehmann <[email protected]>
…ownload_artifacts')

New inputs 'download_artifacts' - a glob of artifact names, empty by default - and 'artifacts_directory' -
'artifacts' by default. After the wheel is installed, the matching artifacts are downloaded, each into a
subdirectory named after the artifact, so application tests can read what other jobs of the pipeline wrote, e.g.
the reports of example jobs.

'_Checking_JobTemplates.yml' uploads an example report from a new job 'ExampleReport' and lets 'AppTesting'
download 'Example-*'; a new app test reads it, and skips where no artifacts were downloaded.

Co-Authored-By: Patrick Lehmann <[email protected]>
…ttern'

Like 'unittest_artifacts_pattern' (PublishTestResults) and 'coverage_artifacts_pattern' (PublishCoverageResults).

Co-Authored-By: Patrick Lehmann <[email protected]>
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 0 complexity · 0 duplication

Metric Results
Complexity 0
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants