fix(deps): update all dependencies
This MR contains the following updates:
| Package | Type | Update | Change | Age | Confidence |
|---|---|---|---|---|---|
| DavidAnson/markdownlint-cli2 | repository | minor |
v0.20.0 → v0.21.0
|
||
| binaryornot (changelog) | minor |
==0.4.4 → ==0.6.0
|
|||
| black (changelog) | minor |
==26.1.0 → ==26.3.0
|
|||
| copier | minor |
==9.11.3 → ==9.13.1
|
|||
| coverage | patch |
==7.13.2 → ==7.13.4
|
|||
| debugpy (source) | patch |
==1.8.19 → ==1.8.20
|
|||
| django-crispy-forms (changelog) | minor |
==2.5 → ==2.6
|
|||
| editorconfig-checker/editorconfig-checker.python | repository | patch |
3.6.0 → 3.6.1
|
||
| externalsettings | patch |
==2.0.4 → ==2.0.10
|
|||
| faker (changelog) | minor |
==40.1.2 → ==40.8.0
|
|||
| gunicorn (changelog) | major |
==24.1.1 → ==25.1.0
|
|||
| ipython | minor |
==9.9.0 → ==9.11.0
|
|||
| mkdocs-material (changelog) | patch |
==9.7.1 → ==9.7.4
|
|||
| mkdocstrings (changelog) | patch |
==1.0.2 → ==1.0.3
|
|||
| mkdocstrings-python (changelog) | patch |
==2.0.1 → ==2.0.3
|
|||
| poetry (changelog) | patch |
==2.3.1 → ==2.3.2
|
|||
| poetry-core | patch |
==2.3.0 → ==2.3.1
|
|||
| postgres | service-image | digest |
5773fe7 → 69e8582
|
||
| psf/black | repository | minor |
26.1.0 → 26.3.0
|
||
| psycopg (changelog) | patch |
==3.3.2 → ==3.3.3
|
|||
| pytest-django (changelog) | minor |
==4.11.1 → ==4.12.0
|
|||
| pytest-env | minor |
==1.2.0 → ==1.5.0
|
|||
| python-poetry/poetry | repository | patch |
2.3.1 → 2.3.2
|
||
| timothycrosley/isort | repository | major |
7.0.0 → 8.0.1
|
||
| tox (changelog) | minor |
==4.34.1 → ==4.49.1
|
|||
| uis/devops/continuous-delivery/ci-templates | repository | minor |
v7.25.15 → v7.30.3
|
||
| whitenoise (changelog) | minor |
==6.11.0 → ==6.12.0
|
Note: The pre-commit manager in Renovate is not supported by the pre-commit maintainers or community. Please do not report any problems there, instead create a Discussion in the Renovate repository if you have any questions.
Release Notes
binaryornot/binaryornot (binaryornot)
v0.6.0: BinaryOrNot 0.6.0: Three Layers of Detection
BinaryOrNot identifies binary files three ways: by extension, by file signature, and by content analysis. Pass it any file path and it tells you binary or text, accurately, across PNGs, PDFs, executables, archives, fonts, CJK-encoded text, and hundreds of other formats.
uv pip install --upgrade binaryornot
What's new
131 file types recognized by name. is_binary() checks the filename extension against a curated list of binary types (images, audio, video, archives, executables, fonts, documents, databases, 3D models, CAD files, scientific data formats, game ROMs) before reading any bytes. A .png or .mp4 is classified instantly with zero file I/O. The extension list ships as binary_extensions.csv and is easy to inspect or extend. (#648)
If you need pure content-based classification, pass check_extensions=False:
from binaryornot.check import is_binary
# Extension says binary, but let's check the actual bytes
is_binary("mystery_file.pyc", check_extensions=False)
55 binary format signatures. The detector checks file headers against known magic bytes for PNG, JPEG, PDF, ZIP, ELF, Mach-O, WebAssembly, SQLite, Parquet, Arrow IPC, and 45 more formats. Files that match a known signature are classified as binary immediately, before the statistical model runs. The signature table ships as binary_formats.csv. (#647)
Type annotations on the public API. is_binary(), is_binary_string(), and get_starting_chunk() all have inline type annotations. Editors and type checkers know that is_binary() accepts str, bytes, or pathlib.Path and returns bool. Credit to @smheidrich for the initial type stubs proposal (#627) and @AlJohri for requesting pathlib.Path support (#628). (#643)
What's better
Completely retrained decision tree on 4x more data. The detector reads 512 bytes per file instead of 128, and the decision tree was rebuilt from scratch on those larger samples. A new feature, has_magic_signature, gives the tree a second path to the right answer when statistical features are ambiguous. Byte ratios and entropy calculations reflect actual file content rather than header artifacts. (#647)
Python 3.10+ compatibility. BinaryOrNot installs on Python 3.10 through 3.14, supporting Cookiecutter, cookieplone, and other tools that run on older interpreters. Thanks @wesleybl for raising this. (#645)
Test fixtures ship in the sdist. .pyc and .DS_Store test fixtures are force-included in the source distribution so tests pass when run from the sdist. (#646)
What's fixed
PNGs with ambiguous headers are correctly classified. A 512x512 grayscale+alpha PNG has an IHDR chunk with enough null bytes that the first 128 bytes accidentally decode as UTF-16. Extension checking, signature matching, and the retrained tree each independently prevent this misclassification. Closes #642. (#647)
What's changed
is_binary() has a new keyword argument. check_extensions (default True) controls whether the extension check runs. Existing code that calls is_binary(path) gets the extension check automatically. Code that passes check_extensions=False gets the previous content-only behavior.
Contributors
@audreyfeldroy (Audrey M. Roy Greenfeld) designed and built this release: the extension detection system, file signature matching, decision tree retraining, type annotations, Python 3.10 compatibility, and sdist fixes.
Thanks to @smheidrich for the type stubs proposal, @AlJohri for requesting pathlib.Path support, and @wesleybl for raising Python 3.10 compatibility.
v0.5.0: BinaryOrNot 0.5.0: Zero Dependencies, 128 Bytes, One Trained Classifier
This is the biggest release in BinaryOrNot's history. I rebuilt the detection engine from the ground up. The original used byte ratio heuristics with chardet as a second opinion for ambiguous files. I replaced all of that with a trained decision tree operating on 23 features, covering 49 binary formats and 37 text encodings, with zero external dependencies. It's backed by 211 tests and a training pipeline you can re-run yourself. If you've ever had BinaryOrNot misidentify a UTF-16 file, choke on a CJK-encoded document, or crash because chardet changed its API, this release is for you.
BinaryOrNot now has zero dependencies. The chardet library (2.1 MB installed) is gone, replaced by a decision tree that reads 128 bytes of a file and classifies it as binary or text using 23 features computed from those bytes alone. The API is unchanged: is_binary("file.png") still returns True.
pip install --upgrade binaryornot
By the numbers
| Before (0.4.4) | After (0.5.0) |
|---|---|
| 1 dependency (chardet, 2.1 MB) | 0 dependencies |
| 1024 bytes read per file | 128 bytes read per file |
| Byte ratio heuristics + chardet | Trained classifier, 23 features |
| ~12 binary formats | 49 binary formats |
| ASCII + whatever chardet detected | 37 text encodings |
| 48 tests | 211 tests |
What's new
-
CLI tool. Run
binaryornot myfile.pngfrom the command line and getTrueorFalse. Thanks @moluwole! (#49) -
49 binary formats recognized. PNG, JPEG, GIF, BMP, TIFF, ICO, WebP, PSD, HEIF, PDF, OLE2 (.doc/.xls), SQLite, ZIP, gzip, xz, bzip2, 7z, RAR, Zstandard, ELF, Mach-O, MZ/PE, Java class, WebAssembly, Dalvik DEX, RIFF, Ogg, FLAC, MP4/MOV, MP3, Matroska/WebM, MIDI, WOFF, WOFF2, OTF, TTF, EOT, Apache Parquet, .pyc, .DS_Store, LLVM bitcode, Git packfiles, and more. Every format cites its specification and is verified by magic-byte tests and real file fixtures.
-
37 text encodings covered. UTF-8, UTF-16, UTF-32, all major single-byte encodings (ISO-8859, Windows code pages, KOI8-R, Mac encodings), and CJK encodings (GB2312, GBK, GB18030, Big5, Shift-JIS, EUC-JP, EUC-KR, ISO-2022-JP). A Big5-encoded Chinese document is correctly identified as text, not binary.
-
Encoding and format coverage tracked in CSVs.
encodings.csvandbinary_formats.csvare the single source of truth, feeding training data, parametrized tests, and documentation. Four gaps are documented with reasons (ISO-2022-KR and three EBCDIC code pages).
What's better
-
8x fewer bytes read per file. The detector reads 128 bytes instead of 1024. The decision tree's features stabilize well within that range.
-
211 tests, up from 48. Encoding round-trips, binary format magic bytes, real file fixtures for 16 formats, tiny-chunk edge cases, and boundary conditions. The decision tree is trained with balanced class weights and 5 targeted Hypothesis strategies (structured binary, binary with embedded strings, compressed binary, CJK text, whitespace-heavy text).
-
SQLite databases correctly detected as binary. Thanks @pombredanne! (#44)
-
Proper error logging for file I/O issues. Uses
logger.exception()for better diagnostics when a file can't be read. Thanks @MarshalX! (#629)
What's fixed
-
chardet 7.0.0 crash (#634). chardet 7 returns
{'encoding': None, 'confidence': 0.99}, which crashedis_binary_string()with aTypeError, then crashed the error handler with aNameErrorfrom a Python 2unicode()call. Both crash paths are structurally impossible now because chardet is gone. Thanks @wesleybl for the report! -
Unreadable files raise instead of returning False.
is_binary()on a nonexistent or permission-denied file now raisesFileNotFoundErrororPermissionError. Previously it silently returnedFalse, making broken paths indistinguishable from text files.
What's changed
-
Zero dependencies.
pip install binaryornotinstalls nothing else. chardet is no longer needed. - Python 3.12+ only. Python 2 and older Python 3 versions are no longer supported. All Python 2 compatibility code has been removed.
- MIT license (previously BSD).
- src/ layout with hatchling build system, replacing setup.py/setup.cfg.
Contributors
@audreyfeldroy (Audrey M. Roy Greenfeld) designed and built this release: the trained decision tree, encoding and binary format coverage matrices, Hypothesis-based training pipeline, fixture generation, documentation, and the complete modernization from Cookiecutter PyPackage.
Thanks to @pombredanne (Philippe Ombredanne) for SQLite detection and binary stream improvements, @moluwole for the CLI tool, @MarshalX (Ilya Siamionau) for better error logging, @thebaptiste for pyproject.toml migration (#633), @wesleybl for reporting the chardet 7 crash (#634), @alcuin2 for binary detection improvements (#48), @olaoluwa-98 for CI updates (#50), and @cosmic-byte for test fixes (#52).
psf/black (black)
v26.3.0
Stable style
- Don't double-decode input, causing non-UTF-8 files to be corrupted (#4964)
- Fix crash on standalone comment in lambda default arguments (#4993)
- Preserve parentheses when
# type: ignorecomments would be merged with other comments on the same line, preventing AST equivalence failures (#4888)
Preview style
- Fix bug where
ifguards incaseblocks were incorrectly split when the pattern had a trailing comma (#4884) - Fix
string_processingcrashing on unassigned long string literals with trailing commas (one-item tuples) (#4929) - Simplify implementation of the power operator "hugging" logic (#4918)
Packaging
- Fix shutdown errors in PyInstaller builds on macOS by disabling multiprocessing in frozen environments (#4930)
Performance
- Introduce winloop for windows as an alternative to uvloop (#4996)
- Remove deprecated function
uvloop.install()in favor ofuvloop.new_event_loop()(#4996) - Rename
maybe_install_uvloopfunction tomaybe_use_uvloopto simplify loop installation and creation of either a uvloop/winloop evenloop or default eventloop (#4996)
Output
- Emit a clear warning when the target Python version is newer than the running Python version, since AST safety checks cannot parse newer syntax. Also replace the misleading "INTERNAL ERROR" message with an actionable error explaining the version mismatch (#4983)
Blackd
- Introduce winloop to be used when windows in use which enables blackd to run faster on windows when winloop is installed. (#4996)
Integrations
- Remove unused gallery script (#5030)
- Harden parsing of
blackrequirements in the GitHub Action whenuse_pyprojectis enabled so that only version specifiers are accepted and direct references such asblack @​ https://...are rejected. Users should upgrade to the latest version of the action as soon as possible. This update is received automatically when usingpsf/black@stable, and is independent of the version of Black installed by the action. (#5031)
Documentation
copier-org/copier (copier)
v9.13.1
Fix
- vcs: make Git version parsing robust to vendor-suffixed patch versions
v9.13.0
Feat
- add CLI subcommand
check-updateto check for new template version (#2463)
Refactor
-
cli: call public
run_*functions instead of internalWorker.run_*methods
v9.12.0
Feat
- add new settings API with minimal surface
- re-export
Phaseenum at package level
Fix
- updating: apply skip-if-exists patterns as gitignore-style at subproject root in update algorithm
- updating: anchor removed file paths to project root in update algorithm
- updating: normalize user-deleted paths before skip-if-exists pattern matching during updates
Refactor
- typing: use builtin types in public API signatures
- deprecate public
settingsmodule and its symbols - replace
**kwargswith explicit parameters inrun_{copy,recopy,update}functions
coveragepy/coveragepy (coverage)
v7.13.4
-
Fix: the third-party code fix in 7.13.3 required examining the parent directories where coverage was run. In the unusual situation that one of the parent directories is unreadable, a PermissionError would occur, as described in
issue 2129_. This is now fixed. -
Fix: in test suites that change sys.path, coverage.py could fail with "RuntimeError: Set changed size during iteration" as described and fixed in
pull 2130_. Thanks, Noah Fatsi. -
We now publish ppc64le wheels, thanks to
Pankhudi Jain <pull 2121_>_.
.. _pull 2121: #2121 .. _issue 2129: #2129 .. _pull 2130: #2130
.. _changes_7-13-3:
v7.13.3
- Fix: in some situations, third-party code was measured when it shouldn't have
been, slowing down test execution. This happened with layered virtual
environments such as uv sometimes makes. The problem is fixed, closing
issue 2082_. Now any directory on sys.path that is inside a virtualenv is considered third-party code.
.. _issue 2082: #2082
.. _changes_7-13-2:
microsoft/debugpy (debugpy)
v1.8.20: debugpy v1.8.20
Fixes for:
- annotate in 3.14 causing exceptions: #1971
Enhancements:
Infrastructure work:
- Support devcontainers for development:
7dbc229
Thanks to @rameshvarun, @Xeonacid, and @pdepetro for the commits
django-crispy-forms/django-crispy-forms (django-crispy-forms)
v2.6
- Dropped support for Django 4.2, 5.0 and 5.1.
editorconfig-checker/editorconfig-checker.python (editorconfig-checker/editorconfig-checker.python)
v3.6.1
joke2k/faker (faker)
v40.8.0
- Add free email domains to
hu_HUlocale. Thanks @majorzoltan80.
v40.7.0
- Improve Polish address grammar: categorize street types and prefixes. Thanks @Francooo2221.
v40.6.0
- Add country names to
he_ILlocale. Thanks @Moo64c.
v40.5.1
- Fix
_get_local_timezone()missingreturnstatement. Thanks @bysiber.
v40.5.0
- Add missing formats and remove duplicates in
user_name_formats. Thanks @WannaFight.
v40.4.0
- Add passport and
cieforit_IT. Thanks @ElektroDuck.
v40.3.0
- Add major Greek banks to
el_GRbank provider. Thanks @bon12-gr.
v40.2.0
- Update internet
pt_bRprovider (domains, tlds, slugify). Thanks @MorganaSilva.
v40.1.3
- fix
pyfloatTypeErrorwhen combiningpositive=Truewithmax_value. Thanks @odrigobnogueira.
benoitc/gunicorn (gunicorn)
v25.1.0: Gunicorn 25.1.0
New Features
-
Control Interface (gunicornc): Add interactive control interface for managing running Gunicorn instances, similar to birdc for BIRD routing daemon (MR #3505)
- Unix socket-based communication with JSON protocol
- Interactive mode with readline support and command history
- Commands:
show all/workers/dirty/config/stats/listeners - Worker management:
worker add/remove/kill,dirty add/remove - Server control:
reload,reopen,shutdown - New settings:
--control-socket,--control-socket-mode,--no-control-socket - New CLI tool:
gunicorncfor connecting to control socket - See Control Interface Guide for details
-
Dirty Stash: Add global shared state between workers via
dirty.stash(MR #3503)- In-memory key-value store accessible by all workers
- Supports get, set, delete, clear, keys, and has operations
- Useful for sharing state like feature flags, rate limits, or cached data
-
Dirty Binary Protocol: Implement efficient binary protocol for dirty arbiter IPC using TLV (Type-Length-Value) encoding (MR #3500)
- More efficient than JSON for binary data
- Supports all Python types: str, bytes, int, float, bool, None, list, dict
- Better performance for large payloads
-
Dirty TTIN/TTOU Signals: Add dynamic worker scaling for dirty arbiters (MR #3504)
- Send SIGTTIN to increase dirty workers
- Send SIGTTOU to decrease dirty workers
- Respects minimum worker constraints from app configurations
Changes
- ASGI Worker: Promoted from beta to stable
- Dirty Arbiters: Now marked as beta feature
Documentation
- Fix Markdown formatting in /configure documentation
v25.0.3
What's Changed
Bug Fixes
- Fix RuntimeError when StopIteration raised in ASGI coroutine (#3484)
- Fix passing maxsplit in re.split() as positional argument (deprecated in Python 3.13)
Documentation
- Updated sponsorship section and homepage
Full Changelog: https://github.com/benoitc/gunicorn/compare/25.0.2...25.0.3
v25.0.2
What's Changed
Bug Fixes
- Fix ASGI concurrent request failures through nginx proxy
- Graceful disconnect handling for ASGI worker
- Lazy import dirty module for gevent compatibility
Other
- Increase CI timeout for signal tests on PyPy
- Remove trailing blank line in instrument/init.py
Full Changelog: https://github.com/benoitc/gunicorn/compare/25.0.1...25.0.2
v25.0.1
Bug Fixes
- Fix ASGI streaming responses (SSE) hanging: add chunked transfer encoding for HTTP/1.1 responses without Content-Length header. Without chunked encoding, clients wait for connection close to determine end-of-response.
Changes
- Update celery_alternative example to use FastAPI with native ASGI worker and uvloop for async task execution
Testing
- Add ASGI compliance test suite with Docker-based integration tests covering HTTP, WebSocket, streaming, lifespan, framework integration (Starlette, FastAPI), HTTP/2, and concurrency scenarios
v25.0.0: Gunicorn 25.0.0
New Features
-
Dirty Arbiters: Separate process pool for executing long-running, blocking operations (AI model loading, heavy computation) without blocking HTTP workers (MR #3460)
- Inspired by Erlang's dirty schedulers
- Asyncio-based with Unix socket IPC
- Stateful workers that persist loaded resources
- New settings:
--dirty-app,--dirty-workers,--dirty-timeout,--dirty-threads,--dirty-graceful-timeout - Lifecycle hooks:
on_dirty_starting,dirty_post_fork,dirty_worker_init,dirty_worker_exit
-
Per-App Worker Allocation for Dirty Arbiters: Control how many dirty workers load each app for memory optimization with heavy models (MR #3473)
- Set
workersclass attribute on DirtyApp (e.g.,workers = 2) - Or use config format
module:class:N(e.g.,myapp:HeavyModel:2) - Requests automatically routed to workers with the target app
- New exception
DirtyNoWorkersAvailableErrorfor graceful error handling - Example: 8 workers × 10GB model = 80GB → with
workers=2: 20GB (75% savings)
- Set
-
HTTP/2 Support (Beta): Native HTTP/2 (RFC 7540) support for improved performance with modern clients (MR #3468)
- Multiplexed streams over a single connection
- Header compression (HPACK)
- Flow control and stream prioritization
- Works with gthread, gevent, and ASGI workers
- New settings:
--http-protocols,--http2-max-concurrent-streams,--http2-initial-window-size,--http2-max-frame-size,--http2-max-header-list-size - Requires SSL/TLS and h2 library:
pip install gunicorn[http2] - New example:
examples/http2_gevent/with Docker and tests
-
HTTP 103 Early Hints: Support for RFC 8297 Early Hints to enable browsers to preload resources before the final response (MR #3468)
- WSGI:
environ['wsgi.early_hints'](headers)callback - ASGI:
http.response.informationalmessage type - Works with both HTTP/1.1 and HTTP/2
- WSGI:
-
uWSGI Protocol for ASGI Worker: The ASGI worker now supports receiving requests via the uWSGI binary protocol from nginx (MR #3467)
Bug Fixes
-
Fix HTTP/2 ALPN negotiation for gevent and eventlet workers when
do_handshake_on_connectis False (the default). The TLS handshake is now explicitly performed before checkingselected_alpn_protocol(). -
Fix setproctitle initialization with systemd socket activation (#3465)
-
Fix
Expect: 100-continuehandling: ignore the header for HTTP/1.0 requests since 100-continue is only valid for HTTP/1.1+ (MR #3463) -
Fix missing
_expected_100_continueattribute in UWSGIRequest -
Disable setproctitle on macOS to prevent segfaults during process title updates
-
Publish full exception traceback when the application fails to load (#3462)
-
Fix ASGI: quick shutdown on SIGINT/SIGQUIT, graceful on SIGTERM
Deprecations
-
Eventlet Worker: The
eventletworker is deprecated and will be removed in Gunicorn 26.0. Eventlet itself is no longer actively maintained. Please migrate togevent,gthread, or another supported worker type.
Changes
- Remove obsolete Makefile targets (MR #3471)
- Replace RST with markdown documentation format
squidfunk/mkdocs-material (mkdocs-material)
v9.7.4: mkdocs-material-9.7.4
[!WARNING]
Material for MkDocs is in maintenance mode
Going forward, the Material for MkDocs team focuses on Zensical, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.
Changes
- Hardened social cards plugin by switching to sandboxed environment (recommended by @caveeroo)
- Updated MkDocs 2.0 incompatibility warning
v9.7.3: mkdocs-material-9.7.3
[!WARNING]
Material for MkDocs is in maintenance mode
Going forward, the Material for MkDocs team focuses on Zensical, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.
Changes
- Fixed #8567: Print MkDocs 2.0 incompatibility warning to stderr
v9.7.2: mkdocs-material-9.7.2
[!WARNING]
Material for MkDocs is in maintenance mode
Going forward, the Material for MkDocs team focuses on Zensical, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.
Changes
- Opened up version ranges of optional dependencies for forward-compatibility
- Added warning to
mkdocs buildabout impending MkDocs 2.0 incompatibility (doesn't affect strict mode)
mkdocstrings/python (mkdocstrings-python)
v2.0.3
Build
- Depend on griffelib instead of griffe (770a5f6 by Timothée Mazzucotelli).
v2.0.2
Bug Fixes
- Fix aliases for parameters (0ae77a3 by Timothée Mazzucotelli). Issue-mkdocstrings-813
python-poetry/poetry (poetry)
v2.3.2
Changed
- Allow
dulwich>=1.0(#10701).
poetry-core (2.3.1)
- Fix an issue where
platform_releasecould not be parsed on Windows Server (#911).
python-poetry/poetry-core (poetry-core)
v2.3.1
Changed
- Update list of supported licenses (#912).
Fixed
- Fix an issue where
platform_releasecould not be parsed on Windows Server (#911).
pytest-dev/pytest-env (pytest-env)
v1.5.0
What's Changed
- ✨ feat(plugin): add --pytest-env-verbose for debugging env assignments by @gaborbernat in #199
Full Changelog: https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0
v1.4.0
What's Changed
- ✨ feat(cli): add --envfile option for runtime environment switching by @gaborbernat in #197
Full Changelog: https://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0
v1.3.2
v1.3.1
What's Changed
- 🔧 build(type): migrate from mypy to ty by @gaborbernat in #192
- ♻️ refactor(plugin): consolidate TOML config parsing by @gaborbernat in #193
- ✅ test(plugin): verify env vars available during conftest imports by @gaborbernat in #194
Full Changelog: https://github.com/pytest-dev/pytest-env/compare/1.3.0...1.3.1
v1.3.0
What's Changed
- Support pytest.toml and .pytest.toml by @mikicz in #180
- ✨ feat(config): support [tool.pytest] in pyproject.toml by @gaborbernat in #189
- ✨ feat(plugin): add U flag to unset env variables by @gaborbernat in #188
- 🐛 fix(config): use inipath for TOML file discovery by @gaborbernat in #190
- ✨ feat(plugin): add .env file loading support by @gaborbernat in #191
New Contributors
Full Changelog: https://github.com/pytest-dev/pytest-env/compare/1.2.0...1.3.0
timothycrosley/isort (timothycrosley/isort)
v8.0.1
Changes
- Fix #2461: Added compression to stdlibs for Python 3.14 in isort/stdlibs/py314.py (#2463) @FinlayTheBerry
- Fix unindented comments being corrupted in indented blocks (#2459) @worksbyfriday
v8.0.0
- Removed
--old-findersand--magic-placementflags andold_findersconfiguration option. The legacy finder logic that relied on environment introspection has been removed (#2445) @joao-faria-dev
tox-dev/tox (tox)
v4.49.1
What's Changed
- Update maintainers by @rahuldevikar in #3868
- 🐛 fix(run): break deadlock in execution interrupt chain by @gaborbernat in #3869
Full Changelog: https://github.com/tox-dev/tox/compare/4.49.0...4.49.1
v4.49.0
What's Changed
- ✨ feat(config): add {factor:label} substitution for TOML by @gaborbernat in #3865
- 🐛 fix(legacy): initialize config_format and output_file for --showconfig by @rares985 in #3867
New Contributors
- @rares985 made their first contribution in #3867
Full Changelog: https://github.com/tox-dev/tox/compare/4.48.1...4.49.0
v4.48.1
What's Changed
- Replace archived 31z4/tox Docker image with build-your-own guide by @rahuldevikar in #3864
- 🐛 fix(toml): extract args from Command in ref replacement by @gaborbernat in #3863
Full Changelog: https://github.com/tox-dev/tox/compare/4.48.0...4.48.1
v4.48.0
What's Changed
- Add fail_fast to config reference docs by @rahuldevikar in #3853
- ✨ feat(config): add --format json/toml and -o to config command by @gaborbernat in #3857
Full Changelog: https://github.com/tox-dev/tox/compare/4.47.3...4.48.0
v4.47.3
What's Changed
- Fix SchemaStore workflow creating empty MRs by @gaborbernat in #3848
- Add .mailmap to consolidate author identities by @yarikoptic in #3849
- 🐛 fix(config): honor ignore_base_python_conflict for factor conflicts by @gaborbernat in #3851
Full Changelog: https://github.com/tox-dev/tox/compare/4.47.2...4.47.3
v4.47.2
What's Changed
- fix: handle OSError in pos_args path existence check by @yarikoptic in #3847
New Contributors
- @yarikoptic made their first contribution in #3847
Full Changelog: https://github.com/tox-dev/tox/compare/4.47.1...4.47.2
v4.47.1
What's Changed
- 🐛 fix(config): resolve base_python from new-style version factors by @gaborbernat in #3846
Full Changelog: https://github.com/tox-dev/tox/compare/4.47.0...4.47.1
v4.47.0
What's Changed
- Move SECURITY.md to .github/SECURITY.md by @gaborbernat in #3835
- Standardize .github files to .yaml suffix by @gaborbernat in #3836
- 🐛 fix(ci): resolve ty type-check failures by @gaborbernat in #3837
- ✨ feat(config): show clean errors for type mismatches by @gaborbernat in #3838
- 🧪 test(config): assert full error messages for all config fields by @gaborbernat in #3840
- 🐛 fix(exec): pass stdin through to executed command by @gaborbernat in #3842
- 🐛 fix(config): accept string for
base_pythonin TOML by @gaborbernat in #3843
Full Changelog: https://github.com/tox-dev/tox/compare/4.46.3...4.47.0
v4.46.3
What's Changed
- 👷 ci(schemastore): branch from upstream master by @gaborbernat in #3828
- Fix outdated min version of virtualenv by @kajinamit in #3829
New Contributors
- @kajinamit made their first contribution in #3829
Full Changelog: https://github.com/tox-dev/tox/compare/4.46.2...4.46.3
v4.46.2
What's Changed
- 👷 ci(schemastore): fix MR creation for fork by @gaborbernat in #3827
Full Changelog: https://github.com/tox-dev/tox/compare/4.46.1...4.46.2
v4.46.1
What's Changed
- 🐛 fix(config): allow glob patterns in ini depends by @gaborbernat in #3825
- 👷 ci(schemastore): fix git push auth in update workflow by @gaborbernat in #3826
- 🐛 fix(schema): add additionalProperties to partial-tox.json by @gaborbernat in #3824
Full Changelog: https://github.com/tox-dev/tox/compare/4.46.0...4.46.1
v4.46.0
What's Changed
- Add architecture (ISA) awareness to Python discovery by @rahuldevikar in #3815
- ✨ feat(config): add env_base templates for TOML by @gaborbernat in #3817
- 🐛 fix(deps): drop chardet for req file decoding by @gaborbernat in #3820
- 🐛 fix(cli): allow --help with invalid config by @gaborbernat in #3821
Full Changelog: https://github.com/tox-dev/tox/compare/4.45.0...4.46.0
v4.45.0
What's Changed
- Fix user guide link in README.md by @cpburnz in #3805
- 🐛 fix(type): resolve ty 0.0.17 compatibility by @gaborbernat in #3807
- 📝 docs: add redirects for old URLs (#3806) by @gaborbernat in #3808
- Bump dependency requirements by @gaborbernat in #3812
- fix: cross-section substitution resolves to empty when no factors match by @worksbyfriday in #3810
- ✨ feat(schema): enhance schema command with IDE integration by @gaborbernat in #3813
- 🐛 fix(env): break circular dependency in environment_variables resolution by @gaborbernat in #3816
New Contributors
Full Changelog: https://github.com/tox-dev/tox/compare/4.44.0...4.45.0
v4.44.0
What's Changed
- 🐛 fix(config): keep unfactored continuation lines after filtered factors (#3802) by @gaborbernat in #3804
- ✨ feat(config): add PEP 751 pylock.toml support by @gaborbernat in #3803
Full Changelog: https://github.com/tox-dev/tox/compare/4.43.0...4.44.0
v4.43.0
What's Changed
- 📝 docs(infra): integrate sphinxcontrib-towncrier by @gaborbernat in #3798
- ✨ feat(toml): add generative env_list via product dict by @gaborbernat in #3797
- 🐛 fix(config): restore factor conditional continuations by @gaborbernat in #3799
- 🐛 fix(pip): pass config_settings to pip for sdist install by @gaborbernat in #3800
Full Changelog: https://github.com/tox-dev/tox/compare/4.42.0...4.43.0
v4.42.0
What's Changed
- 🐛 fix(interrupt): suppress BrokenPipeError during teardown by @gaborbernat in #3778
- ✨ feat(cli): add --no-capture flag for interactive programs by @gaborbernat in #3777
- ✨ feat(config): add platform-dependent factor support by @gaborbernat in #3779
- ✨ feat(env): gracefully skip environments with unavailable runners by @gaborbernat in #3781
- 🐛 fix(env): restore compound factor conditionals by @gaborbernat in #3782
- ✨ feat(config): add default_base_python config key by @gaborbernat in #3783
- ✨ feat(config): add env_site_packages_dir_plat substitution by @gaborbernat in #3784
- 🐛 fix(parallel): show --list-dependencies output by @gaborbernat in #3786
- ✨ feat(config): add open-ended generative ranges by @gaborbernat in #3788
- 🐛 fix(config): collapse continuation lines before factor filtering by @gaborbernat in #3787
- ✨ feat(pkg): cache external packaging env build across envs by @gaborbernat in #3790
- ✨ feat(changelog): add granular towncrier categories by @gaborbernat in #3785
- ✨ feat(cli): accept plugin CLI options during provisioning by @gaborbernat in #3791
- ✨ feat(env): add recreate_commands config key by @gaborbernat in #3793
- 📝 docs(faq): document Debian python3-venv limitation by @gaborbernat in #3789
- ✨ feat(config): warn on unused config keys with -v by @gaborbernat in #3795
- ✨ feat(cli): add --skip-env-install flag for offline env reuse by @gaborbernat in #3792
- ✨ feat(env): add virtualenv_spec for per-env version pinning by @gaborbernat in #3794
Full Changelog: https://github.com/tox-dev/tox/compare/4.41.0...4.42.0
v4.41.0
What's Changed
- Prefer TOML-native config over legacy_tox_ini in pyproject.toml by @rahuldevikar in #3776
- ✨ feat(config): add
package = "deps-only"mode by @gaborbernat in #3774
Full Changelog: https://github.com/tox-dev/tox/compare/4.40.0...4.41.0
v4.40.0
What's Changed
- Use positive exit code for multi-env failures by @rahuldevikar in #3768
- ✨ feat(config): add {glob:PATTERN} substitution by @gaborbernat in #3769
- Add package=sdist-wheel package type by @rahuldevikar in #3741
- ✨ feat(config): add conditional replace for TOML by @gaborbernat in #3771
- Create .gitignore in work_dir and info file directories by @rahuldevikar in #3770
- ✨ feat(run): add commands_retry config option by @gaborbernat in #3772
- 🐛 fix(config): set_env override lost after load by @gaborbernat in #3775
Full Changelog: https://github.com/tox-dev/tox/compare/4.39.0...4.40.0
v4.39.0
What's Changed
- 🐛 fix(ci): suppress Pygments DeprecationWarning on Python 3.15 by @gaborbernat in #3733
- 🐛 fix(deps): apply --force-dep to package metadata dependencies by @gaborbernat in #3734
- fix(ci): drop module scope from commonprefix warning filter by @gaborbernat in #3735
- 🐛 fix(config): resolve overrides with alias config keys by @gaborbernat in #3736
- 🐛 fix(config): set_env cross-section substitution loses values by @gaborbernat in #3737
- 🐛 fix(legacy): --parallel-no-spinner no longer suppresses output by @gaborbernat in #3738
- 🐛 fix(config): set_env cross-section substitution precedence by @gaborbernat in #3739
- 🐛 fix(config): set_env file| no longer overrides later values by @gaborbernat in #3740
- 🐛 fix(config): setup.cfg without [tox:tox] no longer blocks discovery by @gaborbernat in #3742
- 🐛 fix(env): posargs with colon no longer crash inactive envs by @gaborbernat in #3744
- 🐛 fix(provision): skip requires with false environment markers by @gaborbernat in #3745
- 🐛 fix(config): env variable substitution in package envs by @gaborbernat in #3746
- 🐛 fix(config): set_env substitution honors skip_missing_interpreters by @gaborbernat in #3747
- 🐛 fix(config): resolve cross-section refs in caller context by @gaborbernat in #3748
- 🐛 fix(config): break changedir/posargs circular dependency by @gaborbernat in #3749
- 🐛 fix(cli): support brace expansion in -e flag by @gaborbernat in #3750
- 🐛 fix(config): factor filter fallback to default value by @gaborbernat in #3751
- 🐛 fix(env): preserve shared pkg env on recreate by @gaborbernat in #3752
- 🐛 fix(env): reject partial testenv section matches by @gaborbernat in #3753
- 🐛 fix(config): support base inherit in TOML format by @gaborbernat in #3754
- 🐛 fix(cli): make multiple -e flags additive by @gaborbernat in #3755
- 🐛 fix(provision): serialize concurrent provisioning by @gaborbernat in #3756
- 📝 docs: document interactive terminal programs limitation by @gaborbernat in #3757
- 🐛 fix(config): defer TOML set_env string substitution by @gaborbernat in #3759
- 🐛 fix(config): handle cross-drive posargs on Windows by @gaborbernat in #3760
- 🐛 fix(plugin): skip toxfile.py with unknown hooks by @gaborbernat in #3762
- 🐛 fix(config): skip non-tox sections in env discovery by @gaborbernat in #3761
- 🐛 fix(config): treat backslash-space as path separator on Windows by @gaborbernat in #3764
- 🐛 fix(config): preserve colors in provisioned tox on Windows by @gaborbernat in #3765
- create a cachedir.tag file in the tox work directory by @rahuldevikar in #3763
- 🐛 fix(execute): render ANSI colors from subprocesses on Windows by @gaborbernat in #3766
- 🧪 test(config): verify unicode support in config files by @gaborbernat in #3767
Full Changelog: https://github.com/tox-dev/tox/compare/4.38.0...4.39.0
v4.38.0
What's Changed
- 🐛 fix(test): resolve Windows CI flake in provision integration tests by @gaborbernat in #3732
- Scope deps rejection to pure PEP-517 build types by @rahuldevikar in #3730
Full Changelog: https://github.com/tox-dev/tox/compare/4.37.0...4.38.0
v4.37.0
What's Changed
- ✨ feat(config): add extra_setup_commands for --notest phase by @gaborbernat in #3716
- 🐛 fix(release): format changelog with pre-commit before committing by @gaborbernat in #3717
- 📝 docs: restructure documentation using Diátaxis framework by @gaborbernat in #3718
- 🐛 fix(pip): set PIP_USER=0 to prevent --user installs in virtualenvs by @gaborbernat in #3719
- 🐛 fix(config): prevent env_run_base deps from being clobbered by @gaborbernat in #3721
- Fix env name with dot losing description in TOML config by @Fridayai700 in #3722
- 🐛 fix(ci): add completion extras to type checker environments by @gaborbernat in #3728
- Fix factor selection via TOX_FACTORS environment variable by @Fridayai700 in #3725
- Fix setenv PATH modifications being overwritten by @Fridayai700 in #3723
- Fix extras with underscores not matching hyphenated metadata by @Fridayai700 in #3727
- Fix install_command ignored from TOML config by @Fridayai700 in #3724
- Fix deps with ~= version specifier treated as local paths by @Fridayai700 in #3726
New Contributors
- @Fridayai700 made their first contribution in #3722
Full Changelog: https://github.com/tox-dev/tox/compare/4.36.1...4.37.0
v4.36.1
What's Changed
- 🔒 ci(workflows): add explicit permissions to workflows by @gaborbernat in #3714
- Add architecture documentation by @rahuldevikar in #3708
- 📚 docs(man): add Unix man page and composable CLI argument inheritance by @gaborbernat in #3705
- Add new logging section in documentation by @rahuldevikar in #3701
- Report TOML parse errors during config discovery instead of silently ignoring them by @rahuldevikar in #3710
- 🐛 fix(execute): adopt CPython subprocess stream handling by @gaborbernat in #3715
Full Changelog: https://github.com/tox-dev/tox/compare/4.36.0...4.36.1
v4.36.0
What's Changed
- ✨ feat(config): allow skip_missing_interpreters per environment by @gaborbernat in #3684
- Return non-zero exit code from
tox configwhen exceptions occur by @veeceey in #3683 - Update development.rst to reflect current standards by @rahuldevikar in #3685
- Build dependencies should only come from build backend by @rahuldevikar in #3687
- Add packaging environment docs to regular Configuration by @rahuldevikar in #3686
- 🔧 chore(type): migrate from mypy to ty by @gaborbernat in #3688
- 📝 docs(plugins): document CLI argument conventions by @gaborbernat in #3689
- Exclude self-dependencies in run_order to prevent KeyError by @rahuldevikar in #3690
- Drop setup.py mentions from the installation page by @rahuldevikar in #3693
- 🚀 perf(tests): prevent stale fixture state and fix flaky timing assertions by @gaborbernat in #3692
- ✨ feat(run): add fail-fast option to stop on first failure by @gaborbernat in #3691
- 📝 docs(plugins): document toxfile.py inline plugins by @gaborbernat in #3694
- ✨ feat(cli): add shell completion via argcomplete by @gaborbernat in #3695
- ✨ feat(package): validate extras against package metadata by @gaborbernat in #3696
- ✨ feat(depends): add glob pattern support for depends option by @gaborbernat in #3697
- ✨ feat(env): add disallow_pass_env to exclude env vars by @gaborbernat in #3698
- 📝 docs: restructure documentation following Diataxis framework by @gaborbernat in #3702
- 📝 docs: config enhancements, man page, version tracking by @gaborbernat in #3703
- Added a _resolve_path() static method to InstallPackageAction by @rahuldevikar in #3699
- Follow FORCE_COLOR. Any non-empty value now enables color by @rahuldevikar in #3700
New Contributors
Full Changelog: https://github.com/tox-dev/tox/compare/4.35.0...4.36.0
v4.35.0
What's Changed
- docs: fix misleading ENVDIR reference in devenv description by @VedantMadane in #3670
- Fix CI post packaging releese by @gaborbernat in #3673
- Fix code block format in docs/plugins.rst by @mushitoriami in #3675
- fix(docs): correct path for built documentation by @daniel7an in #3680
- Document injected environment variables by @rahuldevikar in #3681
- Show toxfile.py inline plugin in --version output by @rahuldevikar in #3682
New Contributors
- @VedantMadane made their first contribution in #3670
- @mushitoriami made their first contribution in #3675
- @daniel7an made their first contribution in #3680
- @rahuldevikar made their first contribution in #3681
Full Changelog: https://github.com/tox-dev/tox/compare/4.34.1...4.35.0
uis/devops/continuous-delivery/ci-templates (uis/devops/continuous-delivery/ci-templates)
v7.30.3: 7.30.3
7.30.3 (2026-03-09)
Bug Fixes
v7.30.2: 7.30.2
7.30.2 (2026-03-06)
Bug Fixes
v7.30.1: 7.30.1
7.30.1 (2026-03-04)
Bug Fixes
v7.30.0: 7.30.0
7.30.0 (2026-03-03)
Features
v7.29.0: 7.29.0
7.29.0 (2026-03-02)
Features
- add TERRAFORM_TEST_CLEANUP_DISABLED option to terraform-module.yml (5c83eed)
v7.28.6: 7.28.6
7.28.6 (2026-03-02)
Bug Fixes
v7.28.5: 7.28.5
7.28.5 (2026-03-02)
Bug Fixes
v7.28.4: 7.28.4
7.28.4 (2026-02-26)
Bug Fixes
-
deps: update python:3 docker digest to
6134653(127f03b) -
deps: update python:3.14 docker digest to
6134653(7437a65)
v7.28.3: 7.28.3
7.28.3 (2026-02-25)
Bug Fixes
v7.28.2: 7.28.2
7.28.2 (2026-02-25)
Bug Fixes
v7.28.1: 7.28.1
7.28.1 (2026-02-23)
Bug Fixes
v7.28.0: 7.28.0
7.28.0 (2026-02-18)
Features
- delete auto-devops/deploy-cloud-run-services/deploy-cloud-run.yml (98e6854)
v7.27.14: 7.27.14
7.27.14 (2026-02-16)
Bug Fixes
- deps: update auto-build-image docker tag to v4.16.0 (7a90595)
v7.27.13: 7.27.13
7.27.13 (2026-02-16)
Bug Fixes
v7.27.12: 7.27.12
7.27.12 (2026-02-11)
v7.27.11: 7.27.11
7.27.11 (2026-02-11)
Bug Fixes
-
deps: update python:3 docker digest to
151ab35(304b027) -
deps: update python:3.14 docker digest to
151ab35(2b90aef)
v7.27.10: 7.27.10
7.27.10 (2026-02-10)
Bug Fixes
v7.27.9: 7.27.9
7.27.9 (2026-02-09)
Bug Fixes
-
deps: update alpine/httpie:3.2.4 docker digest to
98d2777(4dce1c2) -
deps: update python:3 docker digest to
4b827ab(7e8e8f6)
v7.27.8: 7.27.8
7.27.8 (2026-02-05)
v7.27.7: 7.27.7
7.27.7 (2026-02-05)
v7.27.6: 7.27.6
7.27.6 (2026-02-05)
Bug Fixes
-
deps: update alpine/httpie:3.2.4 docker digest to
bc4c7bc(d7ce92f) -
deps: update python:3 docker digest to
1c4c033(856a122) -
deps: update python:3.14 docker digest to
1c4c033(0182a8c)
v7.27.5: 7.27.5
7.27.5 (2026-02-04)
Bug Fixes
v7.27.4: 7.27.4
7.27.4 (2026-02-04)
v7.27.3: 7.27.3
7.27.3 (2026-02-04)
Bug Fixes
-
deps: update docker:dind docker digest to
8bcbad4(4ccc9c3) -
deps: update python:3 docker digest to
fbf695a(134b929) -
deps: update python:3.14 docker digest to
fbf695a(da47b1e)
v7.27.2: 7.27.2
7.27.2 (2026-02-03)
v7.27.1: 7.27.1
7.27.1 (2026-02-03)
Bug Fixes
v7.27.0: 7.27.0
7.27.0 (2026-02-02)
Features
v7.26.3: 7.26.3
7.26.3 (2026-02-02)
Bug Fixes
v7.26.2: 7.26.2
7.26.2 (2026-01-29)
v7.26.1: 7.26.1
7.26.1 (2026-01-29)
Bug Fixes
v7.26.0: 7.26.0
7.26.0 (2026-01-28)
Features
- use gitlab runner cache for pre-commit jobs (fe53b0d)
v7.25.17: 7.25.17
7.25.17 (2026-01-28)
Bug Fixes
v7.25.16: 7.25.16
7.25.16 (2026-01-26)
Bug Fixes
Configuration
📅 Schedule: Branch creation - "on sunday" in timezone Europe/London, Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever MR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This MR will be recreated if closed unmerged. Get config help if that's undesired.
- If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.