fix(deps): update all dependencies
This MR contains the following updates:
| Package | Type | Update | Change | Age | Confidence |
|---|---|---|---|---|---|
| DavidAnson/markdownlint-cli2 | repository | minor |
v0.18.1 -> v0.20.0
|
||
| black (changelog) | minor |
==25.9.0 -> ==25.11.0
|
|||
| copier | minor |
==9.10.3 -> ==9.11.0
|
|||
| coverage | minor |
==7.11.0 -> ==7.12.0
|
|||
| django (changelog) | major |
==5.2.7 -> ==6.0
|
|||
| django-crispy-forms (changelog) | minor |
==2.4 -> ==2.5
|
|||
| django-debug-toolbar (changelog) | minor |
==6.0.0 -> ==6.1.0
|
|||
| django-structlog (changelog) | major |
==9.1.1 -> ==10.0.0
|
|||
| drf-spectacular | minor |
==0.28.0 -> ==0.29.0
|
|||
| editorconfig-checker/editorconfig-checker.python | repository | minor |
3.4.0 -> 3.6.0
|
||
| faker (changelog) | major |
==37.11.0 -> ==38.2.0
|
|||
| ipython | minor |
==9.6.0 -> ==9.8.0
|
|||
| mkdocs-gen-files (changelog) | minor |
==0.5.0 -> ==0.6.0
|
|||
| mkdocs-material (changelog) | minor |
==9.6.22 -> ==9.7.0
|
|||
| mkdocstrings (changelog) | major |
==0.30.1 -> ==1.0.0
|
|||
| mkdocstrings-python (changelog) | major |
==1.18.2 -> ==2.0.1
|
|||
| postgres | service-image | digest |
073e7c8 -> 5ec39c1
|
||
| pre-commit | minor |
==4.3.0 -> ==4.5.0
|
|||
| pre-commit/mirrors-mypy | repository | minor |
v1.18.2 -> v1.19.0
|
||
| psf/black | repository | minor |
25.9.0 -> 25.11.0
|
||
| psycopg (source, changelog) | minor |
==3.2.11 -> ==3.3.2
|
|||
| pytest (changelog) | major |
==8.4.2 -> ==9.0.2
|
|||
| structlog (changelog) | minor |
==25.4.0 -> ==25.5.0
|
|||
| tox (changelog) | minor |
==4.31.0 -> ==4.32.0
|
|||
| uis/devops/continuous-delivery/ci-templates | repository | minor |
v7.19.0 -> v7.23.1
|
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
psf/black (black)
v25.11.0
Highlights
- Enable base 3.14 support (#4804)
- Add support for the new Python 3.14 t-string syntax introduced by PEP 750 (#4805)
Stable style
- Fix bug where comments between
# fmt: offand# fmt: onwere reformatted (#4811) - Comments containing fmt directives now preserve their exact formatting instead of being normalized (#4811)
Preview style
- Move
multiline_string_handlingfrom--unstableto--preview(#4760) - Fix bug where module docstrings would be treated as normal strings if preceded by comments (#4764)
- Fix bug where python 3.12 generics syntax split line happens weirdly (#4777)
- Standardize type comments to form
# type: <value>(#4645) - Fix
fix_fmt_skip_in_one_linerspreview feature to respect# fmt: skipfor compound statements with semicolon-separated bodies (#4800)
Configuration
- Add
no_cacheoption to control caching behavior. (#4803)
Packaging
- Releases now include arm64 Linux binaries (#4773)
- Releases now include arm64 Windows binaries and wheels (#4814)
Output
- Write unchanged content to stdout when excluding formatting from stdin using pipes (#4610)
Blackd
- Implemented BlackDClient. This simple python client allows to easily send formatting requests to blackd (#4774)
Integrations
- Enable 3.14 base CI (#4804)
- Enhance GitHub Action
psf/blackto support therequired-versionmajor-version-only "stability" format when using pyproject.toml (#4770) - Improve error message for vim plugin users. It now handles independently vim version
- Vim: Warn on unsupported Vim and Python versions independently (#4772)
- Vim: Print the import paths when importing black fails (#4675)
- Vim: Fix handling of virtualenvs that have a different Python version (#4675)
copier-org/copier (copier)
v9.11.0
Feat
- updating: allow updating a dirty Git repository when the subproject directory is clean (#2369)
- add support for custom question icons (#2381)
- add support for conditionally unsetting a question's default value
Fix
- raise warning instead of error when
chmodis not allowed - fix using default answers from settings for required questions (#2374)
Refactor
- drop support for Python 3.9
coveragepy/coveragepy (coverage)
v7.12.0
-
The HTML report now shows separate coverage totals for statements and branches, as well as the usual combined coverage percentage. Thanks to Ryuta Otsuka for the
discussion <issue 2081_>_ and theimplementation <pull 2085_>_. -
The JSON report now includes separate coverage totals for statements and branches, thanks to
Ryuta Otsuka <pull 2090_>_. -
Fix:
except*clauses were not handled properly under the "sysmon" measurement core, causing KeyError exceptions as described inissue 2086_. This is now fixed. -
Fix: we now defend against aggressive mocking of
open()that could cause errors inside coverage.py. An example of a failure is inissue 2083_. -
Fix: in unusual cases where a test suite intentionally exhausts the system's file descriptors to test handling errors in
open(), coverage.py would fail when trying to open source files, as described inissue 2091_. This is now fixed. -
A small tweak to the HTML report: file paths now use thin spaces around slashes to make them easier to read.
.. _issue 2081: #2081 .. _issue 2083: #2083 .. _pull 2085: #2085 .. _issue 2086: #2086 .. _pull 2090: #2090 .. _issue 2091: #2091
.. _changes_7-11-3:
v7.11.3
-
Fix: the 7.11.1 changes meant that conflicts between a requested measurement core and other settings would raise an error. This was a breaking change from previous behavior, as reported in
issue 2076_ andissue 2078_.The previous behavior has been restored: when the requested core conflicts with other settings, another core is used instead, and a warning is issued.
-
For contributors: the repo has moved from Ned's
nedbat GitHub account_ to thecoveragepy GitHub organization_. The default branch has changed from master to main.
.. _issue 2076: #2076 .. _issue 2078: #2078 .. _nedbat GitHub account: https://github.com/nedbat .. _coveragepy GitHub organization: https://github.com/coveragepy
.. _changes_7-11-2:
v7.11.2
-
Fix: using the "sysmon" measurement core in 7.11.1, if Python code was claimed to come from a non-Python file, a
NotPythonexception could be raised. This could happen for example with Jinja templates compiled to Python, as reported inissue 2077_. This is now fixed. -
Doc: corrected the first entry in the 7.11.1 changelog.
.. _issue 2077: #2077
.. _changes_7-11-1:
v7.11.1
-
Fix: some chanages to details of how the measurement core is chosen, and how conflicting settings are handled. The "sysmon" core cannot be used with some conurrency settings, with dynamic context, and in Python 3.12/3.13, with branch measurement.
-
If the core is not specified and defaults to "sysmon" (Python 3.14+), but other settings conflict with sysmon, then the "ctrace" core will be used instead with no warning. For concurrency conflicts, this used to produce an error, as described in
issue 2064_. -
If the "sysmon" core is explicitly requested in your configuration, but other settings conflict, an error is now raised. This used to produce a warning.
-
-
Fix: some multi-line case clauses or for loops (and probably other constructs) could cause incorrect claims of missing branches with the sys.monitoring core, as described in
issue 2070_. This is now fixed. -
Fix: when running in pytest under coverage, a
breakpoint()would stop in the wrong frame, one level down from where it should, as described inissue 1420_. This was due to a coverage change in v6.4.1 that seemed to give a slight performance improvement, but I couldn't reproduce the performance gain, so it's been reverted, fixing the debugger problem. -
A new debug option
--debug=coreshows which core is in use and why. -
Split
sqlitedebugging information out of thesys:ref:coverage debug <cmd_debug>and :ref:cmd_run_debugoptions since it's bulky and not very useful. -
Updated the :ref:
howitworkspage to better describe the three different measurement cores.
.. _issue 1420: #1420 .. _issue 2064: #2064 .. _issue 2070: #2070
.. _changes_7-11-0:
django-crispy-forms/django-crispy-forms (django-crispy-forms)
v2.5
- Confirmed support for Python 3.14.
- Confirmed support for Django 6.0.
- Dropped support for Python 3.8.
django-commons/django-debug-toolbar (django-debug-toolbar)
v6.1.0
What's Changed
See change log here
Commits:
- Added a note about the default password in make example by @abdibaker in #2180
- Removed logging about the toolbar failing to serialize a value into JSON by @tim-schilling in #2181
- Explicitly call out the selenium job in the GitHub actions matrix by @matthiask in #2182
- docs: move the import statement of
debug_toolbar_urlsto inside of … by @Lidoca in #2174 - Changed StoredDebugToolbar.from_store to always create panel keys. by @tim-schilling in #2196
- Add Community Panel by @alan-rosenberg in #2193
- Added support for async to timer panel by @Zakui in #2197
- Add Python 3.14 to CI workflow matrix by @cclauss in #2208
- Docs/add docs generation guide by @okotdaniel in #2220
- docs: Add spell checking prerequisites for building documentation by @JohananOppongAmoateng in #2222
- Postgis upgrade from 14-3.1 to 17.3.5 by @okotdaniel in #2224
- Update the transifex link for the project. by @tim-schilling in #2229
- Update the translatable strings. by @tim-schilling in #2230
- Fix django unicode error by @jmgutu in #2217
- make doc corrections for django channels by @Chiemezuo in #2232
- Support hiding migrations and models when not using the DatabaseStore by @tim-schilling in #2236
New Contributors
- @abdibaker made their first contribution in #2180
- @Lidoca made their first contribution in #2174
- @alan-rosenberg made their first contribution in #2193
- @Zakui made their first contribution in #2197
-
@okotdaniel
🚀 made their first contribution in #2220 - @JohananOppongAmoateng made their first contribution in #2222
-
@jmgutu
🚀 made their first contribution in #2217 -
@Chiemezuo
🚀 made their first contribution in #2232
Full Changes: https://github.com/django-commons/django-debug-toolbar/compare/6.0.0...6.1.0
tfranzel/drf-spectacular (drf-spectacular)
v0.29.0
- Add l18n handling for Decimal field
#​1466 <https://github.com/tfranzel/drf-spectacular/issues/1466>_ - Fix LogoutSerializer for JWT/dj_rest_auth
#​1392 <https://github.com/tfranzel/drf-spectacular/issues/1392>_ - fix: support token blacklist feature in rest_auth [Bart van Andel]
- [django-filter] Add null_label if set in ChoiceFilter (
#​1450 <https://github.com/tfranzel/drf-spectacular/issues/1450>_) [Enric Pou] - fix: camelize tuples/fixed length array (
#​1432 <https://github.com/tfranzel/drf-spectacular/issues/1432>_) [Chris Wesseling] - Fix items:False case in enum hook
#​1432 <https://github.com/tfranzel/drf-spectacular/issues/1432>_ - Add option to overwrite serializer description
#​1463 <https://github.com/tfranzel/drf-spectacular/issues/1463>_ - Fix
OpenApiViewExtensionnot providing view instance underself.target(#​1405 <https://github.com/tfranzel/drf-spectacular/issues/1405>_) [astro-stan] - Move list default fix to source of the problem
#​1436 <https://github.com/tfranzel/drf-spectacular/issues/1436>_ - Improve confusing doc
#​1461 <https://github.com/tfranzel/drf-spectacular/issues/1461>_ - Add assert to pagination test
#​1459 <https://github.com/tfranzel/drf-spectacular/issues/1459>_ - fix SafeString handling for picky CDumper (
#​1435 <https://github.com/tfranzel/drf-spectacular/issues/1435>_) - Remove EOL 3.7 from suite; pydantic not updated for <=3.8
- Fix DecimalField with decimal_places and max_digits equal. [keter2002]
- fix test for i18n changes on DRF (
#​1444 <https://github.com/tfranzel/drf-spectacular/issues/1444>_) - Improve to_filter_name support for django_filter [Matwey V. Kornilov]
- fixes prefix estimation on windows [Luis Nell]
- Fix default for array types [Stanislav Khlud]
- fix: use CSafeDumper for render yaml if available [florian]
- fix: sort list to produce same hash [florian]
- Add typing.Generic to default lib_doc_excludes [Max Howald]
- Add get_doc test for class that inherits from Generic [Max Howald]
- Add Django REST framework 3.16 support [Paolo Melchiorre]
- Fix memory leak [artemkucher]
- Fix python 3.11 slice index [Egor Litvinov]
- fix: correct port mapping for the container in README [Maksym Bieńkowski]
- Update docs [q0w]
- Allow setting callable for ENUM_NAME_OVERRIDES [q0w]
- Add allauth's DRF token auth
#​1401 <https://github.com/tfranzel/drf-spectacular/issues/1401>_ - update away from retired GH worker image
- add condition to check, that serializer Meta has model attribute [aliev_vt]
- Fix docs compile issue and update some old code (
#​1389 <https://github.com/tfranzel/drf-spectacular/issues/1389>_) [Mike Manger] - Fix location of @extend_schema_field [johnthagen]
- Remove reference to non-exposed lazy_serializer [johnthagen]
- Document how to lazily define a recursive SerializerMethod [johnthagen]
- Link to SerializerMethod docs [johnthagen]
- Document Django 5.1 support in README [johnthagen]
- Bump django from 4.2.11 to 4.2.18 in /requirements [dependabot[bot]]
- Enhance bug report template with instructions for better clarity [antoliny0919]
- add pydantic computed field to tests
#​1354 <https://github.com/tfranzel/drf-spectacular/issues/1354>_
Breaking changes / important additions:
- Finally fixed the memory leak thanks to @artKucher.
- Another performance improvement is the usage of the C versions of yaml, if available.
- Apart from that, there are a lot of small improvements and bugfixes.
editorconfig-checker/editorconfig-checker.python (editorconfig-checker/editorconfig-checker.python)
v3.6.0
v3.5.0
v3.4.1
joke2k/faker (faker)
v38.2.0
- Add localized UniqueProxy. Thanks @azmeuk
v38.1.0
- Add
personprovider forar_DZlocale. Thanks @othmane099. - Add
person,phone_number,date_timeforfr_DZlocale. Thanks @othmane099.
v38.0.0
- Drop support for Python 3.9
- Add support for Python 3.14
v37.12.0
- Add french VAT number. Thanks @fabien-michel.
oprypin/mkdocs-gen-files (mkdocs-gen-files)
v0.6.0
-
Compatibility with MkDocs 1.6 is improved - generated files don't have to have an
abs_src_path-7baa032 -
There was a bug: using
edit_uri_templatein MkDocs would preventset_edit_path()from working. This is now fixed - #37 - thanks to @frankkusters -
The MkDocs configuration file now can be
mkdocs.yaml, not onlymkdocs.yml. Thanks to @mgor in #39 -
MkDocs 1.4.1 is now the lowest supported version -
2e47124 -
Python 3.9 is now the lowest supported version.
-
The nav generator can support empty paths -
440b0bf
Full Changelog: https://github.com/oprypin/mkdocs-gen-files/compare/v0.5.0...v0.6.0
squidfunk/mkdocs-material (mkdocs-material)
v9.7.0: mkdocs-material-9.7.0
[!WARNING]
Material for MkDocs is now in maintenance mode
This is the last release of Material for MkDocs that will receive new features. 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 for 12 months at least.
→ Read the full announcement on our blog
This release includes all features that were previously exclusive to the Insiders edition. These features are now freely available to everyone.
Note on deprecated plugins: The projects and typeset plugins are included in this release, but must be considered deprecated. Both plugins proved unsustainable to maintain and represent architectural dead ends. They are provided as-is without ongoing support.
Changes:
- Added support for projects plugin (for compat, now deprecated)
- Added support for typeset plugin (for compat, now deprecated)
- Added support for pinned blog posts and author profiles
- Added support for customizing pagination for blog index pages
- Added support for customizing blog category sort order
- Added support for staying on page when switching languages
- Added support for disabling tags in table of contents
- Added support for nested tags and shadow tags
- Added support for footnote tooltips
- Added support for instant previews
- Added support for instant prefetching
- Added support for custom social card layouts
- Added support for custom social card background images
- Added support for selectable rangs in code blocks
- Added support for custom selectors for code annotations
- Added support for configurable log level in privacy plugin
- Added support for processing of external links in privacy plugin
- Added support for automatic image optimization via optimize plugin
- Added support for navigation paths (breadcrumbs)
- Fixed #8519: Vector accents do not render when using KaTeX
v9.6.23: mkdocs-material-9.6.23
- Updated Burmese translation
mkdocstrings/mkdocstrings (mkdocstrings)
v1.0.0
Breaking Changes
-
BaseHandler.name: Attribute value was changed:''-> unset -
BaseHandler.domain: Attribute value was changed:''-> unset -
BaseHandler.fallback_config: Public object was removed -
BaseHandler.__init__(args): Parameter was removed -
BaseHandler.__init__(kwargs): Parameter was removed -
BaseHandler.__init__(theme): Parameter was added as required -
BaseHandler.__init__(custom_templates): Parameter was added as required -
BaseHandler.__init__(mdx): Parameter was added as required -
BaseHandler.__init__(mdx_config): Parameter was added as required -
BaseHandler.update_env(args): Parameter was removed -
BaseHandler.update_env(kwargs): Parameter was removed -
BaseHandler.update_env(config): Parameter was added as required -
Handlers.get_anchors: Public object was removed (import frommkdocstringsdirectly) -
mkdocstrings.plugin: Public module was removed (import frommkdocstringsdirectly) -
mkdocstrings.loggers: Public module was removed (import frommkdocstringsdirectly) -
mkdocstrings.inventory: Public module was removed (import frommkdocstringsdirectly) -
mkdocstrings.extension: Public module was removed (import frommkdocstringsdirectly) -
mkdocstrings.handlers: Public module was removed (import frommkdocstringsdirectly)
Code Refactoring
- Remove deprecated code before v1 (de34044 by Timothée Mazzucotelli).
- Expect Zensical to pass extension configuration instead of loading it again from YAML (6b73d5a by Timothée Mazzucotelli).
- Expose the Markdown extension, to make mkdocstrings compatible with Zensical (6de2667 by Timothée Mazzucotelli).
mkdocstrings/python (mkdocstrings-python)
v2.0.1
Bug Fixes
- Don't ignore filters when category grouping is disabled (63aa1b0 by Timothée Mazzucotelli). Issue-324
Code Refactoring
- Localize more contents in templates (854b6a6 by Zhikang Yan). MR-321
- Improve ja/zh translations (b83107c by Zhikang Yan). MR-322
v2.0.0
Code Refactoring
- Remove deprecated code for v2 (c10afdb by Timothée Mazzucotelli).
v1.19.0
Features
- Release scoped and relative cross-references (872afc5 by Timothée Mazzucotelli).
- Release
__all__ordering feature (84aaebc by Timothée Mazzucotelli). - Release public filter feature (3be14cc by Timothée Mazzucotelli).
- Release backlinks feature (ae7cc2d by Timothée Mazzucotelli).
- Release expression modernization feature (dbadd1e by Timothée Mazzucotelli).
- Release visually-lighter admonitions for source code blocks (fdaeb48 by Timothée Mazzucotelli).
- Release inheritance diagram features (669b42e by Timothée Mazzucotelli).
Code Refactoring
- Update code base for Python 3.10 (b696ed2 by Timothée Mazzucotelli).
pre-commit/pre-commit (pre-commit)
v4.5.0
==================
Features
- Add
pre-commit hazmat.- #3585 MR by @asottile.
v4.4.0
==================
Features
- Add
--fail-fastoption topre-commit run.- #3528 MR by @JulianMaurin.
- Upgrade
ruby-build/rbenv.- #3566 MR by @asottile.
- #3565 issue by @MRigal.
- Add
language: unsupported/language: unsupported_scriptas aliases forlanguage: system/language: script(which will eventually be deprecated).- #3577 MR by @asottile.
- Add support docker-in-docker detection for cgroups v2.
- #3535 MR by @br-rhrbacek.
- #3360 issue by @JasonAlt.
Fixes
- Handle when docker gives
SecurityOptions: null.- #3537 MR by @asottile.
- #3514 issue by @jenstroeger.
- Fix error context for invalid
stagesin.pre-commit-config.yaml.- #3576 MR by @asottile.
pytest-dev/pytest (pytest)
v9.0.2
pytest 9.0.2 (2025-12-06)
Bug fixes
-
#13896: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.
You may enable it again by passing
-p terminalprogress. We may enable it by default again once compatibility improves in the future.Additionally, when the environment variable
TERMisdumb, the escape codes are no longer emitted, even if the plugin is enabled. -
#13904: Fixed the TOML type of the
tmp_path_retention_countsettings in the API reference from number to string. -
#13946: The private
config.inicfgattribute was changed in a breaking manner in pytest 9.0.0. Due to its usage in the ecosystem, it is now restored to working order using a compatibility shim. It will be deprecated in pytest 9.1 and removed in pytest 10. -
#13965: Fixed quadratic-time behavior when handling
unittestsubtests in Python 3.10.
Improved documentation
-
#4492: The API Reference now contains cross-reference-able documentation of
pytest's command-line flags <command-line-flags>.
v9.0.1
pytest 9.0.1 (2025-11-12)
Bug fixes
-
#13895: Restore support for skipping tests via
raise unittest.SkipTest. - #13896: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.
- #13904: Fixed the TOML type of the verbosity settings in the API reference from number to string.
- #13910: Fixed UserWarning: Do not expect file_or_dir on some earlier Python 3.12 and 3.13 point versions.
Packaging updates and notes for downstreams
-
#13933: The tox configuration has been adjusted to make sure the desired
version string can be passed into its
package_envthrough theSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTESTenvironment variable as a part of the release process -- bywebknjaz.
Contributor-facing changes
-
#13891, #13942: The CI/CD part of the release automation is now capable of
creating GitHub Releases without having a Git checkout on
disk -- by
bluetechandwebknjaz. -
#13933: The tox configuration has been adjusted to make sure the desired
version string can be passed into its
package_envthrough theSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTESTenvironment variable as a part of the release process -- bywebknjaz.
v9.0.0
pytest 9.0.0 (2025-11-05)
New features
-
#1367: Support for subtests has been added.
subtests <subtests>are an alternative to parametrization, useful in situations where the parametrization values are not all known at collection time.Example:
def contains_docstring(p: Path) -> bool: """Return True if the given Python file contains a top-level docstring.""" ... def test_py_files_contain_docstring(subtests: pytest.Subtests) -> None: for path in Path.cwd().glob("*.py"): with subtests.test(path=str(path)): assert contains_docstring(path)Each assert failure or error is caught by the context manager and reported individually, giving a clear picture of all files that are missing a docstring.
In addition,
unittest.TestCase.subTestis now also supported.This feature was originally implemented as a separate plugin in pytest-subtests, but since then has been merged into the core.
[!NOTE] This feature is experimental and will likely evolve in future releases. By that we mean that we might change how subtests are reported on failure, but the functionality and how to use it are stable.
-
#13743: Added support for native TOML configuration files.
While pytest, since version 6, supports configuration in
pyproject.tomlfiles under[tool.pytest.ini_options], it does so in an "INI compatibility mode", where all configuration values are treated as strings or list of strings. Now, pytest supports the native TOML data model.In
pyproject.toml, the native TOML configuration is under the[tool.pytest]table.# pyproject.toml [tool.pytest] minversion = "9.0" addopts = ["-ra", "-q"] testpaths = [ "tests", "integration", ]The
[tool.pytest.ini_options]table remains supported, but both tables cannot be used at the same time.If you prefer to use a separate configuration file, or don't use
pyproject.toml, you can usepytest.tomlor.pytest.toml:# pytest.toml or .pytest.toml [pytest] minversion = "9.0" addopts = ["-ra", "-q"] testpaths = [ "tests", "integration", ]The documentation now (sometimes) shows configuration snippets in both TOML and INI formats, in a tabbed interface.
See
config file formatsfor full details. -
#13823: Added a "strict mode" enabled by the
strictconfiguration option.When set to
true, thestrictoption currently enablesstrict_configstrict_markersstrict_parametrization_idsstrict_xfail
The individual strictness options can be explicitly set to override the global
strictsetting.The previously-deprecated
--strictcommand-line flag now enables strict mode.If pytest adds new strictness options in the future, they will also be enabled in strict mode. Therefore, you should only enable strict mode if you use a pinned/locked version of pytest, or if you want to proactively adopt new strictness options as they are added.
See
strict modefor more details. -
#13737: Added the
strict_parametrization_idsconfiguration option.When set, pytest emits an error if it detects non-unique parameter set IDs, rather than automatically making the IDs unique by adding 0, 1, ... to them. This can be particularly useful for catching unintended duplicates.
-
#13072: Added support for displaying test session progress in the terminal tab using the OSC 9;4; ANSI sequence. When pytest runs in a supported terminal emulator like ConEmu, Gnome Terminal, Ptyxis, Windows Terminal, Kitty or Ghostty, you'll see the progress in the terminal tab or window, allowing you to monitor pytest's progress at a glance.
This feature is automatically enabled when running in a TTY. It is implemented as an internal plugin. If needed, it can be disabled as follows:
- On a user level, using
-p no:terminalprogresson the command line or via an environment variablePYTEST_ADDOPTS='-p no:terminalprogress'. - On a project configuration level, using
addopts = "-p no:terminalprogress".
- On a user level, using
-
#478: Support PEP420 (implicit namespace packages) as --pyargs target when
consider_namespace_packagesis true in the config.Previously, this option only impacted package imports, now it also impacts tests discovery.
-
#13678: Added a new
faulthandler_exit_on_timeoutconfiguration option set to "false" by default to let faulthandler interrupt the pytest process after a timeout in case of deadlock.Previously, a faulthandler timeout would only dump the traceback of all threads to stderr, but would not interrupt the pytest process.
-- by
ogrisel. -
#13829: Added support for configuration option aliases via the
aliasesparameter inParser.addini() <pytest.Parser.addini>.Plugins can now register alternative names for configuration options, allowing for more flexibility in configuration naming and supporting backward compatibility when renaming options. The canonical name always takes precedence if both the canonical name and an alias are specified in the configuration file.
Improvements in existing functionality
-
#13330: Having pytest configuration spread over more than one file (for example having both a
pytest.inifile andpyproject.tomlwith a[tool.pytest.ini_options]table) will now print a warning to make it clearer to the user that only one of them is actually used.-- by
sgaist -
#13574: The single argument
--versionno longer loads the entire plugin infrastructure, making it faster and more reliable when displaying only the pytest version.Passing
--versiontwice (e.g.,pytest --version --version) retains the original behavior, showing both the pytest version and plugin information.[!NOTE] Since
--versionis now processed early, it only takes effect when passed directly via the command line. It will not work if set through other mechanisms, such asPYTEST_ADDOPTSoraddopts. -
#13823: Added
strict_xfailas an alias to thexfail_strictoption,strict_configas an alias to the--strict-configflag, andstrict_markersas an alias to the--strict-markersflag. This makes all strictness options consistently have configuration options with the prefixstrict_. -
#13700: --junitxml no longer prints the generated xml file summary at the end of the pytest session when --quiet is given.
-
#13732: Previously, when filtering warnings, pytest would fail if the filter referenced a class that could not be imported. Now, this only outputs a message indicating the problem.
-
#13859: Clarify the error message for pytest.raises() when a regex match fails.
-
#13861: Better sentence structure in a test's expected error message. Previously, the error message would be "expected exception must be <expected>, but got <actual>". Now, it is "Expected <expected>, but got <actual>".
Removals and backward incompatible breaking changes
-
#12083: Fixed a bug where an invocation such as pytest a/ a/b would cause only tests from a/b to run, and not other tests under a/.
The fix entails a few breaking changes to how such overlapping arguments and duplicates are handled:
- pytest a/b a/ or pytest a/ a/b are equivalent to pytest a; if an argument overlaps another arguments, only the prefix remains.
- pytest x.py x.py is equivalent to pytest x.py; previously such an invocation was taken as an explicit request to run the tests from the file twice.
If you rely on these behaviors, consider using
--keep-duplicates <duplicate-paths>, which retains its existing behavior (including the bug). -
#13719: Support for Python 3.9 is dropped following its end of life.
-
#13766: Previously, pytest would assume it was running in a CI/CD environment if either of the environment variables CI</span> or <span class="title-ref">BUILD_NUMBER was defined; now, CI mode is only activated if at least one of those variables is defined and set to a non-empty value.
-
#13779: PytestRemovedIn9Warning deprecation warnings are now errors by default.
Following our plan to remove deprecated features with as little disruption as possible, all warnings of type
PytestRemovedIn9Warningnow generate errors instead of warning messages by default.The affected features will be effectively removed in pytest 9.1, so please consult the
deprecationssection in the docs for directions on how to update existing code.In the pytest
9.0.Xseries, it is possible to change the errors back into warnings as a stopgap measure by adding this to yourpytest.inifile:[pytest] filterwarnings = ignore::pytest.PytestRemovedIn9WarningBut this will stop working when pytest
9.1is released.If you have concerns about the removal of a specific feature, please add a comment to
13779.
Deprecations (removal in next major release)
-
#13807:
monkeypatch.syspath_prepend() <pytest.MonkeyPatch.syspath_prepend>now issues a deprecation warning when the prepended path contains legacy namespace packages (those usingpkg_resources.declare_namespace()). Users should migrate to native namespace packages (420). Seemonkeypatch-fixup-namespace-packagesfor details.
Bug fixes
-
#13445: Made the type annotations of
pytest.skipand friends more spec-complaint to have them work across more type checkers. -
#13537: Fixed a bug in which
ExceptionGroupwith onlySkippedexceptions in teardown was not handled correctly and showed as error. -
#13598: Fixed possible collection confusion on Windows when short paths and symlinks are involved.
-
#13716: Fixed a bug where a nonsensical invocation like
pytest x.py[a](a file cannot be parametrized) was silently treated aspytest x.py. This is now a usage error. -
#13722: Fixed a misleading assertion failure message when using
pytest.approxon mappings with differing lengths. -
#13773: Fixed the static fixture closure calculation to properly consider transitive dependencies requested by overridden fixtures.
-
#13816: Fixed
pytest.approxwhich now returns a clearer error message when comparing mappings with different keys. -
#13849: Hidden
.pytest.inifiles are now picked up as the config file even if empty. This was an inconsistency with non-hiddenpytest.ini. -
#13865: Fixed --show-capture with --tb=line.
-
#13522: Fixed
pytesterin subprocess mode ignored all :attr`pytester.plugins <pytest.Pytester.plugins>` except the first.Fixed
pytesterin subprocess mode silently ignored non-strpytester.plugins <pytest.Pytester.plugins>. Now it errors instead. If you are affected by this, specify the plugin by name, or switch the affected tests to usepytester.runpytest_inprocess <pytest.Pytester.runpytest_inprocess>explicitly instead.
Packaging updates and notes for downstreams
-
#13791: Minimum requirements on
iniconfigandpackagingwere bumped to1.0.1and22.0.0, respectively.
Contributor-facing changes
- #12244: Fixed self-test failures when TERM=dumb.
- #12474: Added scheduled GitHub Action Workflow to run Sphinx linkchecks in repo documentation.
-
#13621: pytest's own testsuite now handles the
lsofcommand hanging (e.g. due to unreachable network filesystems), with the affected selftests being skipped after 10 seconds. -
#13638: Fixed deprecated
gh pr newcommand inscripts/prepare-release-pr.py. The script now usesgh pr createwhich is compatible with GitHub CLI v2.0+. -
#13695: Flush stdout and stderr in Pytester.run to avoid truncated outputs in test_faulthandler.py::test_timeout on CI -- by
ogrisel. - #13771: Skip test_do_not_collect_symlink_siblings on Windows environments without symlink support to avoid false negatives.
-
#13841:
tox>=4is now required when contributing to pytest. -
#13625: Added missing docstrings to
pytest_addoption(),pytest_configure(), andcacheshow()functions incacheprovider.py.
Miscellaneous internal changes
-
#13830: Configuration overrides (
-o/--override-ini) are now processed during startup rather than duringconfig.getini() <pytest.Config.getini>.
hynek/structlog (structlog)
v25.5.0
Deprecated
-
structlog.dev.ConsoleRenderer()'s pad_event argument has been renamed to pad_event_to to differentiate it from the boolean pad_level argument. pad_event is now deprecated.
Added
-
Added
structlog.dev.ConsoleRenderer.get_active()that returns the currently activestructlog.dev.ConsoleRenderer(). #749 -
structlog.dev.ConsoleRenderer()now supports setting theexception_formatterattribute.You can now disable the pretty-printing of exceptions by setting it to
structlog.dev.plain_traceback:cr = structlog.dev.ConsoleRenderer.get_active() cr.exception_formatter = structlog.dev.plain_tracebackSame goes for sort_keys, columns, colors, force_colors, level_styles, pad_event_to, event_key, timestamp_key, and repr_native_str.
-
Added
structlog.dev.ConsoleRenderer.get_default_column_styles()for reuse the default column styles. #741 -
structlog.testing.capture_logs()now optionally accepts processors to apply before capture. #728 -
structlog.dev.RichTracebackFormatternow exposes the upstream code_width parameter. Default width is nowNonefor full terminal width. Full terminal width is now handled by Rich itself, bringing support for reflow andCOLUMNenvironment variable. Passing-1for width is now deprecated and automatically replaced byNone. #717 -
Native loggers now allow the passing of a dictionary for dictionary-based interpolation
log.info("hello %(name)s!", {"name": "world"}). #748 -
On Python 3.11+,
structlog.processors.CallsiteParameterAddernow supportsCallsiteParameter.QUAL_NAMEthat adds the qualified name of the callsite, including scope and class names. This is only available for structlog-originated events since the standard library has no equivalent. -
structlog.stdlib.LoggerFactorynow supports the stacklevel parameter. #763
Changed
-
structlog.dev.rich_traceback()now throws a more helpful error when Rich is missing. #735
Fixed
-
structlog.processors.MaybeTimeStampernow respects the key argument when determining whether to overwrite the timestamp field. #747 -
structlog.tracebacks.extract()no longer raises aRecursionErrorwhen the cause chain of an exception contains itself. #739 -
Default config now respects
FORCE_COLORon Windows. #758
tox-dev/tox (tox)
v4.32.0
What's Changed
- docs: Add Python 3.14 and 3.14t to config examples by @cclauss in #3626
- Fix broken log message (in that branch it did not match the arguments). by @ionelmc in #3634
- Allow braced range syntax in internal sections of tox.ini file by @marcosboger in #3631
- fix: ensure log folder is created before writing the execution logs by @ssbarnea in #3633
- TST: add weekly compatibility checks for CPython 3.15 by @neutrinoceros in #3629
New Contributors
- @ionelmc made their first contribution in #3634
- @marcosboger made their first contribution in #3631
- @neutrinoceros made their first contribution in #3629
Full Changelog: https://github.com/tox-dev/tox/compare/4.31.0...4.32.0
uis/devops/continuous-delivery/ci-templates (uis/devops/continuous-delivery/ci-templates)
v7.23.1: 7.23.1
7.23.1 (2025-12-05)
v7.23.0: 7.23.0
7.23.0 (2025-11-28)
Features
- tox-tests to use dind config from fragments (c765400)
v7.22.1: 7.22.1
7.22.1 (2025-11-25)
Bug Fixes
- add missing before_script reference to dind in .terraform-test-cleanup (2852ccd)
v7.22.0: 7.22.0
7.22.0 (2025-11-24)
Features
v7.21.0: 7.21.0
7.21.0 (2025-11-19)
Features
v7.20.3: 7.20.3
7.20.3 (2025-11-03)
Bug Fixes
- use only needed bits of Terraform-Module.gitlab-ci.yml to avoid duplicate jobs (ff646a0)
v7.20.2: 7.20.2
7.20.2 (2025-10-30)
Bug Fixes
- check-latest-tag-in-changelog: skip job if tag is an alpha or beta release (210ffd5)
v7.20.1: 7.20.1
7.20.1 (2025-10-29)
Bug Fixes
- allow no test coverage in maven (40db7bf)
v7.20.0: 7.20.0
7.20.0 (2025-10-28)
Features
- add code coverage to maven jobs (53c1345)
v7.19.2: 7.19.2
7.19.2 (2025-10-23)
Bug Fixes
- maven.gitab-ci.yml: added missing GKE_RUNNER_TAG on build_artifact (470fc86)
v7.19.1: 7.19.1
7.19.1 (2025-10-23)
Bug Fixes
- maven.gitlab-ci.yml: update publish to use CI_COMMIT_TAG for a release, or script for snapshot (e616bd4)
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.