chore(deps): update python-nonmajor #454
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==2.0.40
->==2.0.41
==3.11.18
->==3.12.9
==2.40.1
->==2.40.3
==6.30.2
->==6.31.1
==2.9.9
->==2.9.10
==8.3.5
->==8.4.0
Release Notes
aio-libs/aiohttp (aiohttp)
v3.12.9
Compare Source
v3.12.8
Compare Source
===================
Features
Added preemptive digest authentication to :class:
~aiohttp.DigestAuthMiddleware
-- by :user:bdraco
.The middleware now reuses authentication credentials for subsequent requests to the same
protection space, improving efficiency by avoiding extra authentication round trips.
This behavior matches how web browsers handle digest authentication and follows
:rfc:
7616#section-3.6
.Preemptive authentication is enabled by default but can be disabled by passing
preemptive=False
to the middleware constructor.Related issues and pull requests on GitHub:
:issue:
11128
, :issue:11129
.v3.12.7
Compare Source
===================
Bug fixes
Fixed cookie parsing to be more lenient when handling cookies with special characters
in names or values. Cookies with characters like
{
,}
, and/
in names are nowaccepted instead of causing a :exc:
~http.cookies.CookieError
and 500 errors. Additionally,cookies with mismatched quotes in values are now parsed correctly, and quoted cookie
values are now handled consistently whether or not they include special attributes
like
Domain
. Also fixed :class:~aiohttp.CookieJar
to ensure shared cookies (domain="", path="")respect the
quote_cookie
parameter, making cookie quoting behavior consistent forall cookies -- by :user:
bdraco
.Related issues and pull requests on GitHub:
:issue:
2683
, :issue:5397
, :issue:7993
, :issue:11112
.Fixed an issue where cookies with duplicate names but different domains or paths
were lost when updating the cookie jar. The :class:
~aiohttp.ClientSession
cookie jar now correctly stores all cookies even if they have the same name but
different domain or path, following the :rfc:
6265#section-5.3
storage model -- by :user:bdraco
.Note that :attr:
ClientResponse.cookies <aiohttp.ClientResponse.cookies>
returnsa :class:
~http.cookies.SimpleCookie
which uses the cookie name as a key, soonly the last cookie with each name is accessible via this interface. All cookies
can be accessed via :meth:
ClientResponse.headers.getall('Set-Cookie') <multidict.MultiDictProxy.getall>
if needed.Related issues and pull requests on GitHub:
:issue:
4486
, :issue:11105
, :issue:11106
.Miscellaneous internal changes
Avoided creating closed futures in
ResponseHandler
that will never be awaited -- by :user:bdraco
.Related issues and pull requests on GitHub:
:issue:
11107
.Downgraded the logging level for connector close errors from ERROR to DEBUG, as these are expected behavior with TLS 1.3 connections -- by :user:
bdraco
.Related issues and pull requests on GitHub:
:issue:
11114
.v3.12.6
Compare Source
===================
Bug fixes
Fixed spurious "Future exception was never retrieved" warnings for connection lost errors when the connector is not closed -- by :user:
bdraco
.When connections are lost, the exception is now marked as retrieved since it is always propagated through other means, preventing unnecessary warnings in logs.
Related issues and pull requests on GitHub:
:issue:
11100
.v3.12.4
Compare Source
===================
Bug fixes
Fixed connector not waiting for connections to close before returning from :meth:
~aiohttp.BaseConnector.close
(partial backport of :pr:3733
) -- by :user:atemate
and :user:bdraco
.Related issues and pull requests on GitHub:
:issue:
1925
, :issue:11074
.v3.12.3
Compare Source
===================
Bug fixes
Fixed memory leak in :py:meth:
~aiohttp.CookieJar.filter_cookies
that caused unbounded memory growthwhen making requests to different URL paths -- by :user:
bdraco
and :user:Cycloctane
.Related issues and pull requests on GitHub:
:issue:
11052
, :issue:11054
.v3.12.2
Compare Source
===================
Bug fixes
Fixed
Content-Length
header not being set to0
for non-GET requests withNone
body -- by :user:bdraco
.Non-GET requests (
POST
,PUT
,PATCH
,DELETE
) withNone
as the body now correctly set theContent-Length
header to0
, matching the behavior of requests with empty bytes (b""
). This regression was introduced in aiohttp 3.12.1.Related issues and pull requests on GitHub:
:issue:
11035
.v3.12.1
Compare Source
===================
Features
Added support for reusable request bodies to enable retries, redirects, and digest authentication -- by :user:
bdraco
and :user:GLGDLY
.Most payloads can now be safely reused multiple times, fixing long-standing issues where POST requests with form data or file uploads would fail on redirects with errors like "Form data has been processed already" or "I/O operation on closed file". This also enables digest authentication to work with request bodies and allows retry mechanisms to resend requests without consuming the payload. Note that payloads derived from async iterables may still not be reusable in some cases.
Related issues and pull requests on GitHub:
:issue:
5530
, :issue:5577
, :issue:9201
, :issue:11017
.v3.12.0
Compare Source
===================
Bug fixes
Fixed :py:attr:
~aiohttp.web.WebSocketResponse.prepared
property to correctly reflect the prepared state, especially during timeout scenarios -- by :user:bdraco
Related issues and pull requests on GitHub:
:issue:
6009
, :issue:10988
.Response is now always True, instead of using MutableMapping behaviour (False when map is empty)
Related issues and pull requests on GitHub:
:issue:
10119
.Fixed connection reuse for file-like data payloads by ensuring buffer
truncation respects content-length boundaries and preventing premature
connection closure race -- by :user:
bdraco
.Related issues and pull requests on GitHub:
:issue:
10325
, :issue:10915
, :issue:10941
, :issue:10943
.Fixed pytest plugin to not use deprecated :py:mod:
asyncio
policy APIs.Related issues and pull requests on GitHub:
:issue:
10851
.Fixed :py:class:
~aiohttp.resolver.AsyncResolver
not using theloop
argument in versions 3.x where it should still be supported -- by :user:bdraco
.Related issues and pull requests on GitHub:
:issue:
10951
.Features
Added a comprehensive HTTP Digest Authentication client middleware (DigestAuthMiddleware)
that implements RFC 7616. The middleware supports all standard hash algorithms
(MD5, SHA, SHA-256, SHA-512) with session variants, handles both 'auth' and
'auth-int' quality of protection options, and automatically manages the
authentication flow by intercepting 401 responses and retrying with proper
credentials -- by :user:
feus4177
, :user:TimMenninger
, and :user:bdraco
.Related issues and pull requests on GitHub:
:issue:
2213
, :issue:10725
.Added client middleware support -- by :user:
bdraco
and :user:Dreamsorcerer
.This change allows users to add middleware to the client session and requests, enabling features like
authentication, logging, and request/response modification without modifying the core
request logic. Additionally, the
session
attribute was added toClientRequest
,allowing middleware to access the session for making additional requests.
Related issues and pull requests on GitHub:
:issue:
9732
, :issue:10902
, :issue:10945
, :issue:10952
, :issue:10959
, :issue:10968
.Allow user setting zlib compression backend -- by :user:
TimMenninger
This change allows the user to call :func:
aiohttp.set_zlib_backend()
with thezlib compression module of their choice. Default behavior continues to use
the builtin
zlib
library.Related issues and pull requests on GitHub:
:issue:
9798
.Added support for overriding the base URL with an absolute one in client sessions
-- by :user:
vivodi
.Related issues and pull requests on GitHub:
:issue:
10074
.Added
host
parameter toaiohttp_server
fixture -- by :user:christianwbrock
.Related issues and pull requests on GitHub:
:issue:
10120
.Detect blocking calls in coroutines using BlockBuster -- by :user:
cbornet
.Related issues and pull requests on GitHub:
:issue:
10433
.Added
socket_factory
to :py:class:aiohttp.TCPConnector
to allow specifying custom socket options-- by :user:
TimMenninger
.Related issues and pull requests on GitHub:
:issue:
10474
, :issue:10520
, :issue:10961
, :issue:10962
.Started building armv7l manylinux wheels -- by :user:
bdraco
.Related issues and pull requests on GitHub:
:issue:
10797
.Implemented shared DNS resolver management to fix excessive resolver object creation
when using multiple client sessions. The new
_DNSResolverManager
singleton ensuresonly one
DNSResolver
object is created for default configurations, significantlyreducing resource usage and improving performance for applications using multiple
client sessions simultaneously -- by :user:
bdraco
.Related issues and pull requests on GitHub:
:issue:
10847
, :issue:10923
, :issue:10946
.Upgraded to LLHTTP 9.3.0 -- by :user:
Dreamsorcerer
.Related issues and pull requests on GitHub:
:issue:
10972
.Optimized small HTTP requests/responses by coalescing headers and body into a single TCP packet -- by :user:
bdraco
.This change enhances network efficiency by reducing the number of packets sent for small HTTP payloads, improving latency and reducing overhead. Most importantly, this fixes compatibility with memory-constrained IoT devices that can only perform a single read operation and expect HTTP requests in one packet. The optimization uses zero-copy
writelines
when coalescing data and works with both regular and chunked transfer encoding.When
aiohttp
uses client middleware to communicate with anaiohttp
server, connection reuse is more likely to occur since complete responses arrive in a single packet for small payloads.This aligns
aiohttp
with other popular HTTP clients that already coalesce small requests.Related issues and pull requests on GitHub:
:issue:
10991
.Improved documentation
Improved documentation for middleware by adding warnings and examples about
request body stream consumption. The documentation now clearly explains that
request body streams can only be read once and provides best practices for
sharing parsed request data between middleware and handlers -- by :user:
bdraco
.Related issues and pull requests on GitHub:
:issue:
2914
.Packaging updates and notes for downstreams
Removed non SPDX-license description from
setup.cfg
-- by :user:devanshu-ziphq
.Related issues and pull requests on GitHub:
:issue:
10662
.Added support for building against system
llhttp
library -- by :user:mgorny
.This change adds support for :envvar:
AIOHTTP_USE_SYSTEM_DEPS
environment variable thatcan be used to build aiohttp against the system install of the
llhttp
library ratherthan the vendored one.
Related issues and pull requests on GitHub:
:issue:
10759
.aiodns
is now installed on Windows with speedups extra -- by :user:bdraco
.As of
aiodns
3.3.0,SelectorEventLoop
is no longer required when usingpycares
4.7.0 or later.Related issues and pull requests on GitHub:
:issue:
10823
.Fixed compatibility issue with Cython 3.1.1 -- by :user:
bdraco
Related issues and pull requests on GitHub:
:issue:
10877
.Contributor-facing changes
Sped up tests by disabling
blockbuster
fixture fortest_static_file_huge
andtest_static_file_huge_cancel
tests -- by :user:dikos1337
.Related issues and pull requests on GitHub:
:issue:
9705
, :issue:10761
.Updated tests to avoid using deprecated :py:mod:
asyncio
policy APIs andmake it compatible with Python 3.14.
Related issues and pull requests on GitHub:
:issue:
10851
.Added Winloop to test suite to support in the future -- by :user:
Vizonex
.Related issues and pull requests on GitHub:
:issue:
10922
.Miscellaneous internal changes
Added support for the
partitioned
attribute in theset_cookie
method.Related issues and pull requests on GitHub:
:issue:
9870
.Setting :attr:
aiohttp.web.StreamResponse.last_modified
to an unsupported type will now raise :exc:TypeError
instead of silently failing -- by :user:bdraco
.Related issues and pull requests on GitHub:
:issue:
10146
.googleapis/google-auth-library-python (google-auth)
v2.40.3
Compare Source
Bug Fixes
v2.40.2
Compare Source
Bug Fixes
psycopg/psycopg2 (psycopg2-binary)
v2.9.10
Compare Source
pytest-dev/pytest (pytest)
v8.4.0
Compare Source
pytest 8.4.0 (2025-06-02)
Removals and backward incompatible breaking changes
#11372: Async tests will now fail, instead of warning+skipping, if you don't have any suitable plugin installed.
#12346: Tests will now fail, instead of raising a warning, if they return any value other than None.
#12874: We dropped support for Python 3.8 following its end of life (2024-10-07).
#12960: Test functions containing a yield now cause an explicit error. They have not been run since pytest 4.0, and were previously marked as an expected failure and deprecation warning.
See
the docs <yield tests deprecated>
{.interpreted-text role="ref"} for more information.Deprecations (removal in next major release)
autouse=True
. For guidance on how to work around this warning seesync-test-async-fixture
{.interpreted-text role="ref"}.New features
#11538: Added
pytest.RaisesGroup
{.interpreted-text role="class"} as an equivalent topytest.raises
{.interpreted-text role="func"} for expectingExceptionGroup
{.interpreted-text role="exc"}. Also addspytest.RaisesExc
{.interpreted-text role="class"} which is now the logic behindpytest.raises
{.interpreted-text role="func"} and used as parameter topytest.RaisesGroup
{.interpreted-text role="class"}.RaisesGroup
includes the ability to specify multiple different expected exceptions, the structure of nested exception groups, and flags for emulatingexcept* <except_star>
{.interpreted-text role="ref"}. Seeassert-matching-exception-groups
{.interpreted-text role="ref"} and docstrings for more information.#12081: Added
capteesys
{.interpreted-text role="fixture"} to capture AND pass output to next handler set by--capture=
.#12504:
pytest.mark.xfail
{.interpreted-text role="func"} now acceptspytest.RaisesGroup
{.interpreted-text role="class"} for theraises
parameter when you expect an exception group. You can also pass apytest.RaisesExc
{.interpreted-text role="class"} if you e.g. want to make use of thecheck
parameter.#12713: New [--force-short-summary]{.title-ref} option to force condensed summary output regardless of verbosity level.
This lets users still see condensed summary output of failures for quick reference in log files from job outputs, being especially useful if non-condensed output is very verbose.
#12749: pytest traditionally collects classes/functions in the test module namespace even if they are imported from another file.
For example:
contents of src/domain.py
contents of tests/test_testament.py
#12765: Thresholds to trigger snippet truncation can now be set with
truncation_limit_lines
{.interpreted-text role="confval"} andtruncation_limit_chars
{.interpreted-text role="confval"}.See
truncation-params
{.interpreted-text role="ref"} for more information.#13125:
console_output_style
{.interpreted-text role="confval"} now supportstimes
to show execution time of each test.#13192:
pytest.raises
{.interpreted-text role="func"} will now raise a warning when passing an empty string tomatch
, as this will match against any value. Usematch="^$"
if you want to check that an exception has no message.#13192:
pytest.raises
{.interpreted-text role="func"} will now print a helpful string diff if matching fails and the match parameter has^
and$
and is otherwise escaped.#13192: You can now pass
with pytest.raises(check=fn): <pytest.raises>
{.interpreted-text role="func"}, wherefn
is a function which takes a raised exception and returns a boolean. Theraises
fails if no exception was raised (as usual), passes if an exception is raised andfn
returnsTrue
(as well asmatch
and the type matching, if specified, which are checked before), and propagates the exception iffn
returnsFalse
(which likely also fails the test).#13228:
hidden-param
{.interpreted-text role="ref"} can now be used inid
ofpytest.param
{.interpreted-text role="func"} or inids
ofMetafunc.parametrize <pytest.Metafunc.parametrize>
{.interpreted-text role="py:func"}.It hides the parameter set from the test name.
#13253: New flag:
--disable-plugin-autoload <disable_plugin_autoload>
{.interpreted-text role="ref"} which works as an alternative toPYTEST_DISABLE_PLUGIN_AUTOLOAD
{.interpreted-text role="envvar"} when setting environment variables is inconvenient; and allows setting it in config files withaddopts
{.interpreted-text role="confval"}.Improvements in existing functionality
#10224: pytest's
short
andlong
traceback styles (how-to-modifying-python-tb-printing
{.interpreted-text role="ref"})now have partial
657
{.interpreted-text role="pep"} support and will show specific code segments in thetraceback.
-- by
ammaraskar
{.interpreted-text role="user"}#11118: Now
pythonpath
{.interpreted-text role="confval"} configures [$PYTHONPATH]{.title-ref} earlier than before during the initialization process, which now also affects plugins loaded via the [-p]{.title-ref} command-line option.-- by
millerdev
{.interpreted-text role="user"}#11381: The
type
parameter of theparser.addini
method now accepts ["int"]{.title-ref} and"float"
parameters, facilitating the parsing of configuration values in the configuration file.Example:
The [pytest.ini]{.title-ref} file:
#11525: Fixtures are now clearly represented in the output as a "fixture object", not as a normal function as before, making it easy for beginners to catch mistakes such as referencing a fixture declared in the same module but not requested in the test function.
-- by
the-compiler
{.interpreted-text role="user"} andglyphack
{.interpreted-text role="user"}#12426: A warning is now issued when
pytest.mark.usefixtures ref
{.interpreted-text role="ref"} is used without specifying any fixtures. Previously, empty usefixtures markers were silently ignored.#12707: Exception chains can be navigated when dropped into Pdb in Python 3.13+.
#12736: Added a new attribute [name]{.title-ref} with the fixed value ["pytest tests"]{.title-ref} to the root tag [testsuites]{.title-ref} of the junit-xml generated by pytest.
This attribute is part of many junit-xml specifications and is even part of the [junit-10.xsd]{.title-ref} specification that pytest's implementation is based on.
#12943: If a test fails with an exceptiongroup with a single exception, the contained exception will now be displayed in the short test summary info.
#12958: A number of
unraisable <unraisable>
{.interpreted-text role="ref"} enhancements:tracemalloc
{.interpreted-text role="mod"} allocation traceback (if available).StopIteration
{.interpreted-text role="class"} in test failures.pytest.PytestUnraisableExceptionWarning
{.interpreted-text role="class"} exception if raised.repr
of the unraisable object in the unraisable hook so you get the latest information if available, and should help with resurrection of the object.#13010:
pytest.approx
{.interpreted-text role="func"} now can compare collections that contain numbers and non-numbers mixed.#13016: A number of
threadexception <unraisable>
{.interpreted-text role="ref"} enhancements:tracemalloc
{.interpreted-text role="mod"} allocation traceback (if available).StopIteration
{.interpreted-text role="class"} in test failures.pytest.PytestUnhandledThreadExceptionWarning
{.interpreted-text role="class"} exception if raised.name
of the thread object in the excepthook which should help with resurrection of the thread.#13031: An empty parameter set as in
pytest.mark.parametrize([], ids=idfunc)
will no longer trigger a call toidfunc
with internal objects.#13115: Allows supplying
ExceptionGroup[Exception]
andBaseExceptionGroup[BaseException]
topytest.raises
to keep full typing onExceptionInfo <pytest.ExceptionInfo>
{.interpreted-text role="class"}:Parametrizing with other exception types remains an error - we do not check the types of child exceptions and thus do not permit code that might look like we do.
#13122: The
--stepwise
mode received a number of improvements:It no longer forgets the last failed test in case pytest is executed later without the flag.
This enables the following workflow:
--stepwise
, pytest then stops at the first failing test;--stepwise
flag (for example in an IDE), until it is fixed.--stepwise
again and pytest will continue from the previously failed test, and if it passes, continue on to the next tests.Previously, at step 3, pytest would start from the beginning, forgetting the previously failed test.
This change however might cause issues if the
--stepwise
mode is used far apart in time, as the state might get stale, so the internal state will be reset automatically in case the test suite changes (for now only the number of tests are considered for this, we might change/improve this on the future).New
--stepwise-reset
/--sw-reset
flag, allowing the user to explicitly reset the stepwise state and restart the workflow from the beginning.#13308: Added official support for Python 3.14.
#13380: Fix
ExceptionGroup
{.interpreted-text role="class"} traceback filtering to exclude pytest internals.#13415: The author metadata of the BibTex example is now correctly formatted with last names following first names.
An example of BibLaTex has been added.
BibTex and BibLaTex examples now clearly indicate that what is cited is software.
-- by
willynilly
{.interpreted-text role="user"}#13420: Improved test collection performance by optimizing path resolution used in
FSCollector
.#13457: The error message about duplicate parametrization no longer displays an internal stack trace.
#4112: Using
pytest.mark.usefixtures <pytest.mark.usefixtures ref>
{.interpreted-text role="ref"} onpytest.param
{.interpreted-text role="func"} now produces an error instead of silently doing nothing.#5473: Replace [:]{.title-ref} with [;]{.title-ref} in the assertion rewrite warning message so it can be filtered using standard Python warning filters before calling
pytest.main
{.interpreted-text role="func"}.pygments
dependency is now required, causing output always to be source-highlighted (unless disabled via the--code-highlight=no
CLI option).Bug fixes
#10404: Apply filterwarnings from config/cli as soon as possible, and revert them as late as possible
so that warnings as errors are collected throughout the pytest run and before the
unraisable and threadexcept hooks are removed.
This allows very late warnings and unraisable/threadexcept exceptions to fail the test suite.
This also changes the warning that the lsof plugin issues from PytestWarning to the new warning PytestFDWarning so it can be more easily filtered.
#11067: The test report is now consistent regardless if the test xfailed via
pytest.mark.xfail <pytest.mark.xfail ref>
{.interpreted-text role="ref"} orpytest.fail
{.interpreted-text role="func"}.Previously, xfailed tests via the marker would have the string
"reason: "
prefixed to the message, while those xfailed via the function did not. The prefix has been removed.#12008: In
11220
{.interpreted-text role="pr"}, an unintended change in reordering was introduced by changing the way indices were assigned to direct params. More specifically, before that change, the indices of direct params to metafunc's callspecs were assigned after all parametrizations took place. Now, that change is reverted.#12863: Fix applying markers, including
pytest.mark.parametrize <pytest.mark.parametrize ref>
{.interpreted-text role="ref"} when placed above [@staticmethod]{.title-ref} or [@classmethod]{.title-ref}.#12929: Handle StopIteration from test cases, setup and teardown correctly.
#12938: Fixed
--durations-min
argument not respected if-vv
is used.#12946: Fixed missing help for
pdb
{.interpreted-text role="mod"} commands wrapped by pytest -- byadamchainz
{.interpreted-text role="user"}.#12981: Prevent exceptions in
pytest.Config.add_cleanup
{.interpreted-text role="func"} callbacks preventing further cleanups.#13047: Restore
pytest.approx
{.interpreted-text role="func"} handling of equality checks between [bool]{.title-ref} and [numpy.bool_]{.title-ref} types.Comparing [bool]{.title-ref} and [numpy.bool_]{.title-ref} using
pytest.approx
{.interpreted-text role="func"} accidentally changed in version [8.3.4]{.title-ref} and [8.3.5]{.title-ref} to no longer match:This has now been fixed:
#13119: Improved handling of invalid regex patterns for filter warnings by providing a clear error message.
#13175: The diff is now also highlighted correctly when comparing two strings.
#13248: Fixed an issue where passing a
scope
inMetafunc.parametrize <pytest.Metafunc.parametrize>
{.interpreted-text role="py:func"} withindirect=True
could result in other fixtures being unable to depend on the parametrized fixture.
#13291: Fixed
repr
ofattrs
objects in assertion failure messages when usingattrs>=25.2
.#13312: Fixed a possible
KeyError
crash on PyPy during collection of tests involving higher-scoped parameters.#13345: Fix type hints for
pytest.TestReport.when
{.interpreted-text role="attr"} andpytest.TestReport.location
{.interpreted-text role="attr"}.#13377: Fixed handling of test methods with positional-only parameter syntax.
Now, methods are supported that formally define
self
as positional-onlyand/or fixture parameters as keyword-only, e.g.:
Before, this caused an internal error in pytest.
#13384: Fixed an issue where pytest could report negative durations.
#13420: Added
lru_cache
tonodes._check_initialpaths_for_relpath
.#9037: Honor
disable_test_id_escaping_and_forfeit_all_rights_to_community_support
{.interpreted-text role="confval"} when escaping ids in parametrized tests.Improved documentation
#12535: [This
example]{.title-ref}<https://docs.pytest.org/en/latest/example/simple.html#making-test-result-information-available-in-fixtures>
showed
print
statements that do not exactly reflect what thedifferent branches actually do. The fix makes the example more precise.
#13218: Pointed out in the
pytest.approx
{.interpreted-text role="func"} documentation that it considers booleans unequal to numeric zero or one.#13221: Improved grouping of CLI options in the
--help
output.#6649: Added
~pytest.TerminalReporter
{.interpreted-text role="class"} to theapi-reference
{.interpreted-text role="ref"} documentation page.#8612: Add a recipe for handling abstract test classes in the documentation.
A new example has been added to the documentation to demonstrate how to use a mixin class to handle abstract
test classes without manually setting the
__test__
attribute for subclasses.This ensures that subclasses of abstract test classes are automatically collected by pytest.
Packaging updates and notes for downstreams
colorama
,iniconfig
,and
packaging
; and bumped the minimum allowed versionof
exceptiongroup
forpython_version<'3.11'
from a releasecandidate to a full release.
Contributor-facing changes
#12017: Mixed internal improvements:
MockTiming
into_pytest.timing
.-- by
RonnyPfannschmidt
{.interpreted-text role="user"}#12647: Fixed running the test suite with the
hypothesis
pytest plugin.Miscellaneous internal changes
~pytest.TerminalReporter
{.interpreted-text role="class"} to the public pytest API, as it is part of the signature of thepytest_terminal_summary
{.interpreted-text role="hook"} hook.Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.