-
-
Notifications
You must be signed in to change notification settings - Fork 550
Comparing changes
Open a pull request
base repository: tox-dev/tox
base: 4.36.0
head repository: tox-dev/tox
compare: 4.36.1
- 11 commits
- 39 files changed
- 6 contributors
Commits on Feb 15, 2026
-
fix(release): delete remote release branch after successful release
The release script was leaving behind remote release-<version> branches after successful releases. Now deletes the remote branch after pushing the tag successfully.
Configuration menu - View commit details
-
Copy full SHA for 6ef157b - Browse repository at this point
Copy the full SHA 6ef157bView commit details -
feat(release): auto-create GitHub release with changelog notes
The release script now automatically creates a GitHub release after pushing the tag. Extracts release notes from the changelog and uses gh CLI to create the release. If the release process fails after creating the GitHub release, it's cleaned up automatically.
Configuration menu - View commit details
-
Copy full SHA for c98ddaa - Browse repository at this point
Copy the full SHA c98ddaaView commit details
Commits on Feb 16, 2026
-
build(deps): bump actions/cache from 4 to 5 (#3709)
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/cache/releases">actions/cache's releases</a>.</em></p> <blockquote> <h2>v5.0.0</h2> <blockquote> <p>[!IMPORTANT] <strong><code>actions/cache@v5</code> runs on the Node.js 24 runtime and requires a minimum Actions Runner version of <code>2.327.1</code>.</strong></p> <p>If you are using self-hosted runners, ensure they are updated before upgrading.</p> </blockquote> <hr /> <h2>What's Changed</h2> <ul> <li>Upgrade to use node24 by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1630">actions/cache#1630</a></li> <li>Prepare v5.0.0 release by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1684">actions/cache#1684</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v4.3.0...v5.0.0">https://github.com/actions/cache/compare/v4.3.0...v5.0.0</a></p> <h2>v4.3.0</h2> <h2>What's Changed</h2> <ul> <li>Add note on runner versions by <a href="https://github.com/GhadimiR"><code>@GhadimiR</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1642">actions/cache#1642</a></li> <li>Prepare <code>v4.3.0</code> release by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1655">actions/cache#1655</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/GhadimiR"><code>@GhadimiR</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1642">actions/cache#1642</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v4...v4.3.0">https://github.com/actions/cache/compare/v4...v4.3.0</a></p> <h2>v4.2.4</h2> <h2>What's Changed</h2> <ul> <li>Update README.md by <a href="https://github.com/nebuk89"><code>@nebuk89</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1620">actions/cache#1620</a></li> <li>Upgrade <code>@actions/cache</code> to <code>4.0.5</code> and move <code>@protobuf-ts/plugin</code> to dev depdencies by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1634">actions/cache#1634</a></li> <li>Prepare release <code>4.2.4</code> by <a href="https://github.com/Link"><code>@Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1636">actions/cache#1636</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/nebuk89"><code>@nebuk89</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1620">actions/cache#1620</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v4...v4.2.4">https://github.com/actions/cache/compare/v4...v4.2.4</a></p> <h2>v4.2.3</h2> <h2>What's Changed</h2> <ul> <li>Update to use <code>@actions/cache</code> 4.0.3 package & prepare for new release by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1577">actions/cache#1577</a> (SAS tokens for cache entries are now masked in debug logs)</li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1577">actions/cache#1577</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v4.2.2...v4.2.3">https://github.com/actions/cache/compare/v4.2.2...v4.2.3</a></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/actions/cache/blob/main/RELEASES.md">actions/cache's changelog</a>.</em></p> <blockquote> <h1>Releases</h1> <h2>How to prepare a release</h2> <blockquote> <p>[!NOTE]<br /> Relevant for maintainers with write access only.</p> </blockquote> <ol> <li>Switch to a new branch from <code>main</code>.</li> <li>Run <code>npm test</code> to ensure all tests are passing.</li> <li>Update the version in <a href="https://github.com/actions/cache/blob/main/package.json"><code>https://github.com/actions/cache/blob/main/package.json</code></a>.</li> <li>Run <code>npm run build</code> to update the compiled files.</li> <li>Update this <a href="https://github.com/actions/cache/blob/main/RELEASES.md"><code>https://github.com/actions/cache/blob/main/RELEASES.md</code></a> with the new version and changes in the <code>## Changelog</code> section.</li> <li>Run <code>licensed cache</code> to update the license report.</li> <li>Run <code>licensed status</code> and resolve any warnings by updating the <a href="https://github.com/actions/cache/blob/main/.licensed.yml"><code>https://github.com/actions/cache/blob/main/.licensed.yml</code></a> file with the exceptions.</li> <li>Commit your changes and push your branch upstream.</li> <li>Open a pull request against <code>main</code> and get it reviewed and merged.</li> <li>Draft a new release <a href="https://github.com/actions/cache/releases">https://github.com/actions/cache/releases</a> use the same version number used in <code>package.json</code> <ol> <li>Create a new tag with the version number.</li> <li>Auto generate release notes and update them to match the changes you made in <code>RELEASES.md</code>.</li> <li>Toggle the set as the latest release option.</li> <li>Publish the release.</li> </ol> </li> <li>Navigate to <a href="https://github.com/actions/cache/actions/workflows/release-new-action-version.yml">https://github.com/actions/cache/actions/workflows/release-new-action-version.yml</a> <ol> <li>There should be a workflow run queued with the same version number.</li> <li>Approve the run to publish the new version and update the major tags for this action.</li> </ol> </li> </ol> <h2>Changelog</h2> <h3>5.0.3</h3> <ul> <li>Bump <code>@actions/cache</code> to v5.0.5 (Resolves: <a href="https://github.com/actions/cache/security/dependabot/33">https://github.com/actions/cache/security/dependabot/33</a>)</li> <li>Bump <code>@actions/core</code> to v2.0.3</li> </ul> <h3>5.0.2</h3> <ul> <li>Bump <code>@actions/cache</code> to v5.0.3 <a href="https://redirect.github.com/actions/cache/pull/1692">#1692</a></li> </ul> <h3>5.0.1</h3> <ul> <li>Update <code>@azure/storage-blob</code> to <code>^12.29.1</code> via <code>@actions/[email protected]</code> <a href="https://redirect.github.com/actions/cache/pull/1685">#1685</a></li> </ul> <h3>5.0.0</h3> <blockquote> <p>[!IMPORTANT] <code>actions/cache@v5</code> runs on the Node.js 24 runtime and requires a minimum Actions Runner version of <code>2.327.1</code>. If you are using self-hosted runners, ensure they are updated before upgrading.</p> </blockquote> <h3>4.3.0</h3> <ul> <li>Bump <code>@actions/cache</code> to <a href="https://redirect.github.com/actions/toolkit/pull/2132">v4.1.0</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/cache/commit/cdf6c1fa76f9f475f3d7449005a359c84ca0f306"><code>cdf6c1f</code></a> Merge pull request <a href="https://redirect.github.com/actions/cache/issues/1695">#1695</a> from actions/Link-/prepare-5.0.3</li> <li><a href="https://github.com/actions/cache/commit/a1bee22673bee4afb9ce4e0a1dc3da1c44060b7d"><code>a1bee22</code></a> Add review for the <code>@actions/http-client</code> license</li> <li><a href="https://github.com/actions/cache/commit/46957638dc5c5ff0c34c0143f443c07d3a7c769f"><code>4695763</code></a> Add licensed output</li> <li><a href="https://github.com/actions/cache/commit/dc73bb9f7bf74a733c05ccd2edfd1f2ac9e5f502"><code>dc73bb9</code></a> Upgrade dependencies and address security warnings</li> <li><a href="https://github.com/actions/cache/commit/345d5c2f761565bace4b6da356737147e9041e3a"><code>345d5c2</code></a> Add 5.0.3 builds</li> <li><a href="https://github.com/actions/cache/commit/8b402f58fbc84540c8b491a91e594a4576fec3d7"><code>8b402f5</code></a> Merge pull request <a href="https://redirect.github.com/actions/cache/issues/1692">#1692</a> from GhadimiR/main</li> <li><a href="https://github.com/actions/cache/commit/304ab5a0701ee61908ccb4b5822347949a2e2002"><code>304ab5a</code></a> license for httpclient</li> <li><a href="https://github.com/actions/cache/commit/609fc19e67cd310e97eb36af42355843ffcb35be"><code>609fc19</code></a> Update licensed record for cache</li> <li><a href="https://github.com/actions/cache/commit/b22231e43df11a67538c05e88835f1fa097599c5"><code>b22231e</code></a> Build</li> <li><a href="https://github.com/actions/cache/commit/93150cdfb36a9d84d4e8628c8870bec84aedcf8a"><code>93150cd</code></a> Add PR link to releases</li> <li>Additional commits viewable in <a href="https://github.com/actions/cache/compare/v4...v5">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 5dfbcea - Browse repository at this point
Copy the full SHA 5dfbceaView commit details -
🔒 ci(workflows): add explicit permissions to workflows (#3714)
CodeQL flagged GitHub Actions workflows for missing explicit permission declarations. 🔒 Without these declarations, workflows inherit potentially broad default permissions, violating the principle of least privilege and increasing security risk if workflow files are compromised. Added `permissions: contents: read` at the workflow level for `check.yaml`, `weekly.yaml`, and `release.yaml`. This grants only the minimal permission needed to checkout code and run CI checks. The `release` job already has its own `id-token: write` permission for PyPI publishing, which overrides the workflow-level setting for that specific job. This change resolves all four CodeQL medium-severity alerts without affecting workflow functionality. The workflows continue to operate as before, now with proper security boundaries in place.
Configuration menu - View commit details
-
Copy full SHA for b072f60 - Browse repository at this point
Copy the full SHA b072f60View commit details -
Configuration menu - View commit details
-
Copy full SHA for 42470c0 - Browse repository at this point
Copy the full SHA 42470c0View commit details -
📚 docs(man): add Unix man page and composable CLI argument inheritance (
#3705) Running `tox --help` shows all CLI flags including env-specific ones like `--hashseed` even for commands that don't support them. This creates confusion when users try flags that silently do nothing. 🎯 Additionally, Unix users expect a man page for CLI tools (`man tox`), but tox only provided `--help`. The parser now supports composable argument inheritance via an `inherit` parameter on `add_command()`. Subcommands declare which argument groups they need using `frozenset({CORE})` for basic flags like `--verbose` and `--conf`, or `frozenset({CORE, ENV})` for commands that also need env flags like `--hashseed`. Commands that need neither (like `quickstart`) use `frozenset({CORE})` to get minimal flags. This makes the CLI cleaner and more discoverable. The man page is generated from RST via `sphinx-argparse-cli` and installed as wheel shared-data to `share/man/man1/tox.1`. Running `tox man` helps users set up the symlink and MANPATH. 📚 The type checker also now properly handles `virtualenv.VersionInfo` to `tox.VersionInfo` conversion to fix compatibility issues with the latest virtualenv releases. Signed-off-by: Bernát Gábor <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 62fc816 - Browse repository at this point
Copy the full SHA 62fc816View commit details -
Add new logging section in documentation (#3701)
Added a new "Logging" section under "Developing your own plugin" Fixes: #3449 <!-- Thank you for your contribution! Please, make sure you address all the checklists (for details on how see [development documentation](http://tox.readthedocs.org/en/latest/development.html#development))! --> - [x] ran the linter to address style issues (`tox -e fix`) - [x] wrote descriptive pull request text - [x] ensured there are test(s) validating the fix - [x] added news fragment in `docs/changelog` folder - [x] updated/extended the documentation
Configuration menu - View commit details
-
Copy full SHA for 54c89f6 - Browse repository at this point
Copy the full SHA 54c89f6View commit details -
Report TOML parse errors during config discovery instead of silently …
…ignoring them (#3710) Added `candidate.exists()` guard, then catch `MissingRequiredConfigKeyError` (skip) before catching `ValueError` (re-raise as `HandledError`). Mirrors the pattern already used in `_locate_source` and `_load_exact_sourc` Fixes: #3030 <!-- Thank you for your contribution! Please, make sure you address all the checklists (for details on how see [development documentation](http://tox.readthedocs.org/en/latest/development.html#development))! --> - [x] ran the linter to address style issues (`tox -e fix`) - [x] wrote descriptive pull request text - [x] ensured there are test(s) validating the fix - [x] added news fragment in `docs/changelog` folder - [ ] updated/extended the documentation
Configuration menu - View commit details
-
Copy full SHA for f00c24d - Browse repository at this point
Copy the full SHA f00c24dView commit details
Commits on Feb 17, 2026
-
🐛 fix(execute): adopt CPython subprocess stream handling (#3715)
Subprocess output reading could deadlock on Windows during parallel test execution or when handling large amounts of output. The root cause was a chicken-and-egg problem where reader threads waited for the subprocess to close its pipes, but the subprocess wouldn't be terminated until after the readers exited. 🔒 This manifested as timeouts in CI when tox tried to clean up long-running backend processes. The fix adopts CPython's approach to subprocess stream handling. On Unix, we switched from `select.select()` to the `selectors` module with proper EOF detection and interrupt handling. On Windows, we use overlapped I/O with non-blocking polling, mirroring CPython's implementation. Most importantly, we reordered the shutdown sequence in `pep517_backend.py` to terminate subprocesses before stopping reader threads, ensuring pipes close and pending I/O operations complete naturally. ⚡ This eliminates arbitrary timeouts and race conditions in the process cleanup logic. The implementation now handles EINTR signals gracefully and reads larger chunks (32KB instead of 1KB) for better performance with high-volume output. **References:** - CPython's subprocess implementation: https://github.com/python/cpython/blob/main/Lib/subprocess.py - Windows overlapped I/O: https://docs.microsoft.com/en-us/windows/win32/fileio/synchronous-and-asynchronous-i-o - Python `selectors` module: https://docs.python.org/3/library/selectors.html - `_overlapped` module: https://github.com/python/cpython/blob/main/Modules/overlapped.c
Configuration menu - View commit details
-
Copy full SHA for 96a40f2 - Browse repository at this point
Copy the full SHA 96a40f2View commit details -
fix(release): pass GH_TOKEN to release process for gh CLI auth
The release script uses 'gh release create' to create GitHub releases, but the workflow wasn't providing authentication. This caused the release to fail with 'gh auth login' error. Co-Authored-By: Claude Opus 4.5 <[email protected]> Signed-off-by: Bernát Gábor <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for b0a8321 - Browse repository at this point
Copy the full SHA b0a8321View commit details -
Configuration menu - View commit details
-
Copy full SHA for cfc0b29 - Browse repository at this point
Copy the full SHA cfc0b29View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff 4.36.0...4.36.1