Skip to content

Fix crashes during interpreter shutdown on all Python versions#499

Closed
nbouvrette wants to merge 1 commit into
python-greenlet:masterfrom
nbouvrette:fix/safe-getcurrent-during-finalization
Closed

Fix crashes during interpreter shutdown on all Python versions#499
nbouvrette wants to merge 1 commit into
python-greenlet:masterfrom
nbouvrette:fix/safe-getcurrent-during-finalization

Conversation

@nbouvrette
Copy link
Copy Markdown
Contributor

@nbouvrette nbouvrette commented Mar 11, 2026

Summary

Fix multiple SIGSEGV crash paths during Py_FinalizeEx on all Python versions (3.10–3.14). Observed in production on ARM64 (Python 3.11 + uWSGI with max-requests worker recycling) where greenlet was installed as a transitive dependency but never explicitly used by application code.

Relationship to PR #495

PR #495 partially addressed this class of crashes by adding murder_in_place() and _Py_IsFinalizing() guards, but only on Python < 3.11 (#if !GREENLET_PY311). Further investigation revealed that:

  1. The vulnerability exists on all Python versions (3.10–3.14), not just < 3.11 — Py_IsFinalizing() is set after atexit handlers complete on every version.
  2. Multiple crash paths were unguardedgetcurrent(), type checkers (GreenletChecker, MainGreenletExactChecker, ContextExactChecker), and clear_deleteme_list() had no shutdown protection.
  3. PR Fix SIGSEGV/SIGABRT during interpreter shutdown on Python < 3.11 #495's tests were smoke tests, not regression tests — they pass on both pre-fix (greenlet 3.1.1) and post-fix (3.3.2) versions, meaning they cannot detect if the fix is reverted.

This PR supersedes PR #495 by making all guards unconditional, protecting the remaining crash paths, and adding TDD-certified tests that demonstrably fail on unpatched greenlet 3.3.2.

Design

Two independent guards now protect all shutdown phases:

  1. g_greenlet_shutting_down — an atexit handler registered at module init (LIFO = runs first) sets this flag. Covers the atexit phase of Py_FinalizeEx, where Py_IsFinalizing() is still False on all Python versions.

  2. Py_IsFinalizing() — covers the GC collection and later phases of Py_FinalizeEx. A compatibility shim is provided for Python < 3.13 (where only the private _Py_IsFinalizing() existed).

These guards are checked in mod_getcurrent, PyGreenlet_GetCurrent, GreenletChecker, MainGreenletExactChecker, ContextExactChecker, clear_deleteme_list(), ThreadState::~ThreadState(), _green_dealloc_kill_started_non_main_greenlet, and ThreadState_DestroyNoGIL::AddPendingCall.

Root cause

_Py_IsFinalizing() is only set after atexit handlers complete inside Py_FinalizeEx on all Python versions:

Py_FinalizeEx()
├── call_py_exitfuncs()              ← atexit phase (Py_IsFinalizing() == False)
│   └── g_greenlet_shutting_down     ← our flag covers this gap
├── _PyRuntimeState_SetFinalizing()  ← Py_IsFinalizing() becomes True
├── _PyGC_CollectIfEnabled()         ← GC phase (__del__ methods run here)
│   └── Py_IsFinalizing()           ← standard API covers this
├── finalize_interp_clear()          ← type objects freed here

Without the guards, code running in atexit handlers (e.g. uWSGI plugin cleanup calling Py_FinalizeEx) or __del__ methods could call greenlet.getcurrent(), reaching into partially-torn-down C++ state and crashing in PyType_IsSubtype via GreenletChecker.

What changed

C++ shutdown guards (8 files)

File Change
PyModule.cpp g_greenlet_shutting_down + atexit handler made unconditional (was #if !GREENLET_PY311)
CObjects.cpp PyGreenlet_GetCurrent guard made unconditional
PyGreenlet.cpp murder_in_place() guard made unconditional
TThreadState.hpp clear_deleteme_list() + destructor guards made unconditional
TThreadStateDestroy.cpp AddPendingCall guard extended with g_greenlet_shutting_down
greenlet.cpp Atexit handler registration made unconditional
greenlet_refs.hpp Added guards to GreenletChecker + ContextExactChecker
greenlet_internal.hpp Added guard to MainGreenletExactChecker

Additional hardening

  • clear_deleteme_list() uses std::swap (zero-allocation) instead of copying the PythonAllocator-backed vector
  • deleteme vector uses std::allocator (system malloc) instead of PyMem_Malloc
  • ThreadState uses std::malloc/std::free instead of PyObject_Malloc
  • clear_deleteme_list() preserves pending Python exceptions around its cleanup loop

Tests (3 files)

  • 5 new TDD-certified regression tests in test_interpreter_shutdown.py — verified RED on greenlet 3.3.2 (UNGUARDED) and GREEN with fix (GUARDED) across Python 3.10–3.14
  • 3 strengthened smoke tests — assert getcurrent() still returns valid objects when called before greenlet's cleanup (guards against over-blocking)
  • Updated file docstring and section headers — organized 21 tests into 4 documented groups
  • Fixed test_dealloc_catches_GreenletExit_throws_other — use sys.unraisablehook instead of stderr capture (pytest compatibility)
  • Fixed test_version — skip gracefully on old setuptools that can't parse PEP 639 SPDX license format

TDD verification

Ran both test types against unpatched greenlet 3.3.2 and the patched code across 6 Python versions:

Python greenlet 3.3.2 (RED) Patched (GREEN)
3.9 N/A (requires-python >= 3.10) N/A
3.10 UNGUARDED GUARDED (None)
3.11 UNGUARDED GUARDED (None)
3.12 UNGUARDED GUARDED (None)
3.13 UNGUARDED GUARDED (None)
3.14 UNGUARDED GUARDED (None)

PR #495's tests were also re-evaluated as part of this work: all 9 original tests pass on both greenlet 3.1.1 (pre-#495) and 3.3.2 (post-#495), confirming they are smoke tests that cannot detect regressions. The 5 Group D tests added here are the true regression safety net.

Additionally, the crash reproducer (uWSGI + Flask on ARM64 Python 3.11) ran 45,000 requests with 0 crashes (15 worker recycling cycles) with the patched greenlet.

Test plan

  • Full local test suite: 158 passed, 3 skipped, 0 failed (pytest)
  • TDD RED/GREEN verification across Python 3.10–3.14 via Docker
  • Crash reproducer: 45,000 requests, 0 segfaults on ARM64 Python 3.11
  • Behavioral review: murder_in_place() guard only fires during shutdown, not normal thread exit (Group B tests verify GreenletExit/finally still work)
  • Full CI on all supported Python versions

Backport note

These fixes have already been backported to the maint/3.2 branch in PR #500 (targeting 3.2.6), since the previous backport (3.2.5 / PR #495) did not fully stabilize shutdown behavior.

nbouvrette added a commit to nbouvrette/greenlet that referenced this pull request Mar 11, 2026
@nbouvrette nbouvrette force-pushed the fix/safe-getcurrent-during-finalization branch 2 times, most recently from 17d17e3 to 733a419 Compare March 11, 2026 05:37
nbouvrette added a commit to nbouvrette/greenlet that referenced this pull request Mar 12, 2026
Ports all crash fixes from the main branch (PR python-greenlet#499) to maint/3.2 for
a 3.2.6 release targeting Python 3.9 stability.

Three root causes of SIGSEGV during Py_FinalizeEx on Python < 3.11:

1. clear_deleteme_list() vector allocation crash: replaced copy with
   std::swap and switched deleteme_t to std::allocator (system malloc).

2. ThreadState memory corruption: switched from PythonAllocator
   (PyObject_Malloc) to std::malloc/std::free.

3. getcurrent() crash on invalidated type objects: added atexit handler
   that sets g_greenlet_shutting_down before _Py_IsFinalizing() is set.

Also fixes exception preservation in clear_deleteme_list(), adds
Py_IsFinalizing() compat shim for Python < 3.13, Windows USS tolerance
for flaky memory test, and additional shutdown tests.

Made-with: Cursor
@nbouvrette nbouvrette force-pushed the fix/safe-getcurrent-during-finalization branch from 25a4dfa to e1fdf27 Compare March 24, 2026 11:20
@nbouvrette nbouvrette changed the title Fix crash in getcurrent()/greenlet construction during early Py_FinalizeEx Fix crashes during interpreter shutdown on all Python versions Mar 24, 2026
During Py_FinalizeEx, multiple greenlet code paths accessed
partially-destroyed Python state, causing SIGSEGV in production
(uWSGI worker recycling on ARM64 and x86_64, Python 3.11).

Root cause: _Py_IsFinalizing() is set AFTER atexit handlers complete
on ALL Python versions, leaving a window where getcurrent() and type
validators reach into torn-down C++ state.

Fix: Two independent guards now protect all shutdown phases:

1. g_greenlet_shutting_down — atexit handler registered at module init
   (LIFO = runs first). Covers the atexit phase where
   Py_IsFinalizing() is still False.

2. Py_IsFinalizing() — covers the GC collection and later phases.
   A compatibility shim is provided for Python < 3.13.

These guards are checked in mod_getcurrent, PyGreenlet_GetCurrent,
GreenletChecker, MainGreenletExactChecker, ContextExactChecker,
clear_deleteme_list, ThreadState destructor,
_green_dealloc_kill_started_non_main_greenlet, and AddPendingCall.

Additional hardening:
- clear_deleteme_list() uses std::swap (zero-allocation)
- deleteme vector uses std::allocator (system malloc)
- ThreadState uses std::malloc/std::free
- clear_deleteme_list() preserves pending Python exceptions

TDD-certified: tests fail on greenlet 3.3.2 and pass with the fix
across Python 3.10-3.14. Test suite: 21 shutdown tests (5 TDD
regression, 2 behavioral, 14 smoke with 3 strengthened).

Also fixes:
- test_dealloc_catches_GreenletExit_throws_other: use
  sys.unraisablehook for pytest compatibility
- test_version: skip gracefully on old setuptools (PEP 639)
- test_no_gil_on_free_threaded: use getattr for pylint compatibility
- Flaky USS memory test on Windows

Made-with: Cursor
@nbouvrette nbouvrette force-pushed the fix/safe-getcurrent-during-finalization branch from a4a6510 to 5745a6c Compare March 24, 2026 11:47
nbouvrette added a commit to nbouvrette/greenlet that referenced this pull request Mar 24, 2026
Backport of PR python-greenlet#499 (master) to maint/3.2 for greenlet 3.2.6, with all
shutdown guards made unconditional across Python 3.9-3.13.

The previous backport (3.2.5 / PR python-greenlet#495) only guarded Python < 3.11,
but the vulnerability exists on ALL Python versions: Py_IsFinalizing()
is set AFTER atexit handlers complete inside Py_FinalizeEx.

Two independent guards now protect all shutdown phases:

1. g_greenlet_shutting_down — atexit handler registered at module init
   (LIFO = runs first). Covers the atexit phase where
   Py_IsFinalizing() is still False.

2. Py_IsFinalizing() — covers the GC collection and later phases.
   A compatibility shim maps to _Py_IsFinalizing() on Python < 3.13.

These guards are checked in mod_getcurrent, PyGreenlet_GetCurrent,
GreenletChecker, MainGreenletExactChecker, ContextExactChecker,
clear_deleteme_list, ThreadState destructor,
_green_dealloc_kill_started_non_main_greenlet, and AddPendingCall.

Additional hardening:
- clear_deleteme_list() uses std::swap (zero-allocation)
- deleteme vector uses std::allocator (system malloc)
- ThreadState uses std::malloc/std::free
- clear_deleteme_list() preserves pending Python exceptions

TDD-certified: tests fail on greenlet 3.3.2 and pass with the fix
across Python 3.10-3.14. Docker verification on Python 3.9 and 3.10
confirms GUARDED on the maint/3.2 branch.

Also fixes:
- SPDX license identifier: Python-2.0 -> PSF-2.0
- test_dealloc_catches_GreenletExit_throws_other: use
  sys.unraisablehook for pytest compatibility
- test_version: skip gracefully on old setuptools
- Flaky USS memory test on Windows

Made-with: Cursor
@jamadden
Copy link
Copy Markdown
Contributor

Thanks for this PR, it looks sound to me.

I've made some minor changes (be more idiomatic, add some more comments, resolve the conflict) which I'll merge after the tests pass.

@jamadden
Copy link
Copy Markdown
Contributor

Apparently I handled the merge wrong as far as the UI is concerned, but this has been merged.

@jamadden jamadden closed this Mar 31, 2026
@nbouvrette nbouvrette deleted the fix/safe-getcurrent-during-finalization branch March 31, 2026 19:01
@nbouvrette
Copy link
Copy Markdown
Contributor Author

Thanks @jamadden - are you consider #500 as well? it would really be great if its possible to backport this fix

@nbouvrette
Copy link
Copy Markdown
Contributor Author

I can bring all your other commits in #500 if this help

nbouvrette added a commit to nbouvrette/greenlet that referenced this pull request Mar 31, 2026
Port the maintainer's (jamadden) follow-up refinements from master
to the maint/3.2 backport branch:

- Refactor atexit registration to use NewReference/Require framework
  instead of nested ifs and manual decrefs. Crash safety is not
  optional. (38bf3d7)
- Namespace g_greenlet_shutting_down as static in namespace greenlet
  instead of extern across multiple files. (c545379)
- Encapsulate the dual-guard pattern in IsShuttingDown() function,
  replacing all g_greenlet_shutting_down || Py_IsFinalizing() checks.
  (879a868, fbb4bcd)
- Add comment explaining why g_greenlet_shutting_down does not need
  std::atomic<int>. (c79fb07)
- Add comments on deliberate leaking and exception safety in
  clear_deleteme_list. (6c517cb)
- Comment cleanup and formatting. (fcf6f72, 98e8fb0 partial)

Skipped (not applicable to maint/3.2):
- CI: bump docker/setup-qemu-action (7b56329) — different CI config
- test_greenlet: revert getattr for _is_gil_enabled (98e8fb0) — test
  does not exist on maint/3.2

All 21 shutdown tests pass, full suite 159 passed / 1 skipped.

Made-with: Cursor
@nbouvrette
Copy link
Copy Markdown
Contributor Author

nbouvrette commented Mar 31, 2026

@jamadden I ported back all your latest changes on #500

Ported (7 of 8 commits):

Change Files Why port
Atexit refactor — use NewReference/Require framework greenlet.cpp Cleaner code, crash safety non-optional (no PyErr_Clear fallback)
Namespace the flagstatic int in namespace greenlet 7 C++ files Better scoping, removes extern declarations from 3 files
IsShuttingDown() function greenlet_refs.hpp + 6 callers Encapsulates the dual-guard pattern, reduces code duplication
Atomicity comment greenlet_refs.hpp Documents why std::atomic isn't needed
clear_deleteme_list comments TThreadState.hpp Documents deliberate leaking and exception safety
Comment cleanup 4 files Formatting parity with master
test_leaks.py comment reformat test_leaks.py Formatting parity

Skipped (2 items):

  • CI bump (docker/setup-qemu-action v3→v4) — different CI config on maint/3.2
  • test_greenlet.py getattr revert — test_no_gil_on_free_threaded doesn't exist on maint/3.2

Verification: Build succeeded, all 21 shutdown tests passed, full suite 159 passed / 1 skipped.

jamadden added a commit that referenced this pull request Apr 4, 2026
shaldengeki added a commit to shaldengeki/monorepo that referenced this pull request Apr 14, 2026
Bumps the pip group with 10 updates:

| Package | From | To |
| --- | --- | --- |
| [astroid](https://github.com/pylint-dev/astroid) | `4.0.4` | `4.1.2` |
| [boto3](https://github.com/boto/boto3) | `1.42.83` | `1.42.88` |
| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) |
`1.42.83` | `1.42.88` |
| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.4` |
`4.9.6` |
| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |
| [virtualenv](https://github.com/pypa/virtualenv) | `21.2.0` | `21.2.1`
|
| [botocore](https://github.com/boto/botocore) | `1.42.83` | `1.42.88` |
| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.2` |
`3.4.0` |
| [librt](https://github.com/mypyc/librt) | `0.8.1` | `0.9.0` |
| [python-discovery](https://github.com/tox-dev/python-discovery) |
`1.2.1` | `1.2.2` |

Updates `astroid` from 4.0.4 to 4.1.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pylint-dev/astroid/releases">astroid's
releases</a>.</em></p>
<blockquote>
<h2>v4.1.2</h2>
<h1>What's New in astroid 4.1.2?</h1>
<p>Release date: 2026-03-22</p>
<ul>
<li>
<p>Fix crash accessing property <code>fset</code> in generic classes
with type annotations.
Closes <a
href="https://redirect.github.com/pylint-dev/astroid/issues/2996">#2996</a></p>
</li>
<li>
<p>Fix infinite recursion caused by cyclic inference in
<code>Constraint</code>.</p>
</li>
<li>
<p>Fix <code>RecursionError</code> in <code>_compute_mro()</code> when
circular class hierarchies
are created through runtime name rebinding. Circular bases are now
resolved
to the original class instead of recursing.</p>
<p>Closes <a
href="https://redirect.github.com/pylint-dev/astroid/issues/2967">#2967</a>
Closes <a
href="https://redirect.github.com/pylint-dev/pylint/issues/10821">pylint-dev/pylint#10821</a></p>
</li>
<li>
<p>Fix <code>DuplicateBasesError</code> crash in dataclass transform
when a class has
duplicate bases in its MRO (e.g., <code>Protocol</code> appearing both
directly and
indirectly). Catch <code>MroError</code> at <code>.mro()</code> call
sites in
<code>brain_dataclasses.py</code>, consistent with the existing pattern
elsewhere.</p>
<p>Closes <a
href="https://redirect.github.com/pylint-dev/astroid/issues/2628">#2628</a></p>
</li>
<li>
<p>Fix <code>FunctionModel</code> returning descriptor attributes for
builtin functions.</p>
<p>Closes <a
href="https://redirect.github.com/pylint-dev/astroid/issues/2743">#2743</a></p>
</li>
<li>
<p>Catch <code>MemoryError</code> when inferring f-strings with
extremely large format
widths (e.g. <code>f'{0:11111111111}'</code>) so that inference yields
<code>Uninferable</code>
instead of crashing.</p>
<p>Closes <a
href="https://redirect.github.com/pylint-dev/astroid/issues/2762">#2762</a></p>
</li>
<li>
<p>Fix <code>ValueError</code> in <code>__str__</code>/<code>repr</code>
and error messages when nodes have
extreme values (very long identifiers or large integers). Clamp pprint
width
to a minimum of 1 and truncate oversized values in error messages.</p>
<p>Closes <a
href="https://redirect.github.com/pylint-dev/astroid/issues/2764">#2764</a></p>
</li>
</ul>
<h2>v4.1.1</h2>
<h1>What's New in astroid 4.1.1?</h1>
<p>Release date: 2026-02-22</p>
<ul>
<li>
<p>Let <code>UnboundMethodModel</code> inherit from
<code>FunctionModel</code> to improve inference of
dunder methods for unbound methods.</p>
<p>Refs <a
href="https://redirect.github.com/pylint-dev/astroid/issues/2741">#2741</a></p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pylint-dev/astroid/blob/main/ChangeLog">astroid's
changelog</a>.</em></p>
<blockquote>
<h1>What's New in astroid 4.1.2?</h1>
<p>Release date: 2026-03-22</p>
<ul>
<li>
<p>Fix crash accessing property <code>fset</code> in generic classes
with type annotations.
Closes <a
href="https://redirect.github.com/pylint-dev/astroid/issues/2996">#2996</a></p>
</li>
<li>
<p>Fix infinite recursion caused by cyclic inference in
<code>Constraint</code>.</p>
</li>
<li>
<p>Fix <code>RecursionError</code> in <code>_compute_mro()</code> when
circular class hierarchies
are created through runtime name rebinding. Circular bases are now
resolved
to the original class instead of recursing.</p>
<p>Closes <a
href="https://redirect.github.com/pylint-dev/astroid/issues/2967">#2967</a>
Closes <a
href="https://redirect.github.com/pylint-dev/pylint/issues/10821">pylint-dev/pylint#10821</a></p>
</li>
<li>
<p>Fix <code>DuplicateBasesError</code> crash in dataclass transform
when a class has
duplicate bases in its MRO (e.g., <code>Protocol</code> appearing both
directly and
indirectly). Catch <code>MroError</code> at <code>.mro()</code> call
sites in
<code>brain_dataclasses.py</code>, consistent with the existing pattern
elsewhere.</p>
<p>Closes <a
href="https://redirect.github.com/pylint-dev/astroid/issues/2628">#2628</a></p>
</li>
<li>
<p>Fix <code>FunctionModel</code> returning descriptor attributes for
builtin functions.</p>
<p>Closes <a
href="https://redirect.github.com/pylint-dev/astroid/issues/2743">#2743</a></p>
</li>
<li>
<p>Catch <code>MemoryError</code> when inferring f-strings with
extremely large format
widths (e.g. <code>f'{0:11111111111}'</code>) so that inference yields
<code>Uninferable</code>
instead of crashing.</p>
<p>Closes <a
href="https://redirect.github.com/pylint-dev/astroid/issues/2762">#2762</a></p>
</li>
<li>
<p>Fix <code>ValueError</code> in <code>__str__</code>/<code>repr</code>
and error messages when nodes have
extreme values (very long identifiers or large integers). Clamp pprint
width
to a minimum of 1 and truncate oversized values in error messages.</p>
<p>Closes <a
href="https://redirect.github.com/pylint-dev/astroid/issues/2764">#2764</a></p>
</li>
</ul>
<h1>What's New in astroid 4.1.1?</h1>
<p>Release date: 2026-02-22</p>
<ul>
<li>
<p>Let <code>UnboundMethodModel</code> inherit from
<code>FunctionModel</code> to improve inference of
dunder methods for unbound methods.</p>
<p>Refs <a
href="https://redirect.github.com/pylint-dev/astroid/issues/2741">#2741</a></p>
</li>
<li>
<p>Filter <code>Unknown</code> from <code>UnboundMethod</code> and
<code>Super</code> special attribute</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pylint-dev/astroid/commit/91dac1330a52c8e606f18720d02667d49cdce8bd"><code>91dac13</code></a>
Bump astroid to 4.1.2, update changelog (<a
href="https://redirect.github.com/pylint-dev/astroid/issues/3011">#3011</a>)</li>
<li><a
href="https://github.com/pylint-dev/astroid/commit/796eba878e3b1767bc817298d0243e1d1c7c0d21"><code>796eba8</code></a>
objectmodel: fix crash analyzing property fset in generic classes with
type a...</li>
<li><a
href="https://github.com/pylint-dev/astroid/commit/ca814f0d7106a24f5d2b101ee7aaabaad3428b61"><code>ca814f0</code></a>
Update CI workflow to include maintenance branch (<a
href="https://redirect.github.com/pylint-dev/astroid/issues/2999">#2999</a>)</li>
<li><a
href="https://github.com/pylint-dev/astroid/commit/75938774dfaff2e062abd519a82670a9bc19fbc0"><code>7593877</code></a>
[Backport maintenance/4.1.x] Fix cyclic inference by constraints (<a
href="https://redirect.github.com/pylint-dev/astroid/issues/2998">#2998</a>)</li>
<li><a
href="https://github.com/pylint-dev/astroid/commit/3f63f905cb2f2e01cdf11451d1ec7733239adbea"><code>3f63f90</code></a>
Fix builtin functions incorrectly exposing descriptor attributes (<a
href="https://redirect.github.com/pylint-dev/astroid/issues/2983">#2983</a>)</li>
<li><a
href="https://github.com/pylint-dev/astroid/commit/be7479e2e9980e62801c8cb4bb36263f1d5bb616"><code>be7479e</code></a>
Fix ValueError in <strong>str</strong>/repr and error messages with
extreme values (<a
href="https://redirect.github.com/pylint-dev/astroid/issues/2971">#2971</a>)</li>
<li><a
href="https://github.com/pylint-dev/astroid/commit/1c9938d4ef2469117d098587aecd022795d4bdbf"><code>1c9938d</code></a>
Fix RecursionError in _compute_mro() on circular class hierarchies (<a
href="https://redirect.github.com/pylint-dev/astroid/issues/2968">#2968</a>)</li>
<li><a
href="https://github.com/pylint-dev/astroid/commit/98938adeba4693f0af4ddd39687f8cc86640e8ba"><code>98938ad</code></a>
[Backport maintenance/4.1.x] Fix DuplicateBasesError crash in dataclass
trans...</li>
<li><a
href="https://github.com/pylint-dev/astroid/commit/33fabe0cedce85162fcae11c4c57098389d27ee3"><code>33fabe0</code></a>
[Backport maintenance/4.1.x] Fix MemoryError when inferring f-string
with lar...</li>
<li><a
href="https://github.com/pylint-dev/astroid/commit/f11d7ae40c6929bed001b807321ff46051cb2064"><code>f11d7ae</code></a>
Bump astroid to 4.1.1, update changelog</li>
<li>Additional commits viewable in <a
href="https://github.com/pylint-dev/astroid/compare/v4.0.4...v4.1.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `boto3` from 1.42.83 to 1.42.88
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/boto/boto3/commit/f92a06cca537b03c6cbc71b2ab004674298053dd"><code>f92a06c</code></a>
Merge branch 'release-1.42.88'</li>
<li><a
href="https://github.com/boto/boto3/commit/9bdec29dd7a50a0412772bae77580bb3be674295"><code>9bdec29</code></a>
Bumping version to 1.42.88</li>
<li><a
href="https://github.com/boto/boto3/commit/d880788fea57399dd5e9e2be08691a2b9ec26502"><code>d880788</code></a>
Add changelog entries from botocore</li>
<li><a
href="https://github.com/boto/boto3/commit/39a412231d29b10761a1812efbbf00aa8d17d6a6"><code>39a4122</code></a>
chore: add additional text to CONTRIBUTING.rst (<a
href="https://redirect.github.com/boto/boto3/issues/4749">#4749</a>)</li>
<li><a
href="https://github.com/boto/boto3/commit/8d65320e4df23b56f3dc5b09ad75d95bcc85382b"><code>8d65320</code></a>
Merge branch 'release-1.42.87'</li>
<li><a
href="https://github.com/boto/boto3/commit/fdcbb88dfbc65c8ef6fd3557f7d37c73ec6a09a2"><code>fdcbb88</code></a>
Merge branch 'release-1.42.87' into develop</li>
<li><a
href="https://github.com/boto/boto3/commit/aff7ae57451834a94a1ba027b3bce741612e3d09"><code>aff7ae5</code></a>
Bumping version to 1.42.87</li>
<li><a
href="https://github.com/boto/boto3/commit/a58071d342a6c659814e6baca5d353d0c311a5e5"><code>a58071d</code></a>
Add changelog entries from botocore</li>
<li><a
href="https://github.com/boto/boto3/commit/bf26a45aa2447dfee29ab904b99eeda523c20874"><code>bf26a45</code></a>
Add boto3 version clarification for login with console credentials (<a
href="https://redirect.github.com/boto/boto3/issues/4758">#4758</a>)</li>
<li><a
href="https://github.com/boto/boto3/commit/a4315bc80b83e8cf59e8582eef0e75f79fc01e4a"><code>a4315bc</code></a>
Merge branch 'release-1.42.86'</li>
<li>Additional commits viewable in <a
href="https://github.com/boto/boto3/compare/1.42.83...1.42.88">compare
view</a></li>
</ul>
</details>
<br />

Updates `boto3-stubs` from 1.42.83 to 1.42.88
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/youtype/mypy_boto3_builder/releases">boto3-stubs's
releases</a>.</em></p>
<blockquote>
<h2>8.8.0 - Python 3.8 runtime is back</h2>
<h3>Changed</h3>
<ul>
<li><code>[services]</code> <code>install_requires</code> section is
calculated based on dependencies in use, so
<code>typing-extensions</code> version is set properly</li>
<li><code>[all]</code> Replaced <code>typing</code> imports with
<code>collections.abc</code> with a fallback to <code>typing</code> for
Python &lt;3.9</li>
<li><code>[all]</code> Added aliases for <code>builtins.list</code>,
<code>builtins.set</code>, <code>builtins.dict</code>, and
<code>builtins.type</code>, so Python 3.8 runtime should work as
expected again (reported by <a
href="https://github.com/YHallouard"><code>@​YHallouard</code></a> in <a
href="https://redirect.github.com/youtype/mypy_boto3_builder/issues/340">#340</a>
and <a
href="https://github.com/Omri-Ben-Yair"><code>@​Omri-Ben-Yair</code></a>
in <a
href="https://redirect.github.com/youtype/mypy_boto3_builder/issues/336">#336</a>)</li>
<li><code>[all]</code> Unions use the same type annotations as the rest
of the structures due to proper fallbacks</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><code>[services]</code> Universal input/output shapes were not
replaced properly in service subresources</li>
<li><code>[docs]</code> Simplified doc links rendering for services</li>
<li><code>[services]</code> Cleaned up unnecessary imports in
<code>client.pyi</code></li>
<li><code>[builder]</code> Import records with fallback are always
rendered</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/youtype/mypy_boto3_builder/commits">compare
view</a></li>
</ul>
</details>
<br />

Updates `platformdirs` from 4.9.4 to 4.9.6
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tox-dev/platformdirs/releases">platformdirs's
releases</a>.</em></p>
<blockquote>
<h2>4.9.6</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>🐛 fix(release): use double quotes for tag variable expansion by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/tox-dev/platformdirs/pull/477">tox-dev/platformdirs#477</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tox-dev/platformdirs/compare/4.9.5...4.9.6">https://github.com/tox-dev/platformdirs/compare/4.9.5...4.9.6</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tox-dev/platformdirs/blob/main/docs/changelog.rst">platformdirs's
changelog</a>.</em></p>
<blockquote>
<p>###########
Changelog
###########</p>
<hr />
<p>4.9.6 (2026-04-09)</p>
<hr />
<ul>
<li>🐛 fix(release): use double quotes for tag variable expansion
:pr:<code>477</code></li>
</ul>
<hr />
<p>4.9.5 (2026-04-06)</p>
<hr />
<ul>
<li>📝 docs(appauthor): clarify None vs False on Windows
:pr:<code>476</code></li>
<li>Separates implementations of macOS dirs that share a default
:pr:<code>473</code> - by :user:<code>Goddesen</code></li>
<li>Remove persist-credentials: false from release job
:pr:<code>472</code></li>
<li>fix: do not duplicate site dirs in Unix.iter_{config,site}_dirs()
when use_site_for_root is active :pr:<code>469</code> - by
:user:<code>viccie30</code></li>
<li>🔧 fix(type): resolve ty 0.0.25 type errors :pr:<code>468</code></li>
<li>🔒 ci(workflows): add zizmor security auditing
:pr:<code>467</code></li>
<li>🐛 fix(release): generate docstrfmt-compatible changelog entries
:pr:<code>463</code></li>
</ul>
<hr />
<p>4.9.4 (2026-03-05)</p>
<hr />
<ul>
<li>[pre-commit.ci] pre-commit autoupdate :pr:<code>461</code> - by
:user:<code>pre-commit-ci[bot]</code></li>
<li>Update README.md</li>
<li>📝 docs: add project logo to documentation :pr:<code>459</code></li>
<li>Standardize .github files to .yaml suffix</li>
<li>build(deps): bump the all group with 2 updates :pr:<code>457</code>
- by :user:<code>dependabot[bot]</code></li>
<li>Move SECURITY.md to .github/SECURITY.md</li>
<li>Add permissions to workflows :pr:<code>455</code></li>
<li>Add security policy</li>
<li>[pre-commit.ci] pre-commit autoupdate :pr:<code>454</code> - by
:user:<code>pre-commit-ci[bot]</code></li>
</ul>
<hr />
<p>4.9.2 (2026-02-16)</p>
<hr />
<ul>
<li>📝 docs: restructure following Diataxis framework
:pr:<code>448</code></li>
<li>📝 docs(platforms): fix RST formatting and TOC hierarchy
:pr:<code>447</code></li>
</ul>
<hr />
<p>4.9.1 (2026-02-14)</p>
<hr />
<ul>
<li>📝 docs: enhance README, fix issues, and reorganize platforms.rst
:pr:<code>445</code></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/56efd776d68a94898b319c108933d0cfbff813af"><code>56efd77</code></a>
Release 4.9.6</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/d5d812a02102c633a39f3dfdddbc6bb1670b13ae"><code>d5d812a</code></a>
🐛 fix(release): use double quotes for tag variable expansion (<a
href="https://redirect.github.com/tox-dev/platformdirs/issues/477">#477</a>)</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/c2b0cee3a8261b3a75b283b9ef148d2425d48d35"><code>c2b0cee</code></a>
build(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 in
the al...</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/7688069a09e03bb4e97fe0f9cf3aebedc8a6f7f9"><code>7688069</code></a>
Release 4.9.5</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/104d28b48c59b327a7832b23509187eef2764af8"><code>104d28b</code></a>
📝 docs(appauthor): clarify None vs False on Windows (<a
href="https://redirect.github.com/tox-dev/platformdirs/issues/476">#476</a>)</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/0955048684241725bb2eae8a2ba5bc7f7f46c9a0"><code>0955048</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/tox-dev/platformdirs/issues/475">#475</a>)</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/bd3c76602f88284eb832c7f5297c354ea7ac5906"><code>bd3c766</code></a>
build(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 in the all
group (<a
href="https://redirect.github.com/tox-dev/platformdirs/issues/474">#474</a>)</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/749ac3f33ffc5af04fb8bb046bbbcc4d5aa562c9"><code>749ac3f</code></a>
Separates implementations of macOS dirs that share a default (<a
href="https://redirect.github.com/tox-dev/platformdirs/issues/473">#473</a>)</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/cb8815684f15c58ad1b87c8b1d34f9bf2d79780e"><code>cb88156</code></a>
Remove persist-credentials: false from release job (<a
href="https://redirect.github.com/tox-dev/platformdirs/issues/472">#472</a>)</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/a501eabd7dd0e56116c38fa9dba15f3c0b60010a"><code>a501eab</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/tox-dev/platformdirs/issues/470">#470</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tox-dev/platformdirs/compare/4.9.4...4.9.6">compare
view</a></li>
</ul>
</details>
<br />

Updates `pytest` from 9.0.2 to 9.0.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest/releases">pytest's
releases</a>.</em></p>
<blockquote>
<h2>9.0.3</h2>
<h1>pytest 9.0.3 (2026-04-07)</h1>
<h2>Bug fixes</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12444">#12444</a>:
Fixed <code>pytest.approx</code> which now correctly takes into account
<code>~collections.abc.Mapping</code> keys order to compare them.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/13634">#13634</a>:
Blocking a <code>conftest.py</code> file using the <code>-p no:</code>
option is now explicitly disallowed.</p>
<p>Previously this resulted in an internal assertion failure during
plugin loading.</p>
<p>Pytest now raises a clear <code>UsageError</code> explaining that
conftest files are not plugins and cannot be disabled via
<code>-p</code>.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/13734">#13734</a>:
Fixed crash when a test raises an exceptiongroup with
<code>__tracebackhide__ = True</code>.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14195">#14195</a>:
Fixed an issue where non-string messages passed to <!-- raw HTML omitted
-->unittest.TestCase.subTest()<!-- raw HTML omitted --> were not
printed.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14343">#14343</a>:
Fixed use of insecure temporary directory (CVE-2025-71176).</p>
</li>
</ul>
<h2>Improved documentation</h2>
<ul>
<li><a
href="https://redirect.github.com/pytest-dev/pytest/issues/13388">#13388</a>:
Clarified documentation for <code>-p</code> vs
<code>PYTEST_PLUGINS</code> plugin loading and fixed an incorrect
<code>-p</code> example.</li>
<li><a
href="https://redirect.github.com/pytest-dev/pytest/issues/13731">#13731</a>:
Clarified that capture fixtures (e.g. <code>capsys</code> and
<code>capfd</code>) take precedence over the <code>-s</code> /
<code>--capture=no</code> command-line options in <code>Accessing
captured output from a test function
&lt;accessing-captured-output&gt;</code>.</li>
<li><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14088">#14088</a>:
Clarified that the default <code>pytest_collection</code> hook sets
<code>session.items</code> before it calls
<code>pytest_collection_finish</code>, not after.</li>
<li><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14255">#14255</a>:
TOML integer log levels must be quoted: Updating reference
documentation.</li>
</ul>
<h2>Contributor-facing changes</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12689">#12689</a>:
The test reports are now published to Codecov from GitHub Actions.
The test statistics is visible <a
href="https://app.codecov.io/gh/pytest-dev/pytest/tests">on the web
interface</a>.</p>
<p>-- by <code>aleguy02</code></p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e"><code>a7d58d7</code></a>
Prepare release version 9.0.3</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22"><code>089d981</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14366">#14366</a>
from bluetech/revert-14193-backport</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac"><code>8127eaf</code></a>
Revert &quot;Fix: assertrepr_compare respects dict insertion order (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/14050">#14050</a>)
(<a
href="https://redirect.github.com/pytest-dev/pytest/issues/14193">#14193</a>)&quot;</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241"><code>99a7e60</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14363">#14363</a>
from pytest-dev/patchback/backports/9.0.x/95d8423bd...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95"><code>ddee02a</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14343">#14343</a>
from bluetech/cve-2025-71176-simple</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619"><code>74eac69</code></a>
doc: Update training info (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/14298">#14298</a>)
(<a
href="https://redirect.github.com/pytest-dev/pytest/issues/14301">#14301</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869"><code>f92dee7</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14267">#14267</a>
from pytest-dev/patchback/backports/9.0.x/d6fa26c62...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439"><code>7ee58ac</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/12378">#12378</a>
from Pierre-Sassoulas/fix-implicit-str-concat-and-d...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8"><code>37da870</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14259">#14259</a>
from mitre88/patch-4 (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/14268">#14268</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed"><code>c34bfa3</code></a>
Add explanation for string context diffs (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/14257">#14257</a>)
(<a
href="https://redirect.github.com/pytest-dev/pytest/issues/14266">#14266</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `virtualenv` from 21.2.0 to 21.2.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/virtualenv/releases">virtualenv's
releases</a>.</em></p>
<blockquote>
<h2>21.2.1</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>Upgrade embedded pip/setuptools/wheel by <a
href="https://github.com/github-actions"><code>@​github-actions</code></a>[bot]
in <a
href="https://redirect.github.com/pypa/virtualenv/pull/3093">pypa/virtualenv#3093</a></li>
<li>Enhance upgrade workflow: age check, dedup, issue tracking by <a
href="https://github.com/rahuldevikar"><code>@​rahuldevikar</code></a>
in <a
href="https://redirect.github.com/pypa/virtualenv/pull/3094">pypa/virtualenv#3094</a></li>
<li>🐛 fix(create): use commonpath for correct path validation by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/pypa/virtualenv/pull/3097">pypa/virtualenv#3097</a></li>
<li>🔒 ci(workflows): add zizmor security auditing by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/pypa/virtualenv/pull/3099">pypa/virtualenv#3099</a></li>
<li>Add current and previous maintainers by <a
href="https://github.com/rahuldevikar"><code>@​rahuldevikar</code></a>
in <a
href="https://redirect.github.com/pypa/virtualenv/pull/3101">pypa/virtualenv#3101</a></li>
<li>🔧 fix(ci): restore git credentials for release and upgrade jobs by
<a href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a>
in <a
href="https://redirect.github.com/pypa/virtualenv/pull/3102">pypa/virtualenv#3102</a></li>
<li>Fix broken Installation link in README by <a
href="https://github.com/Bahtya"><code>@​Bahtya</code></a> in <a
href="https://redirect.github.com/pypa/virtualenv/pull/3106">pypa/virtualenv#3106</a></li>
<li>fix: use terminal width for help formatting instead of hardcoded 240
by <a href="https://github.com/Bahtya"><code>@​Bahtya</code></a> in <a
href="https://redirect.github.com/pypa/virtualenv/pull/3110">pypa/virtualenv#3110</a></li>
<li>🐛 fix(nushell): surface actionable hint in deactivate error output
by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/pypa/virtualenv/pull/3112">pypa/virtualenv#3112</a></li>
<li>👷 ci: fix setup-uv warnings and drop brew@3.9 by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/pypa/virtualenv/pull/3113">pypa/virtualenv#3113</a></li>
<li>fix(ci): fix pre-release push and release note generation by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/pypa/virtualenv/pull/3114">pypa/virtualenv#3114</a></li>
<li>fix(ci): check out repo in publish job for gh release notes by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/pypa/virtualenv/pull/3115">pypa/virtualenv#3115</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/github-actions"><code>@​github-actions</code></a>[bot]
made their first contribution in <a
href="https://redirect.github.com/pypa/virtualenv/pull/3093">pypa/virtualenv#3093</a></li>
<li><a href="https://github.com/Bahtya"><code>@​Bahtya</code></a> made
their first contribution in <a
href="https://redirect.github.com/pypa/virtualenv/pull/3106">pypa/virtualenv#3106</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pypa/virtualenv/compare/21.2.0...21.2.1">https://github.com/pypa/virtualenv/compare/21.2.0...21.2.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst">virtualenv's
changelog</a>.</em></p>
<blockquote>
<h1>Bugfixes - 21.2.1</h1>
<ul>
<li>
<p>Upgrade embedded wheels:</p>
<ul>
<li>setuptools to <code>82.0.1</code> from <code>82.0.0</code>
(:issue:<code>3093</code>)</li>
</ul>
</li>
<li>
<p>Use terminal width for help formatting instead of hardcoded 240.
(:issue:<code>3110</code>)</p>
</li>
</ul>
<hr />
<p>v21.2.0 (2026-03-09)</p>
<hr />
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/virtualenv/commit/d1fc6e68678da49932707bb09a10464aff2f30cc"><code>d1fc6e6</code></a>
Release 21.2.1</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/4136b51af53ba50354c6727cae3b79c6be2b2a3b"><code>4136b51</code></a>
fix(ci): check out repo in publish job for gh release notes (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3115">#3115</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/d1deceacb19edde2c91a40e20894b7863d2a02ab"><code>d1decea</code></a>
fix(ci): persist git credentials in pre-release workflow (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3114">#3114</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/48e21104c939b6fb582dc4c56349860264d00062"><code>48e2110</code></a>
👷 ci: fix setup-uv warnings and drop brew@3.9 (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3113">#3113</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/d00c465448230b7d964b2fbf646fa9602c7aa816"><code>d00c465</code></a>
🐛 fix(nushell): surface actionable hint in deactivate error output (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3112">#3112</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/0a8c46a5436d1d31487b88d0e72be1b48cf9b02e"><code>0a8c46a</code></a>
chore(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3111">#3111</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/f0bbe174e2c241f9a7fbeaac7446cf200c14a851"><code>f0bbe17</code></a>
fix: use terminal width for help formatting instead of hardcoded 240 (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3110">#3110</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/dfaa73826dad5e9c2cdc2b5873a14eb80c37480b"><code>dfaa738</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3109">#3109</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/cc658da7f137776813f3304cdd772eb52f8ed36e"><code>cc658da</code></a>
chore(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3107">#3107</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/f235373eee6e3e98e556408fa71e67adb4d4685b"><code>f235373</code></a>
Fix broken Installation link in README (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3106">#3106</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/virtualenv/compare/21.2.0...21.2.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `botocore` from 1.42.83 to 1.42.88
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/boto/botocore/commit/974e23f2630cc634685ed7325829bd81bda22a87"><code>974e23f</code></a>
Merge branch 'release-1.42.88'</li>
<li><a
href="https://github.com/boto/botocore/commit/ec1ea27970237ee7225219a2ebd8087b9ceceeec"><code>ec1ea27</code></a>
Bumping version to 1.42.88</li>
<li><a
href="https://github.com/boto/botocore/commit/67dcb88843c0957b8bc72d2f0571f96e893f6309"><code>67dcb88</code></a>
Update to latest models</li>
<li><a
href="https://github.com/boto/botocore/commit/55f7dc1773bf8f312f5f71013d9597072f8683bb"><code>55f7dc1</code></a>
chore: add additional text to CONTRIBUTING.rst (<a
href="https://redirect.github.com/boto/botocore/issues/3662">#3662</a>)</li>
<li><a
href="https://github.com/boto/botocore/commit/215aec9557e79dd75071ce9adae2f7cf1647a7ac"><code>215aec9</code></a>
Merge branch 'release-1.42.87'</li>
<li><a
href="https://github.com/boto/botocore/commit/f85476974e4da29f3f97a450a1b006b20bf5c5f4"><code>f854769</code></a>
Merge branch 'release-1.42.87' into develop</li>
<li><a
href="https://github.com/boto/botocore/commit/1f2c8202dba82dda6f2404e76cc598d496f67beb"><code>1f2c820</code></a>
Bumping version to 1.42.87</li>
<li><a
href="https://github.com/boto/botocore/commit/c104132be094d910b7c9c3e516c1ed7d2074e994"><code>c104132</code></a>
Update to latest models</li>
<li><a
href="https://github.com/boto/botocore/commit/d831a0618fc491a30135f89f743ed12cc09280af"><code>d831a06</code></a>
Merge branch 'release-1.42.86'</li>
<li><a
href="https://github.com/boto/botocore/commit/98ab06bdb669e50503b98d9ea1091bc3c07279d6"><code>98ab06b</code></a>
Merge branch 'release-1.42.86' into develop</li>
<li>Additional commits viewable in <a
href="https://github.com/boto/botocore/compare/1.42.83...1.42.88">compare
view</a></li>
</ul>
</details>
<br />

Updates `greenlet` from 3.3.2 to 3.4.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>3.4.0 (2026-04-08)</h1>
<ul>
<li>
<p>Publish binary wheels for RiscV 64.</p>
</li>
<li>
<p>Fix multiple rare crash paths during interpreter shutdown.</p>
<p>Note that this now relies on the <code>atexit</code> module, and
introduces
subtle API changes during interpreter shutdown (for example,
<code>getcurrent</code> is no longer available once the
<code>atexit</code> callback fires).</p>
<p>See <code>PR
[#499](python-greenlet/greenlet#499)
&lt;https://github.com/python-greenlet/greenlet/pull/499&gt;</code>_ by
Nicolas
Bouvrette.</p>
</li>
<li>
<p>Address the results of an automated code audit performed by
Daniel Diniz. This includes several minor correctness changes that
theoretically could have been crashing bugs, but typically only in
very rare circumstances.</p>
<p>See <code>PR 502
&lt;https://github.com/python-greenlet/greenlet/pull/502&gt;</code>_.</p>
</li>
<li>
<p>Fix several race conditions that could arise in free-threaded
builds when using greenlet objects from multiple threads, some of
which could lead to assertion failures or interpreter crashes.</p>
<p>See <code>issue 503
&lt;https://github.com/python-greenlet/greenlet/issues/503&gt;</code>_,
with
thanks to Nitay Dariel and Daniel Diniz.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/df6734edbef6a0e54ecc4ba4735d93ae6d721095"><code>df6734e</code></a>
Preparing release 3.4.0</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/0f860756608b767b2ed70f935053b319d1a1b828"><code>0f86075</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/504">#504</a>
from python-greenlet/freethreading-fixes</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/459657482f3efaee294edff672bde45ac3fac208"><code>4596574</code></a>
TLBC: crash appears to still happen on CI 3.14t ubuntu. Re-enable
workaround.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/2f4a1cf53fa282ab28ea4815164a9cb09b9320ce"><code>2f4a1cf</code></a>
Make green_switch (python level greenlet.switch) and green_throw check
for (p...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/a0c2a2a7519985d5fe2c034a54f1a0fed82a5905"><code>a0c2a2a</code></a>
Fix unused variable warning when asserts are disabled.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/8688581392187d68f35180148fcd6fb4fd9a972f"><code>8688581</code></a>
gcc was complaining about an incomplete std::atomic type. make sure we
includ...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/449c76045b71f7f96c48e8d62672e5382b17cc3d"><code>449c760</code></a>
Make MainGreenlet._thread_state atomic; we use it for cross thread
checking a...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/f840e00dea524c20801bcb4f8764b968590eb6ba"><code>f840e00</code></a>
Add critical sections to greenlet attribute accessors.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/6b281d3eca96ec82a87067b2016241296e4c60e9"><code>6b281d3</code></a>
test_contextvars: No need for the fallback case where contextvars isn't
avail...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/f52615ae64f73b19e53e71cd1e12cbb1841246ff"><code>f52615a</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/502">#502</a>
from python-greenlet/devdanzin-audit</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/3.3.2...3.4.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `librt` from 0.8.1 to 0.9.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mypyc/librt/commit/8f66cfe9cb3611b32741dd5b00e9049a627d6ccb"><code>8f66cfe</code></a>
Bump version to 0.9.0</li>
<li><a
href="https://github.com/mypyc/librt/commit/149b3698bc3f6f7724f3fe6148938d6a4bc0d421"><code>149b369</code></a>
Sync mypy including extract_symbol() PR (<a
href="https://redirect.github.com/mypyc/librt/issues/37">#37</a>)</li>
<li><a
href="https://github.com/mypyc/librt/commit/05c11113460b73eb8ecc90adf539996012510169"><code>05c1111</code></a>
Use PEP 639 license metadata (<a
href="https://redirect.github.com/mypyc/librt/issues/34">#34</a>)</li>
<li>See full diff in <a
href="https://github.com/mypyc/librt/compare/v0.8.1...v0.9.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `python-discovery` from 1.2.1 to 1.2.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tox-dev/python-discovery/releases">python-discovery's
releases</a>.</em></p>
<blockquote>
<h2>1.2.2</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>export normalize_isa and deprecate KNOWN_ARCHITECTURES by <a
href="https://github.com/rahuldevikar"><code>@​rahuldevikar</code></a>
in <a
href="https://redirect.github.com/tox-dev/python-discovery/pull/62">tox-dev/python-discovery#62</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tox-dev/python-discovery/compare/1.2.1...1.2.2">https://github.com/tox-dev/python-discovery/compare/1.2.1...1.2.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tox-dev/python-discovery/commit/50d83545a3594ce1a5425d8ec33309bc37552707"><code>50d8354</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/tox-dev/python-discovery/issues/61">#61</a>)</li>
<li><a
href="https://github.com/tox-dev/python-discovery/commit/52d36ef701a71e5dfda01e829a40f98126d12143"><code>52d36ef</code></a>
export normalize_isa and deprecate KNOWN_ARCHITECTURES (<a
href="https://redirect.github.com/tox-dev/python-discovery/issues/62">#62</a>)</li>
<li><a
href="https://github.com/tox-dev/python-discovery/commit/993fced4229a1c0335e820a3e85c2b1f4efb6bbf"><code>993fced</code></a>
build(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 (<a
href="https://redirect.github.com/tox-dev/python-discovery/issues/60">#60</a>)</li>
<li><a
href="https://github.com/tox-dev/python-discovery/commit/b7ab5b7edd7ab8bcc9ac77f3603c6fe6538892ab"><code>b7ab5b7</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/tox-dev/python-discovery/issues/58">#58</a>)</li>
<li>See full diff in <a
href="https://github.com/tox-dev/python-discovery/compare/1.2.1...1.2.2">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Charles OuGuo <shaldengeki@gmail.com>
WilliamBerryiii added a commit to microsoft/physical-ai-toolchain that referenced this pull request Apr 14, 2026
…ry with 23 updates (#463)

Bumps the training-dependencies group with 23 updates in the
/training/rl directory:

| Package | From | To |
| --- | --- | --- |
| [skrl](https://github.com/Toni-SM/skrl) | `1.4.3` | `2.0.0` |
| [tensordict](https://github.com/pytorch/tensordict) | `0.11.0` |
`0.12.1` |
|
[google-auth](https://github.com/googleapis/google-auth-library-python)
| `2.49.1` | `2.49.2` |
| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.2` |
`3.4.0` |
|
[msal](https://github.com/AzureAD/microsoft-authentication-library-for-python)
| `1.35.1` | `1.36.0` |
|
[opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python)
| `1.40.0` | `1.41.0` |
|
[opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib)
| `0.61b0` | `0.62b0` |
|
[opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib)
| `0.61b0` | `0.62b0` |
|
[opentelemetry-instrumentation-dbapi](https://github.com/open-telemetry/opentelemetry-python-contrib)
| `0.61b0` | `0.62b0` |
|
[opentelemetry-instrumentation-django](https://github.com/open-telemetry/opentelemetry-python-contrib)
| `0.61b0` | `0.62b0` |
|
[opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib)
| `0.61b0` | `0.62b0` |
|
[opentelemetry-instrumentation-flask](https://github.com/open-telemetry/opentelemetry-python-contrib)
| `0.61b0` | `0.62b0` |
|
[opentelemetry-instrumentation-psycopg2](https://github.com/open-telemetry/opentelemetry-python-contrib)
| `0.61b0` | `0.62b0` |
|
[opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib)
| `0.61b0` | `0.62b0` |
|
[opentelemetry-instrumentation-urllib](https://github.com/open-telemetry/opentelemetry-python-contrib)
| `0.61b0` | `0.62b0` |
|
[opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib)
| `0.61b0` | `0.62b0` |
|
[opentelemetry-instrumentation-wsgi](https://github.com/open-telemetry/opentelemetry-python-contrib)
| `0.61b0` | `0.62b0` |
|
[opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python)
| `1.40.0` | `1.41.0` |
|
[opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python)
| `1.40.0` | `1.41.0` |
|
[opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python)
| `0.61b0` | `0.62b0` |
|
[opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib)
| `0.61b0` | `0.62b0` |
| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.0`
|
| [pydantic-core](https://github.com/pydantic/pydantic) | `2.45.0` |
`2.46.0` |


Updates `skrl` from 1.4.3 to 2.0.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Toni-SM/skrl/releases">skrl's
releases</a>.</em></p>
<blockquote>
<h2>skrl-v2.0.0</h2>
<h2>[2.0.0] - 2026-04-08</h2>
<p>Summary of the most relevant features:</p>
<ul>
<li>RL algorithm implementations in NVIDIA Warp</li>
<li>Differentiate between environment observations and states (also
known as privileged observation)</li>
<li>Support for MuJoCo Playground and ManiSkill environments</li>
</ul>
<h3>Added</h3>
<ul>
<li>Implement RL algorithms in NVIDIA Warp</li>
<li>Add loader and wrapper for MuJoCo Playground environments</li>
<li>Add wrapper for ManiSkill environments</li>
<li>Add Tabular model instantiator (epsilon-greedy variant)</li>
<li>Add <code>clip_mean_actions</code> parameter to Gaussian and
Multivariate Gaussian models</li>
<li>Add <code>render_interval</code> option to trainers to specify the
rendering interval for the environments</li>
<li>Add <code>compute_space_limits</code> space utility to get Gymnasium
spaces' limits</li>
<li>Add <code>ScopedTimer</code> utils to measure code execution
time</li>
<li>Add <code>SummaryWriter</code> implementation to log data to
TensorBoard without relying on third-party libraries</li>
<li>Log agent inference and algorithm update, and environment steeping
time to TensorBoard</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Update minimum supported Python version to 3.10</li>
<li>Drop support for PyTorch versions prior to 1.11 (the previous
supported version was 1.10)</li>
<li>Call observation/state preprocessors once when computing the actions
during training</li>
</ul>
<h3>Changed (breaking changes)</h3>
<ul>
<li>Refactor the library to differentiate between environment
observations and states (also known as privileged observation)</li>
<li>Implement agent/multi-agent and trainer configurations using Python
Data Classes
<ul>
<li>Unify the different learning rate settings under the
<code>learning_rate</code> configuration</li>
<li>Rename <code>lambda</code> to <code>gae_lambda</code></li>
<li>Remove the <code>clip_predicted_values</code> redundant
configuration by checking for <code>value_clip &gt; 0</code></li>
<li>Remove specific exploration noise settings
(<code>initial_scale</code>, <code>final_scale</code> and
<code>timesteps</code>)
in favor of generic scheduling functions</li>
</ul>
</li>
<li>Update tabular model definition to operate in any number of parallel
environments</li>
<li>Refactor multi-agent environment wrappers to support homogeneous and
heterogeneous states spaces</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Add entropy loss to the policy loss for on-policy
agents/mulit-agents in JAX</li>
<li>Fix time limits handling for termination and truncation signals</li>
<li>Fix the randomness of the environments by seeding right after
initialization (on the first reset)</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Remove NumPy backend for JAX implementation</li>
<li>Remove checkpoints/models migration support from other RL
libraries</li>
<li>Remove support for Isaac Gym and Omniverse Isaac Gym environments
(deprecated in favor of Isaac Lab)</li>
<li>Remove support for Brax and DeepMind environments (in favor of
MuJoCo Playground environments)</li>
<li>Remove support for Bi-DexHands and robosuite environments</li>
<li>Remove Isaac Gym (web viewer, inverse kinematic) and Omniverse Isaac
Gym (local environment instance, inverse kinematic) utils</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Toni-SM/skrl/blob/develop/CHANGELOG.md">skrl's
changelog</a>.</em></p>
<blockquote>
<h2>[2.0.0] - 2026-04-08</h2>
<p>Summary of the most relevant features:</p>
<ul>
<li>RL algorithm implementations in NVIDIA Warp</li>
<li>Differentiate between environment observations and states (also
known as privileged observation)</li>
<li>Support for MuJoCo Playground and ManiSkill environments</li>
</ul>
<h3>Added</h3>
<ul>
<li>Implement RL algorithms in NVIDIA Warp</li>
<li>Add loader and wrapper for MuJoCo Playground environments</li>
<li>Add wrapper for ManiSkill environments</li>
<li>Add Tabular model instantiator (epsilon-greedy variant)</li>
<li>Add <code>clip_mean_actions</code> parameter to Gaussian and
Multivariate Gaussian models</li>
<li>Add <code>render_interval</code> option to trainers to specify the
rendering interval for the environments</li>
<li>Add <code>compute_space_limits</code> space utility to get Gymnasium
spaces' limits</li>
<li>Add <code>ScopedTimer</code> utils to measure code execution
time</li>
<li>Add <code>SummaryWriter</code> implementation to log data to
TensorBoard without relying on third-party libraries</li>
<li>Log agent inference and algorithm update, and environment steeping
time to TensorBoard</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Update minimum supported Python version to 3.10</li>
<li>Drop support for PyTorch versions prior to 1.11 (the previous
supported version was 1.10)</li>
<li>Call observation/state preprocessors once when computing the actions
during training</li>
</ul>
<h3>Changed (breaking changes)</h3>
<ul>
<li>Refactor the library to differentiate between environment
observations and states (also known as privileged observation)</li>
<li>Implement agent/multi-agent and trainer configurations using Python
Data Classes
<ul>
<li>Unify the different learning rate settings under the
<code>learning_rate</code> configuration</li>
<li>Rename <code>lambda</code> to <code>gae_lambda</code></li>
<li>Remove the <code>clip_predicted_values</code> redundant
configuration by checking for <code>value_clip &gt; 0</code></li>
<li>Remove specific exploration noise settings
(<code>initial_scale</code>, <code>final_scale</code> and
<code>timesteps</code>)
in favor of generic scheduling functions</li>
</ul>
</li>
<li>Update tabular model definition to operate in any number of parallel
environments</li>
<li>Refactor multi-agent environment wrappers to support homogeneous and
heterogeneous states spaces</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Add entropy loss to the policy loss for on-policy
agents/mulit-agents in JAX</li>
<li>Fix time limits handling for termination and truncation signals</li>
<li>Fix the randomness of the environments by seeding right after
initialization (on the first reset)</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Remove NumPy backend for JAX implementation</li>
<li>Remove checkpoints/models migration support from other RL
libraries</li>
<li>Remove support for Isaac Gym and Omniverse Isaac Gym environments
(deprecated in favor of Isaac Lab)</li>
<li>Remove support for Brax and DeepMind environments (in favor of
MuJoCo Playground environments)</li>
<li>Remove support for Bi-DexHands and robosuite environments</li>
<li>Remove Isaac Gym (web viewer, inverse kinematic) and Omniverse Isaac
Gym (local environment instance, inverse kinematic) utils</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Toni-SM/skrl/commit/c29ced630e83ab32304dc8a3de241a70d3bc5746"><code>c29ced6</code></a>
Release 2.0.0</li>
<li><a
href="https://github.com/Toni-SM/skrl/commit/cb00cb5d64858a9b64c3b0869c233d307289cdb8"><code>cb00cb5</code></a>
Update CHANGELOG</li>
<li><a
href="https://github.com/Toni-SM/skrl/commit/ff6426f497ad4e3ec83d2aa5b16819213607cae1"><code>ff6426f</code></a>
Use warp-nn dependency for neural networks in Warp (<a
href="https://redirect.github.com/Toni-SM/skrl/issues/422">#422</a>)</li>
<li><a
href="https://github.com/Toni-SM/skrl/commit/22bb9dbd0bd1e4b946f0d07c94149db7696269b9"><code>22bb9db</code></a>
Fix setuptools package discovery (<a
href="https://redirect.github.com/Toni-SM/skrl/issues/421">#421</a>)</li>
<li><a
href="https://github.com/Toni-SM/skrl/commit/d81196df22aa8433f3808baa49a24e303f78deaa"><code>d81196d</code></a>
Check for configuration compatibility in runners (<a
href="https://redirect.github.com/Toni-SM/skrl/issues/420">#420</a>)</li>
<li><a
href="https://github.com/Toni-SM/skrl/commit/e1b600ee0e30fc2c43c97df71ba4002a1c091d99"><code>e1b600e</code></a>
Rename lambda_ to gae_lambda (<a
href="https://redirect.github.com/Toni-SM/skrl/issues/419">#419</a>)</li>
<li><a
href="https://github.com/Toni-SM/skrl/commit/f6e1f3994b9899764e1c866dad7a65b59af59d42"><code>f6e1f39</code></a>
Update Playground loader (<a
href="https://redirect.github.com/Toni-SM/skrl/issues/418">#418</a>)</li>
<li><a
href="https://github.com/Toni-SM/skrl/commit/67bb6624ba1a881353728bfdaae7ab4fc3a1a525"><code>67bb662</code></a>
Call step preprocessor once (<a
href="https://redirect.github.com/Toni-SM/skrl/issues/403">#403</a>)</li>
<li><a
href="https://github.com/Toni-SM/skrl/commit/2888004c1187c71d057a0e1d01e668493cfd15aa"><code>2888004</code></a>
Update docs (<a
href="https://redirect.github.com/Toni-SM/skrl/issues/415">#415</a>)</li>
<li><a
href="https://github.com/Toni-SM/skrl/commit/5a078cff1a611d51eb2164101cdd6fa84e3eec2d"><code>5a078cf</code></a>
Add <code>render_interval</code> option to trainers to specify the
rendering interval fo...</li>
<li>Additional commits viewable in <a
href="https://github.com/Toni-SM/skrl/compare/1.4.3...2.0.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `tensordict` from 0.11.0 to 0.12.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytorch/tensordict/releases">tensordict's
releases</a>.</em></p>
<blockquote>
<h2>TensorDict v0.12.1</h2>
<p>Patch release with a <code>torch.compile</code> bug fix.</p>
<h3>Bug Fixes</h3>
<ul>
<li>Fix <code>unravel_keys</code> inconsistency that prevented
<code>torch.compile</code> from working correctly when called with a
single key (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1674">#1674</a>)</li>
</ul>
<h3>Installation</h3>
<pre lang="bash"><code>pip install tensordict==0.12.1
</code></pre>
<h2>TensorDict v0.12.0</h2>
<h3>Highlights</h3>
<p>TensorDict v0.12.0 introduces <strong>TypedTensorDict</strong> for
schema-enforced tensor dictionaries, a full <strong>distributed
collectives</strong> suite (broadcast, all_reduce, all_gather, scatter),
<strong>TensorDictStore</strong> with Redis/Dragonfly/KeyDB backends,
and major <strong>torch.compile</strong> and
<strong>performance</strong> improvements. The
<strong>UnbatchedTensor</strong> has been rewritten as a proper tensor
subclass, and <strong>state_dict</strong> handling has been overhauled
for consistency.</p>
<h3>Breaking Changes</h3>
<ul>
<li><code>UnbatchedTensor</code> is now a
<code>__torch_dispatch__</code>-based tensor subclass (was previously a
wrapper) (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1638">#1638</a>,
<a
href="https://redirect.github.com/pytorch/tensordict/issues/1648">#1648</a>)</li>
<li><code>state_dict</code> is now flat by default, with auto-detection
in <code>load_state_dict</code> for backwards compatibility</li>
<li>TensorClass <code>state_dict</code> now uses logical keys</li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>TypedTensorDict</strong>: Schema-enforced TensorDicts with
type annotations, cross-class compatibility, and
<code>torch.compile</code> support (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1657">#1657</a>,
<a
href="https://redirect.github.com/pytorch/tensordict/issues/1659">#1659</a>,
<a
href="https://redirect.github.com/pytorch/tensordict/issues/1660">#1660</a>,
<a
href="https://redirect.github.com/pytorch/tensordict/issues/1662">#1662</a>,
<a
href="https://redirect.github.com/pytorch/tensordict/issues/1663">#1663</a>)</li>
<li><strong>TensorDictStore</strong>: Redis/Dragonfly/KeyDB-backed
TensorDict with TensorClass support, lazy stack storage, and optimized
indexed ops</li>
<li><strong>Distributed collectives</strong>: <code>broadcast</code>,
<code>all_reduce</code>, <code>all_gather</code>, <code>scatter</code>,
consolidated <code>send</code>/<code>recv</code> and
<code>init_remote</code>/<code>from_remote_init</code> with UCXX
transport support (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1611">#1611</a>)</li>
<li><strong><code>set_printoptions</code></strong>: Configurable
TensorDict repr with verbose mode (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1654">#1654</a>,
<a
href="https://redirect.github.com/pytorch/tensordict/issues/1655">#1655</a>,
<a
href="https://redirect.github.com/pytorch/tensordict/issues/1665">#1665</a>)</li>
<li><strong><code>torch.func</code> support</strong>:
<code>jacrev</code>, <code>jacfwd</code>, and <code>hessian</code> now
work with TensorDict (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1613">#1613</a>)</li>
<li><strong><code>vmap</code> with unbatched data</strong>: TensorDicts
containing unbatched tensors can now be vmapped (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1625">#1625</a>)</li>
<li><code>TensorClass.select(as_tensordict=...)</code> parameter (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1544">#1544</a>)</li>
<li><code>TensorDictBase.is_non_tensor(key)</code> for consistent
non-tensor key detection</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Fix <code>HigherOrderOperator</code> support in
<code>__torch_function__</code> (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1668">#1668</a>)</li>
<li>Fix <code>td[key] = []</code> handling (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1666">#1666</a>)</li>
<li>Fix <code>UnbatchedTensor.tolist()</code> (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1664">#1664</a>)</li>
<li>Fix <code>UnbatchedTensor</code> CUDA pickling for multiprocessing
(<a
href="https://redirect.github.com/pytorch/tensordict/issues/1656">#1656</a>)</li>
<li>Fix <code>UnbatchedTensor</code> indexing without batch dim, GPU
failures, getitem/stack (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1607">#1607</a>,
<a
href="https://redirect.github.com/pytorch/tensordict/issues/1626">#1626</a>,
<a
href="https://redirect.github.com/pytorch/tensordict/issues/1633">#1633</a>)</li>
<li>Fix <code>replace()</code> recompiles under
<code>torch.compile</code> (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1605">#1605</a>)</li>
<li>Fix <code>auto_batch_size</code> regression with
<code>NonTensorStack</code> (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1609">#1609</a>)</li>
<li>Fix <code>NonTensorData</code> positional args causing graph breaks
under <code>torch.compile</code> (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1630">#1630</a>)</li>
<li>Fix <code>state_dict</code> error messages, params forwarding,
detach</li>
<li>Pin <code>pybind11&gt;=2.13</code> for Python 3.13
compatibility</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytorch/tensordict/commit/4d413dd6764dda94f047d245d4c04c32f0ad2228"><code>4d413dd</code></a>
[Release] Bump version to 0.12.1</li>
<li><a
href="https://github.com/pytorch/tensordict/commit/2a7c2ee9076d34d50c75a34ec06b9175b77457e1"><code>2a7c2ee</code></a>
[BugFix] <code>unravel_keys</code> inconsistency bug preventing
torch.compile (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1674">#1674</a>)</li>
<li><a
href="https://github.com/pytorch/tensordict/commit/bb8825ea4f4a69c3124e24c4a439ca126c2ab162"><code>bb8825e</code></a>
[CI] Also disable ROCm wheel builds (tensordict is CPU-only)</li>
<li><a
href="https://github.com/pytorch/tensordict/commit/015507ba044c8008822b665931da2ba0207f838b"><code>015507b</code></a>
[CI] Disable CUDA wheel builds (tensordict is CPU-only) (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1672">#1672</a>)</li>
<li><a
href="https://github.com/pytorch/tensordict/commit/3f84f8d08c3f9780f67912f2a020325d4df91b96"><code>3f84f8d</code></a>
[CI] Fix wheel builds (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1671">#1671</a>)</li>
<li><a
href="https://github.com/pytorch/tensordict/commit/b0ebe667e3b86214ed7a3f6662cc19b3bd4405ba"><code>b0ebe66</code></a>
[Release] Bump version to 0.12.0 (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1670">#1670</a>)</li>
<li><a
href="https://github.com/pytorch/tensordict/commit/31b5ef5532f945ef10fdd236c03556c6d2951fbf"><code>31b5ef5</code></a>
[BugFix] Support HigherOrderOperator in <strong>torch_function</strong>
(<a
href="https://redirect.github.com/pytorch/tensordict/issues/1668">#1668</a>)</li>
<li><a
href="https://github.com/pytorch/tensordict/commit/962bf40b756742f0e1f0eb995085ee570c26f5df"><code>962bf40</code></a>
[BugFix] Handle <code>td[key] = []</code> properly (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1666">#1666</a>)</li>
<li><a
href="https://github.com/pytorch/tensordict/commit/fb51ac71ea713340eba5a9c5619fd936fbc412e7"><code>fb51ac7</code></a>
[Feature] set_printoptions(verbose=False) (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1665">#1665</a>)</li>
<li><a
href="https://github.com/pytorch/tensordict/commit/32d9fb65c37e50999afc4e6f1054e0a80285b995"><code>32d9fb6</code></a>
[BugFix] Fix UnbatchedTensor.tolist() (<a
href="https://redirect.github.com/pytorch/tensordict/issues/1664">#1664</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pytorch/tensordict/compare/v0.11.0...v0.12.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `google-auth` from 2.49.1 to 2.49.2
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/googleapis/google-auth-library-python/commits">compare
view</a></li>
</ul>
</details>
<br />

Updates `greenlet` from 3.3.2 to 3.4.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>3.4.0 (2026-04-08)</h1>
<ul>
<li>
<p>Publish binary wheels for RiscV 64.</p>
</li>
<li>
<p>Fix multiple rare crash paths during interpreter shutdown.</p>
<p>Note that this now relies on the <code>atexit</code> module, and
introduces
subtle API changes during interpreter shutdown (for example,
<code>getcurrent</code> is no longer available once the
<code>atexit</code> callback fires).</p>
<p>See <code>PR
[#499](https://github.com/python-greenlet/greenlet/issues/499)
&lt;https://github.com/python-greenlet/greenlet/pull/499&gt;</code>_ by
Nicolas
Bouvrette.</p>
</li>
<li>
<p>Address the results of an automated code audit performed by
Daniel Diniz. This includes several minor correctness changes that
theoretically could have been crashing bugs, but typically only in
very rare circumstances.</p>
<p>See <code>PR 502
&lt;https://github.com/python-greenlet/greenlet/pull/502&gt;</code>_.</p>
</li>
<li>
<p>Fix several race conditions that could arise in free-threaded
builds when using greenlet objects from multiple threads, some of
which could lead to assertion failures or interpreter crashes.</p>
<p>See <code>issue 503
&lt;https://github.com/python-greenlet/greenlet/issues/503&gt;</code>_,
with
thanks to Nitay Dariel and Daniel Diniz.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/df6734edbef6a0e54ecc4ba4735d93ae6d721095"><code>df6734e</code></a>
Preparing release 3.4.0</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/0f860756608b767b2ed70f935053b319d1a1b828"><code>0f86075</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/504">#504</a>
from python-greenlet/freethreading-fixes</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/459657482f3efaee294edff672bde45ac3fac208"><code>4596574</code></a>
TLBC: crash appears to still happen on CI 3.14t ubuntu. Re-enable
workaround.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/2f4a1cf53fa282ab28ea4815164a9cb09b9320ce"><code>2f4a1cf</code></a>
Make green_switch (python level greenlet.switch) and green_throw check
for (p...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/a0c2a2a7519985d5fe2c034a54f1a0fed82a5905"><code>a0c2a2a</code></a>
Fix unused variable warning when asserts are disabled.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/8688581392187d68f35180148fcd6fb4fd9a972f"><code>8688581</code></a>
gcc was complaining about an incomplete std::atomic type. make sure we
includ...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/449c76045b71f7f96c48e8d62672e5382b17cc3d"><code>449c760</code></a>
Make MainGreenlet._thread_state atomic; we use it for cross thread
checking a...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/f840e00dea524c20801bcb4f8764b968590eb6ba"><code>f840e00</code></a>
Add critical sections to greenlet attribute accessors.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/6b281d3eca96ec82a87067b2016241296e4c60e9"><code>6b281d3</code></a>
test_contextvars: No need for the fallback case where contextvars isn't
avail...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/f52615ae64f73b19e53e71cd1e12cbb1841246ff"><code>f52615a</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/502">#502</a>
from python-greenlet/devdanzin-audit</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/3.3.2...3.4.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `msal` from 1.35.1 to 1.36.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/AzureAD/microsoft-authentication-library-for-python/releases">msal's
releases</a>.</em></p>
<blockquote>
<h2>1.36.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix the PoP flow in the console app by <a
href="https://github.com/PetarSDimov"><code>@​PetarSDimov</code></a> in
<a
href="https://redirect.github.com/AzureAD/microsoft-authentication-library-for-python/pull/887">AzureAD/microsoft-authentication-library-for-python#887</a></li>
<li>Add ADO CI, SDL, and release pipelines with e2e test enablement by
<a href="https://github.com/RyAuld"><code>@​RyAuld</code></a> in <a
href="https://redirect.github.com/AzureAD/microsoft-authentication-library-for-python/pull/890">AzureAD/microsoft-authentication-library-for-python#890</a></li>
<li>Add documentation for Managed Identity v2 Hackathon by <a
href="https://github.com/gladjohn"><code>@​gladjohn</code></a> in <a
href="https://redirect.github.com/AzureAD/microsoft-authentication-library-for-python/pull/885">AzureAD/microsoft-authentication-library-for-python#885</a></li>
<li>Potential fix for code scanning alert no. 74: Workflow does not
contain permissions by <a
href="https://github.com/Avery-Dunn"><code>@​Avery-Dunn</code></a> in <a
href="https://redirect.github.com/AzureAD/microsoft-authentication-library-for-python/pull/884">AzureAD/microsoft-authentication-library-for-python#884</a></li>
<li>Added withFmi method for cca app by <a
href="https://github.com/4gust"><code>@​4gust</code></a> in <a
href="https://redirect.github.com/AzureAD/microsoft-authentication-library-for-python/pull/876">AzureAD/microsoft-authentication-library-for-python#876</a></li>
<li>Use cryptographically secure randomness for PKCE, state, and nonce
generation by <a
href="https://github.com/ashok672"><code>@​ashok672</code></a> in <a
href="https://redirect.github.com/AzureAD/microsoft-authentication-library-for-python/pull/894">AzureAD/microsoft-authentication-library-for-python#894</a></li>
<li>Fix OIDC issuer domain spoofing in B2C host validation by <a
href="https://github.com/4gust"><code>@​4gust</code></a> in <a
href="https://redirect.github.com/AzureAD/microsoft-authentication-library-for-python/pull/896">AzureAD/microsoft-authentication-library-for-python#896</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/PetarSDimov"><code>@​PetarSDimov</code></a>
made their first contribution in <a
href="https://redirect.github.com/AzureAD/microsoft-authentication-library-for-python/pull/887">AzureAD/microsoft-authentication-library-for-python#887</a></li>
<li><a href="https://github.com/gladjohn"><code>@​gladjohn</code></a>
made their first contribution in <a
href="https://redirect.github.com/AzureAD/microsoft-authentication-library-for-python/pull/885">AzureAD/microsoft-authentication-library-for-python#885</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/AzureAD/microsoft-authentication-library-for-python/compare/1.35.1...1.36.0">https://github.com/AzureAD/microsoft-authentication-library-for-python/compare/1.35.1...1.36.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/AzureAD/microsoft-authentication-library-for-python/commit/4a2cb98928a48ff3d9aee8fbd395dad03c510e48"><code>4a2cb98</code></a>
Update sku.py</li>
<li><a
href="https://github.com/AzureAD/microsoft-authentication-library-for-python/commit/a3ba722660e838f58659f8f501a2624044266247"><code>a3ba722</code></a>
Fix OIDC issuer domain spoofing in B2C host validation (<a
href="https://redirect.github.com/AzureAD/microsoft-authentication-library-for-python/issues/896">#896</a>)</li>
<li><a
href="https://github.com/AzureAD/microsoft-authentication-library-for-python/commit/6a92f2498d221c673d6e725e7f99d958bd189c5a"><code>6a92f24</code></a>
Use cryptographically secure randomness for PKCE, state, and nonce
generation...</li>
<li><a
href="https://github.com/AzureAD/microsoft-authentication-library-for-python/commit/ecf515a542feb3bcdfa34ed69144c793ed3be4b6"><code>ecf515a</code></a>
Added withFmi method for cca app (<a
href="https://redirect.github.com/AzureAD/microsoft-authentication-library-for-python/issues/876">#876</a>)</li>
<li><a
href="https://github.com/AzureAD/microsoft-authentication-library-for-python/commit/eb7806838f0bc13f2f38fd1bf62a1f8991bbe197"><code>eb78068</code></a>
Potential fix for code scanning alert no. 74: Workflow does not contain
permi...</li>
<li><a
href="https://github.com/AzureAD/microsoft-authentication-library-for-python/commit/6de712edbf3310aa4af163a51ac8b9eeb9dbe65c"><code>6de712e</code></a>
Add documentation for Managed Identity v2 Hackathon (<a
href="https://redirect.github.com/AzureAD/microsoft-authentication-library-for-python/issues/885">#885</a>)</li>
<li><a
href="https://github.com/AzureAD/microsoft-authentication-library-for-python/commit/1f71ede35133ed2a2fa707928e60de6d4f067566"><code>1f71ede</code></a>
Add ADO CI, SDL, and release pipelines with e2e test enablement (<a
href="https://redirect.github.com/AzureAD/microsoft-authentication-library-for-python/issues/890">#890</a>)</li>
<li><a
href="https://github.com/AzureAD/microsoft-authentication-library-for-python/commit/e4e692c5acaa798bd3f24f8178b042fd9a98ab0d"><code>e4e692c</code></a>
Fix the PoP flow in the console app (<a
href="https://redirect.github.com/AzureAD/microsoft-authentication-library-for-python/issues/887">#887</a>)</li>
<li>See full diff in <a
href="https://github.com/AzureAD/microsoft-authentication-library-for-python/compare/1.35.1...1.36.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `opentelemetry-api` from 1.40.0 to 1.41.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md">opentelemetry-api's
changelog</a>.</em></p>
<blockquote>
<h2>Version 1.41.0/0.62b0 (2026-04-09)</h2>
<ul>
<li><code>opentelemetry-sdk</code>: Add <code>host</code> resource
detector support to declarative file configuration via
<code>detection_development.detectors[].host</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5002">#5002</a>)</li>
<li><code>opentelemetry-sdk</code>: Add <code>container</code> resource
detector support to declarative file configuration via
<code>detection_development.detectors[].container</code>, using entry
point loading of the
<code>opentelemetry-resource-detector-containerid</code> contrib package
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5004">#5004</a>)</li>
<li><code>opentelemetry-sdk</code>: Add
<code>create_tracer_provider</code>/<code>configure_tracer_provider</code>
to declarative file configuration, enabling TracerProvider instantiation
from config files without reading env vars
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4985">#4985</a>)</li>
<li>Enabled the flake8-tidy-import plugins rules for the ruff linter.
These rules throw warnings for relative imports in the modules.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5019">#5019</a>)</li>
<li><code>opentelemetry-sdk</code>: Fix <code>AttributeError</code> in
<code>ExplicitBucketHistogramAggregation</code> when applied to
non-Histogram instruments without explicit boundaries
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5034">#5034</a>)</li>
<li>Fix <code>BatchLogRecordProcessor</code> default
<code>schedule_delay_millis</code> from 5000ms to 1000ms to comply with
the OTel specification. Note: logs may be exported 5x more frequently by
default (e.g. for users who don't explicitly set the
<code>OTEL_BLRP_SCHEDULE_DELAY</code> env var).
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4998">#4998</a>)</li>
<li><code>opentelemetry-sdk</code>: Add <code>process</code> resource
detector support to declarative file configuration via
<code>detection_development.detectors[].process</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5001">#5001</a>)</li>
<li><code>opentelemetry-sdk</code>: Add shared
<code>_parse_headers</code> helper for declarative config OTLP exporters
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5021">#5021</a>)</li>
<li><code>opentelemetry-api</code>: Replace a broad exception in
attribute cleaning tests to satisfy pylint in the
<code>lint-opentelemetry-api</code> CI job</li>
<li><code>opentelemetry-sdk</code>: Add
<code>create_meter_provider</code>/<code>configure_meter_provider</code>
to declarative file configuration, enabling MeterProvider instantiation
from config files without reading env vars
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4987">#4987</a>)</li>
<li><code>opentelemetry-sdk</code>: Add <code>create_resource</code> and
<code>create_propagator</code>/<code>configure_propagator</code> to
declarative file configuration, enabling Resource and propagator
instantiation from config files without reading env vars
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4979">#4979</a>)</li>
<li><code>opentelemetry-sdk</code>: Map Python <code>CRITICAL</code> log
level to OTel <code>FATAL</code> severity text per the specification
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4984">#4984</a>)</li>
<li><code>opentelemetry-sdk</code>: Add file configuration support with
YAML/JSON loading, environment variable substitution, and schema
validation against the vendored OTel config JSON schema
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4898">#4898</a>)</li>
<li>Fix intermittent CI failures in <code>getting-started</code> and
<code>tracecontext</code> jobs caused by GitHub git CDN SHA propagation
lag by installing contrib packages from the already-checked-out local
copy instead of a second git clone
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4958">#4958</a>)</li>
<li><code>opentelemetry-sdk</code>: fix type annotations on
<code>MetricReader</code> and related types
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4938/">#4938</a>)</li>
<li><code>opentelemetry-sdk</code>: implement log creation metric
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4935">#4935</a>)</li>
<li><code>opentelemetry-sdk</code>: implement metric reader metrics
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4970">#4970</a>)</li>
<li><code>opentelemetry-sdk</code>: implement processor metrics
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5012">#5012</a>)</li>
<li><code>opentelemetry-sdk</code>: upgrade vendored OTel configuration
schema from v1.0.0-rc.3 to v1.0.0
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4965">#4965</a>)</li>
<li>improve check-links ci job
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4978">#4978</a>)</li>
<li>Resolve some Pyright type errors in Span/ReadableSpan and utility
stubs
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4973">#4973</a>)</li>
<li><code>opentelemetry-exporter-prometheus</code>: Fix metric name
prefix
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4895">#4895</a>)</li>
<li><code>opentelemetry-api</code>, <code>opentelemetry-sdk</code>: Add
deepcopy support for <code>BoundedAttributes</code> and
<code>BoundedList</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4934">#4934</a>)</li>
<li><code>opentelemetry-proto-json</code>,
<code>opentelemetry-codegen-json</code>: Implement custom protoc plugin
to generate OTLP JSON class definitions
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4910">#4910</a>)</li>
<li>Add configurable <code>max_export_batch_size</code> to OTLP HTTP
metrics exporter</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/1a178fcc5c689516849ced80fb2533fe7db7a80f"><code>1a178fc</code></a>
[release/v1.41.x-0.62bx] Prepare release 1.41.0/0.62b0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5064">#5064</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/37dea4bbdb1a3c83b96fc22c2f68a848b4989fb5"><code>37dea4b</code></a>
feat: add experimental logger configurator (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4980">#4980</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/7c860ca40eb87c15fb608ce3598cfec4a5da2d1c"><code>7c860ca</code></a>
misc: update version for codegen-json and proto-json packages (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5061">#5061</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/b3d98b392fd1fa1a501e11ce8e126f2003edb895"><code>b3d98b3</code></a>
[chore]: update readme (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5060">#5060</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/dbbd1bca26f12d0cefff721a857d08a82476f434"><code>dbbd1bc</code></a>
feat(config): Add MeterProvider support for declarative config (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4987">#4987</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/6faa58c58782313283a87a7c61fbbdd9cd2054d6"><code>6faa58c</code></a>
feat(config): add host resource detector support for declarative config
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5002">#5002</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/c0cbfbd62fa59e2c41cd2c88371dc6478fa95716"><code>c0cbfbd</code></a>
feat(config): wire container resource detector via entry point loading
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5004">#5004</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/f764e45f52952f5a0287e5a6c094cbfd56accd2b"><code>f764e45</code></a>
feat(config): Add TracerProvider support for declarative config (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4985">#4985</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/e3017323f147fd14a64fa8bb070271026182208a"><code>e301732</code></a>
Add MikeGoldsmith to approvers (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5038">#5038</a>)</li>
<li><a
href="https://github.com/open-telemetry/opentelemetry-python/commit/8783a5831d54d9224edd930e5106225fc0f97c1b"><code>8783a58</code></a>
introduce <code>alls-green</code> action for required checks (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4988">#4988</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-python/compare/v1.40.0...v1.41.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `opentelemetry-instrumentation` from 0.61b0 to 0.62b0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-python-contrib/releases">opentelemetry-instrumentation's
releases</a>.</em></p>
<blockquote>
<h2>opentelemetry-instrumentation-openai-v2 2.3b0</h2>
<ul>
<li>Fix <code>AttributeError</code> when handling
<code>LegacyAPIResponse</code> (from <code>with_raw_response</code>) (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4017">#4017</a>)</li>
<li>Add support for chat completions choice count and stop sequences
span attributes (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4028">#4028</a>)</li>
<li>Fix crash with streaming <code>with_raw_response</code> (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4033">#4033</a>)</li>
<li>Bump to 1.30.0 semconv schema: <code>gen_ai.request.seed</code>
instead of <code>gen_ai.openai.request.seed</code> (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4036">#4036</a>)</li>
</ul>
<h2>opentelemetry-instrumentation-openai-v2 2.2b0</h2>
<ul>
<li>Fix service tier attribute names: use
<code>GEN_AI_OPENAI_REQUEST_SERVICE_TIER</code> for request attributes
and <code>GEN_AI_OPENAI_RESPONSE_SERVICE_TIER</code> for response
attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/issues/3920">#3920</a>)</li>
<li>Added support for OpenAI embeddings instrumentation (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3461">#3461</a>)</li>
<li>Record prompt and completion events regardless of span sampling
decision. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3226">#3226</a>)</li>
<li>Filter out attributes with the value of NotGiven instances (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3760">#3760</a>)</li>
<li>Migrate off the deprecated events API to use the logs API (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3628">#3625</a>)</li>
</ul>
<h2>opentelemetry-instrumentation-openai-agents-v2 0.1.0</h2>
<ul>
<li>Initial barebones package skeleton: minimal instrumentor stub,
version module, and packaging metadata/entry point. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3805">#3805</a>)</li>
<li>Implement OpenAI Agents span processing aligned with GenAI semantic
conventions. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3817">#3817</a>)</li>
<li>Input and output according to GenAI spec. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3824">#3824</a>)</li>
</ul>
<h2>opentelemetry-instrumentation-openai-v2 2.1b0</h2>
<ul>
<li>Coerce openai response_format to semconv format (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3073">#3073</a>)</li>
<li>Add example to <code>opentelemetry-instrumentation-openai-v2</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3006">#3006</a>)</li>
<li>Support for <code>AsyncOpenAI/AsyncCompletions</code> (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/2984">#2984</a>)</li>
<li>Add metrics (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3180">#3180</a>)</li>
</ul>
<h2>opentelemetry-instrumentation-openai-v2 2.0b0</h2>
<ul>
<li>
<p>Use generic
<code>OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT</code>
environment variable to control if content of prompt, completion, and
other messages is captured. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/2947">#2947</a>)</p>
</li>
<li>
<p>Update OpenAI instrumentation to Semantic Conventions v1.28.0: add
new attributes and switch prompts and completions to log-based events.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/2925">#2925</a>)</p>
</li>
<li>
<p>Initial OpenAI instrumentation (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/2759">#2759</a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md">opentelemetry-instrumentation's
changelog</a>.</em></p>
<blockquote>
<h2>Version 1.41.0/0.62b0 (2026-04-09)</h2>
<h3>Added</h3>
<ul>
<li><code>opentelemetry-instrumentation-asgi</code>: Respect
<code>suppress_http_instrumentation</code> context in ASGI middleware to
skip server span creation when HTTP instrumentation is suppressed
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4375">#4375</a>)</li>
<li><code>opentelemetry-instrumentation-confluent-kafka</code>: Loosen
confluent-kafka upper bound to &lt;3.0.0
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4289">#4289</a>)</li>
<li><code>opentelemetry-instrumentation</code>: Add support for wrapt
2.x
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4203">#4203</a>)</li>
<li><code>opentelemetry-instrumentation-psycopg2</code>: Add parameter
<code>capture_parameters</code> to instrumentor.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4212">#4212</a>)</li>
<li><code>opentelemetry-instrumentation-botocore</code>: Add support for
instrumenting <code>aiobotocore</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4049">#4049</a>)</li>
<li><code>opentelemetry-instrumentation-sqlalchemy</code>: implement new
semantic convention opt-in migration
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4110">#4110</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><code>opentelemetry-docker-tests</code>: Replace deprecated
<code>SpanAttributes</code> from
<code>opentelemetry.semconv.trace</code> with
<code>opentelemetry.semconv._incubating.attributes</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4339">#4339</a>)</li>
<li><code>opentelemetry-instrumentation-confluent-kafka</code>: Skip
<code>recv</code> span creation when <code>poll()</code> returns no
message or <code>consume()</code> returns an empty list, avoiding empty
spans on idle polls
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4349">#4349</a>)</li>
<li>Fix intermittent <code>Core Contrib Test</code> CI failures caused
by GitHub git CDN SHA propagation lag by installing core packages from
the already-checked-out local copy instead of a second git clone
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4305">#4305</a>)</li>
<li>Don't import module in unwrap if not already imported
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4321">#4321</a>)</li>
<li><code>opentelemetry-instrumentation-logging</code>: Map Python
<code>CRITICAL</code> log level to OTel <code>FATAL</code> severity text
and <code>WARNING</code> to <code>WARN</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4365">#4365</a>)</li>
<li><code>opentelemetry-instrumentation-logging</code>: Add recursion
guard in LoggingHandler.emit to prevent deadlock
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4302">#4302</a>)</li>
<li><code>opentelemetry-instrumentation-grpc</code>: Fix bidirectional
streaming RPCs raising <code>AttributeError: 'generator' object has no
attribute 'add_done_callback'</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4259">#4259</a>)</li>
<li><code>opentelemetry-instrumentation-aiokafka</code>: fix
<code>Unclosed AIOKafkaProducer</code> warning and <code>RuntimeWarning:
coroutine was never awaited</code> in tests
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4384">#4384</a>)</li>
<li><code>opentelemetry-instrumentation-aiokafka</code>: Fix
compatibility with aiokafka 0.13 by calling
<code>_key_serializer</code>/<code>_value_serializer</code> directly
instead of the internal <code>_serialize</code> method
whose signature changed in 0.13 from <code>(topic, key, value)</code> to
<code>(key, value, headers)</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4379">#4379</a>)</li>
</ul>
<h3>Breaking changes</h3>
<ul>
<li><code>opentelemetry-instrumentation-boto</code>: Remove
instrumentation
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4303">#4303</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/open-telemetry/opentelemetry-python-contrib/commits">compare
view</a></li>
</ul>
</details>
<br />

Updates `opentelemetry-instrumentation-asgi` from 0.61b0 to 0.62b0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md">opentelemetry-instrumentation-asgi's
changelog</a>.</em></p>
<blockquote>
<h2>Version 1.41.0/0.62b0 (2026-04-09)</h2>
<h3>Added</h3>
<ul>
<li><code>opentelemetry-instrumentation-asgi</code>: Respect
<code>suppress_http_instrumentation</code> context in ASGI middleware to
skip server span creation when HTTP instrumentation is suppressed
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4375">#4375</a>)</li>
<li><code>opentelemetry-instrumentation-confluent-kafka</code>: Loosen
confluent-kafka upper bound to &lt;3.0.0
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4289">#4289</a>)</li>
<li><code>opentelemetry-instrumentation</code>: Add support for wrapt
2.x
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4203">#4203</a>)</li>
<li><code>opentelemetry-instrumentation-psycopg2</code>: Add parameter
<code>capture_parameters</code> to instrumentor.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4212">#4212</a>)</li>
<li><code>opentelemetry-instrumentation-botocore</code>: Add support for
instrumenting <code>aiobotocore</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4049">#4049</a>)</li>
<li><code>opentelemetry-instrumentation-sqlalchemy</code>: implement new
semantic convention opt-in migration
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4110">#4110</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><code>opentelemetry-docker-tests</code>: Replace deprecated
<code>SpanAttributes</code> from
<code>opentelemetry.semconv.trace</code> with
<code>opentelemetry.semconv._incubating.attributes</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4339">#4339</a>)</li>
<li><code>opentelemetry-instrumentation-confluent-kafka</code>: Skip
<code>recv</code> span creation when <code>poll()</code> returns no
message or <code>consume()</code> returns an empty list, avoiding empty
spans on idle polls
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4349">#4349</a>)</li>
<li>Fix intermittent <code>Core Contrib Test</code> CI failures caused
by GitHub git CDN SHA propagation lag by installing core packages from
the already-checked-out local copy instead of a second git clone
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4305">#4305</a>)</li>
<li>Don't import module in unwrap if not already imported
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4321">#4321</a>)</li>
<li><code>opentelemetry-instrumentation-logging</code>: Map Python
<code>CRITICAL</code> log level to OTel <code>FATAL</code> severity text
and <code>WARNING</code> to <code>WARN</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4365">#4365</a>)</li>
<li><code>opentelemetry-instrumentation-logging</code>: Add recursion
guard in LoggingHandler.emit to prevent deadlock
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4302">#4302</a>)</li>
<li><code>opentelemetry-instrumentation-grpc</code>: Fix bidirectional
streaming RPCs raising <code>AttributeError: 'generator' object has no
attribute 'add_done_callback'</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4259">#4259</a>)</li>
<li><code>opentelemetry-instrumentation-aiokafka</code>: fix
<code>Unclosed AIOKafkaProducer</code> warning and <code>RuntimeWarning:
coroutine was never awaited</code> in tests
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4384">#4384</a>)</li>
<li><code>opentelemetry-instrumentation-aiokafka</code>: Fix
compatibility with aiokafka 0.13 by calling
<code>_key_serializer</code>/<code>_value_serializer</code> directly
instead of the internal <code>_serialize</code> method
whose signature changed in 0.13 from <code>(topic, key, value)</code> to
<code>(key, value, headers)</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4379">#4379</a>)</li>
</ul>
<h3>Breaking changes</h3>
<ul>
<li><code>opentelemetry-instrumentation-boto</code>: Remove
instrumentation
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4303">#4303</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/open-telemetry/opentelemetry-python-contrib/commits">compare
view</a></li>
</ul>
</details>
<br />

Updates `opentelemetry-instrumentation-dbapi` from 0.61b0 to 0.62b0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md">opentelemetry-instrumentation-dbapi's
changelog</a>.</em></p>
<blockquote>
<h2>Version 1.41.0/0.62b0 (2026-04-09)</h2>
<h3>Added</h3>
<ul>
<li><code>opentelemetry-instrumentation-asgi</code>: Respect
<code>suppress_http_instrumentation</code> context in ASGI middleware to
skip server span creation when HTTP instrumentation is suppressed
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4375">#4375</a>)</li>
<li><code>opentelemetry-instrumentation-confluent-kafka</code>: Loosen
confluent-kafka upper bound to &lt;3.0.0
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4289">#4289</a>)</li>
<li><code>opentelemetry-instrumentation</code>: Add support for wrapt
2.x
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4203">#4203</a>)</li>
<li><code>opentelemetry-instrumentation-psycopg2</code>: Add parameter
<code>capture_parameters</code> to instrumentor.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4212">#4212</a>)</li>
<li><code>opentelemetry-instrumentation-botocore</code>: Add support for
instrumenting <code>aiobotocore</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4049">#4049</a>)</li>
<li><code>opentelemetry-instrumentation-sqlalchemy</code>: implement new
semantic convention opt-in migration
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4110">#4110</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><code>opentelemetry-docker-tests</code>: Replace deprecated
<code>SpanAttributes</code> from
<code>opentelemetry.semconv.trace</code> with
<code>opentelemetry.semconv._incubating.attributes</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4339">#4339</a>)</li>
<li><code>opentelemetry-instrumentation-confluent-kafka</code>: Skip
<code>recv</code> span creation when <code>poll()</code> returns no
message or <code>consume()</code> returns an empty list, avoiding empty
spans on idle polls
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4349">#4349</a>)</li>
<li>Fix intermittent <code>Core Contrib Test</code> CI failures caused
by GitHub git CDN SHA propagation lag by installing core packages from
the already-checked-out local copy instead of a second git clone
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4305">#4305</a>)</li>
<li>Don't import module in unwrap if not already imported
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4321">#4321</a>)</li>
<li><code>opentelemetry-instrumentation-logging</code>: Map Python
<code>CRITICAL</code> log level to OTel <code>FATAL</code> severity text
and <code>WARNING</code> to <code>WARN</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4365">#4365</a>)</li>
<li><code>opentelemetry-instrumentation-logging</code>: Add recursion
guard in LoggingHandler.emit to prevent deadlock
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4302">#4302</a>)</li>
<li><code>opentelemetry-instrumentation-grpc</code>: Fix bidirectional
streaming RPCs raising <code>AttributeError: 'generator' object has no
attribute 'add_done_callback'</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4259">#4259</a>)</li>
<li><code>opentelemetry-instrumentation-aiokafka</code>: fix
<code>Unclosed AIOKafkaProducer</code> warning and <code>RuntimeWarning:
coroutine was never awaited</code> in tests
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4384">#4384</a>)</li>
<li><code>opentelemetry-instrumentation-aiokafka</code>: Fix
compatibility with aiokafka 0.13 by calling
<code>_key_serializer</code>/<code>_value_serializer</code> directly
instead of the internal <code>_serialize</code> method
whose signature changed in 0.13 from <code>(topic, key, value)</code> to
<code>(key, value, headers)</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4379">#4379</a>)</li>
</ul>
<h3>Breaking changes</h3>
<ul>
<li><code>opentelemetry-instrumentation-boto</code>: Remove
instrumentation
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4303">#4303</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/open-telemetry/opentelemetry-python-contrib/commits">compare
view</a></li>
</ul>
</details>
<br />

Updates `opentelemetry-instrumentation-django` from 0.61b0 to 0.62b0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md">opentelemetry-instrumentation-django's
changelog</a>.</em></p>
<blockquote>
<h2>Version 1.41.0/0.62b0 (2026-04-09)</h2>
<h3>Added</h3>
<ul>
<li><code>opentelemetry-instrumentation-asgi</code>: Respect
<code>suppress_http_instrumentation</code> context in ASGI middleware to
skip server span creation when HTTP instrumentation is suppressed
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4375">#4375</a>)</li>
<li><code>opentelemetry-instrumentation-confluent-kafka</code>: Loosen
confluent-kafka upper bound to &lt;3.0.0
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4289">#4289</a>)</li>
<li><code>opentelemetry-instrumentation</code>: Add support for wrapt
2.x
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4203">#4203</a>)</li>
<li><code>opentelemetry-instrumentation-psycopg2</code>: Add parameter
<code>capture_parameters</code> to instrumentor.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4212">#4212</a>)</li>
<li><code>opentelemetry-instrumentation-botocore</code>: Add support for
instrumenting <code>aiobotocore</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4049">#4049</a>)</li>
<li><code>opentelemetry-instrumentation-sqlalchemy</code>: implement new
semantic convention opt-in migration
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4110">#4110</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><code>opentelemetry-docker-tests</code>: Replace deprecated
<code>SpanAttributes</code> from
<code>opentelemetry.semconv.trace</code> with
<code>opentelemetry.semconv._incubating.attributes</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4339">#4339</a>)</li>
<li><code>opentelemetry-instrumentation-confluent-kafka</code>: Skip
<code>recv</code> span creation when <code>poll()</code> returns no
message or <code>consume()</code> returns an empty list, avoiding empty
spans on idle polls
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4349">#4349</a>)</li>
<li>Fix intermittent <code>Core Contrib Test</code> CI failures caused
by GitHub git CDN SHA propagation lag by installing core packages from
the already-checked-out local copy instead of a second git clone
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4305">#4305</a>)</li>
<li>Don't import module in unwrap if not already imported
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4321">#4321</a>)</li>
<li><code>opentelemetry-instrumentation-logging</code>: Map Python
<code>CRITICAL</code> log level to OTel <code>FATAL</code> severity text
and <code>WARNING</code> to <code>WARN</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4365">#4365</a>)</li>
<li><code>opentelemetry-instrumentation-logging</code>: Add recursion
guard in LoggingHandler.emit to prevent deadlock
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4302">#4302</a>)</li>
<li><code>opentelemetry-instrumentation-grpc</code>: Fix bidirectional
streaming RPCs raising <code>AttributeError: 'generator' object has no
attribute 'add_done_callback'</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4259">#4259</a>)</li>
<li><code>opentelemetry-instrumentation-aiokafka</code>: fix
<code>Unclosed AIOKafkaProducer</code> warning and <code>RuntimeWarning:
coroutine was never awaited</code> in tests
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4384">#4384</a>)</li>
<li><code>opentelemetry-instrumentation-aiokafka</code>: Fix
compatibility with aiokafka 0.13 by calling
<code>_key_serializer</code>/<code>_value_serializer</code> directly
instead of the internal <code>_serialize</code> method
whose signature changed in 0.13 from <code>(topic, key, value)</code> to
<code>(key, value, headers)</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4379">#4379</a>)</li>
</ul>
<h3>Breaking changes</h3>
<ul>
<li><code>opentelemetry-instrumentation-boto</code>: Remove
instrumentation
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4303">#4303</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/open-telemetry/opentelemetry-python-contrib/commits">compare
view</a></li>
</ul>
</details>
<br />

Updates `opentelemetry-instrumentation-fastapi` from 0.61b0 to 0.62b0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md">opentelemetry-instrumentation-fastapi's
changelog</a>.</em></p>
<blockquote>
<h2>Version 1.41.0/0.62b0 (2026-04-09)</h2>
<h3>Added</h3>
<ul>
<li><code>opentelemetry-instrumentation-asgi</code>: Respect
<code>suppress_http_instrumentation</code> context in ASGI middleware to
skip server span creation when HTTP instrumentation is suppressed
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4375">#4375</a>)</li>
<li><code>opentelemetry-instrumentation-confluent-kafka</code>: Loosen
confluent-kafka upper bound to &lt;3.0.0
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4289">#4289</a>)</li>
<li><code>opentelemetry-instrumentation</code>: Add support for wrapt
2.x
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4203">#4203</a>)</li>
<li><code>opentelemetry-instrumentation-psycopg2</code>: Add parameter
<code>capture_parameters</code> to instrumentor.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4212">#4212</a>)</li>
<li><code>opentelemetry-instrumentation-botocore</code>: Add support for
instrumenting <code>aiobotocore</code>
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4049">#4049</a>)</li>
<li><code>opentelemetry-instrumentation-sqlalchemy</code>: implement new
semantic convention opt-in migration
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4110">#4110</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><code>opentelemetry-docker-tests</code>: Replace deprecated
<code…
pull Bot pushed a commit to sysfce2/python-greenlet that referenced this pull request Apr 27, 2026
This callback caused greenlet APIs to become unavailable far too soon
during interpreter shutdown. Now they remain available while all
``atexit`` callbacks run; using greenlet APIs from atexit callbacks
registered in any order is a valid thing to do and happens naturally
with gevent monkey-patching.

A careful, thorough reading of the CPython documentation and the
CPython source code for all supported versions of Python (3.10+)
indicates that any gating needing to be done is correctly handled with
``Py_IsFinalizing``.

The comments in PR python-greenlet#499 that added the callback were wrong: it's not
possible to access partially torn-down state during ``atexit``. And
the tests provided in that PR did not demonstrate any crashes (they
pass with or without the ``atexit`` callback).

CPython shuts things down in the following order:

1. Attempt to wait for all non-daemon threads to finish.
2. Invoke any pending calls.
3. Invoke ``atexit`` callbacks. At this point, it is guaranteed that
   the interpreter is still fully operational, the import machinery
   still works, etc. All such callbacks can successfully use greenlet
   APIs.
4. Finalize any sub-intepreters in newer versions. greenlet doesn't
   support sub-interpreters, so this is inconsequential.
5. Detach any remaining threads in newer versions.
6. Set ``Py_IsFinalizing`` to true. Any other threads still remaining
   will no longer be able to run Python code. All cleanup operations
   continue in this thread. At this point, ``getcurrent`` will start
   returning ``None`` or raising an exception (C API).
7. Garbage collect threads (active objects on the call stack).
8. Run cyclic garbage collection.
9. Only now does the interpreter begin to tear down module state,
   beginning by clearing out module dictionaries and allowing
   finalizers/weakref to be cleared. Up to and through the beginning
   of this process, greenlet APIs are safe to call, and greenlet
   objects can be used (switched/thrown). At some point, this may
   become untrue, but all unreachable greenlet objects (which should
   be anything not stashed away in a C extension). greenlet can't do
   anything about extant objects that may still have methods called on
   them, but it can prevent getting access to implicit objects that
   may be getting torn down: that's why getcurrent behaves the way it
   does (any exceptions generated during at least steps 7, 8, 9 are
   "unraisable" and just get printed). Note that the
   CPython documentation specifically calls out the fact that modules
   may be finalized in any order, so modules that rely on other
   modules MUST be coded defensively.

The long and short is that greenlet can't do anything reasonable to
protect other modules from accessing state that may be torn
down (``atexit`` is too soon; a PyCapsule destructor may be too late
or never get fired; module ``m_clear`` and ``m_free`` functions may
never get called). It's up to other C modules to check for interpreter
finalization and be aware that any other C modules they use may no
longer be valid at that point.
github-actions Bot pushed a commit to neuro-inc/platform-api that referenced this pull request May 22, 2026
Bumps [greenlet](https://github.com/python-greenlet/greenlet) from 3.3.0
to 3.5.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>3.5.1 (2026-05-20)</h1>
<ul>
<li>Add preliminary support for Python 3.15b1. This has not been
reviewed by CPython core developers, but all tests pass. Binary
wheels of this version won't work on earlier Python 3.15 builds and
may not work on later 3.15 builds.</li>
<li>Fix the discrepancy in the way the two <code>getcurrent</code> APIs
behave
during greenlet teardown. One API (the C API used by, e.g., gevent)
raised a
<code>RuntimeError</code>; the other (the Python
<code>greenlet.getcurrent</code> API)
returned <code>None</code>. This second way is incompatible with
greenlet's type
annotations, so <code>greenlet.getcurrent</code> now raises a
<code>RuntimeError</code> as well.</li>
</ul>
<h1>3.5.0 (2026-04-27)</h1>
<ul>
<li>
<p>Remove the <code>atexit</code> callback. This callback caused
greenlet APIs
to become unavailable far too soon during interpreter shutdown. Now
they remain available while all <code>atexit</code> callbacks run.
Sometime
after <code>Py_IsFinalizing</code> becomes true, they may begin
misbehaving.
Because the order in which C extensions are finalized is undefined,
C extensions that are sensitive to this need to check the results of
that function before invoking greenlet APIs. As a convenience,
<code>PyGreenlet_GetCurrent</code> sets an exception and returns
<code>NULL</code>
when this happens (and <code>greenlet.getcurrent</code> begins returning
<code>None</code>); other greenlet C API functions have undefined
behaviour.
Methods invoked directly on pre-existing <code>greenlet.greenlet</code>
objects will continue to function at least until the greenlet C
extension has been garbage collected and finalized.</p>
<p>See <code>PR 508
&lt;https://github.com/python-greenlet/greenlet/pull/508&gt;</code>_.</p>
</li>
</ul>
<h1>3.4.0 (2026-04-08)</h1>
<ul>
<li>
<p>Publish binary wheels for RiscV 64.</p>
</li>
<li>
<p>Fix multiple rare crash paths during interpreter shutdown.</p>
<p>Note that this now relies on the <code>atexit</code> module, and
introduces
subtle API changes during interpreter shutdown (for example,
<code>getcurrent</code> is no longer available once the
<code>atexit</code> callback fires).</p>
<p>See <code>PR
[#499](python-greenlet/greenlet#499)
&lt;https://github.com/python-greenlet/greenlet/pull/499&gt;</code>_ by
Nicolas
Bouvrette.</p>
</li>
<li>
<p>Address the results of an automated code audit performed by
Daniel Diniz. This includes several minor correctness changes that</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/b5e5fc43a51c27ecffa1b1c7107c91464a6b26e2"><code>b5e5fc4</code></a>
Preparing release 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c8e177413d34bc36ed56d2c185c232ab0538be90"><code>c8e1774</code></a>
Tweak wording in CHANGES about greenlet.getcurrent.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/7fb10c570f37b3eb4c8909c6164fdfac3269ddb6"><code>7fb10c5</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/510">#510</a>
from python-greenlet/315</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/9718ce5a23ea3360232b78a806a837d6c3d6183d"><code>9718ce5</code></a>
Add Py 3.15; make both API versions of getcurrent() consistent in
raising Run...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/276e08afc4ddba87e4366390e3eeaecd61ccb3b8"><code>276e08a</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/509">#509</a>
from python-greenlet/dependabot/github_actions/github...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/32b0ad69828eb69d879c70dbee948e685268901b"><code>32b0ad6</code></a>
Bump pypa/gh-action-pypi-publish in the github-actions group</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/173b692dc84288ef41572612ac744754f98eaa90"><code>173b692</code></a>
Back to development: 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c7acc72000572811d6462ebe01733a974f194990"><code>c7acc72</code></a>
Preparing release 3.5.0</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/d08f99bf40801c5d57af6e13631c0ba68300ecf7"><code>d08f99b</code></a>
CHANGES: Update link from <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/507">#507</a>
to more full description in <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/fd3391e33cedc7a17a86059f18dfbec2b3a320bd"><code>fd3391e</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>
from python-greenlet/issue507-remove-atexit</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/3.3.0...3.5.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=greenlet&package-manager=pip&previous-version=3.3.0&new-version=3.5.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Onegaishimas pushed a commit to Onegaishimas/wasat that referenced this pull request Jun 4, 2026
…ith 6 updates (#455)

Updates the requirements on
[pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio),
[testcontainers](https://github.com/testcontainers/testcontainers-python),
[mypy](https://github.com/python/mypy),
[ruff](https://github.com/astral-sh/ruff),
[faker](https://github.com/joke2k/faker) and
[greenlet](https://github.com/python-greenlet/greenlet) to permit the
latest version.
Updates `pytest-asyncio` to 1.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's
releases</a>.</em></p>
<blockquote>
<h2>pytest-asyncio v1.4.0</h2>
<h1><a
href="https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0">1.4.0</a>
- 2026-05-26</h1>
<h2>Deprecated</h2>
<ul>
<li>Overriding the <em>event_loop_policy</em> fixture is deprecated. Use
the <code>pytest_asyncio_loop_factories</code> hook instead. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419">#1419</a>)</li>
</ul>
<h2>Added</h2>
<ul>
<li>
<p>Added the <code>pytest_asyncio_loop_factories</code> hook to
parametrize asyncio tests with custom event loop factories.</p>
<p>The hook returns a mapping of factory names to loop factories, and
<code>pytest.mark.asyncio(loop_factories=[...])</code> selects a subset
of configured factories per test. When a single factory is configured,
test names are unchanged.</p>
<p>Synchronous <code>@pytest_asyncio.fixture</code> functions now see
the correct event loop when custom loop factories are configured, even
when test code disrupts the current event loop (e.g., via
<code>asyncio.run()</code> or
<code>asyncio.set_event_loop(None)</code>). (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164">#1164</a>)</p>
</li>
</ul>
<h2>Changed</h2>
<ul>
<li>Improved the readability of the warning message that is displayed
when <code>asyncio_default_fixture_loop_scope</code> is unset (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298">#1298</a>)</li>
<li>Only import <code>asyncio.AbstractEventLoopPolicy</code> for type
checking to avoid raising
a DeprecationWarning. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394">#1394</a>)</li>
<li>Updated minimum supported pytest version to v8.4.0. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1397">#1397</a>)</li>
</ul>
<h2>Fixed</h2>
<ul>
<li>Fixed a <code>ResourceWarning: unclosed event loop</code> warning
that could occur when a synchronous test called
<code>asyncio.run()</code> or otherwise unset the current event loop
after pytest-asyncio had run an async test or fixture. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/724">#724</a>)</li>
</ul>
<h2>Notes for Downstream Packagers</h2>
<ul>
<li>Added dependency on <code>sphinx-tabs &gt;= 3.5</code> to organize
documentation examples into tabs. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1395">#1395</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/6e14cd2af9292dca1fa2b027a06bbc40b0e0e425"><code>6e14cd2</code></a>
chore: Prepare release of v1.4.0.</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/4b900fb5d0c30949c574e55dd904ee179f858a5e"><code>4b900fb</code></a>
Build(deps): Bump codecov/codecov-action from 6.0.0 to 6.0.1</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/ab9f63245094865c42c940a34af724b0dec1debf"><code>ab9f632</code></a>
Build(deps): Bump zipp from 3.23.1 to 4.1.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/a56fc77ecd59f781d8471b0f6a82bf58e08c95fa"><code>a56fc77</code></a>
Build(deps): Bump hypothesis from 6.152.6 to 6.152.8</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/e8bae9bc1f197731fc1a210c0da557af7b698e6d"><code>e8bae9b</code></a>
Build(deps): Bump requests from 2.34.0 to 2.34.2</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/fc433402c570fd36a7a227ef4bc3abd4579299de"><code>fc43340</code></a>
Build(deps): Bump idna from 3.14 to 3.15</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/762eaf5033b798b965c92afdbb2cebefa8fc3a8b"><code>762eaf5</code></a>
Build(deps): Bump jaraco-functools from 4.4.0 to 4.5.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/b62e2228c80070977baf6b77ba89d5c148af920f"><code>b62e222</code></a>
Build(deps): Bump click from 8.3.3 to 8.4.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/919044700627889d25ca63b6e7a3bc785f3137eb"><code>9190447</code></a>
Build(deps): Bump pydantic from 2.13.3 to 2.13.4</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/82a393c5e31b6ebbbd8ec2a8dafc5f35b9cf1236"><code>82a393c</code></a>
ci: Remove unnecessary debug output.</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest-asyncio/compare/v0.25.0...v1.4.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `testcontainers` from 4.8.2 to 4.14.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/testcontainers/testcontainers-python/releases">testcontainers's
releases</a>.</em></p>
<blockquote>
<h2>testcontainers: v4.14.2</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2">4.14.2</a>
(2026-03-18)</h2>
<h3>Features</h3>
<ul>
<li><strong>kafka:</strong> allow configurable listener name and
security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3">44dd40b</a>)</li>
</ul>
<h2>testcontainers: v4.14.1</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1">4.14.1</a>
(2026-01-31)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Allow passing in a custom wait strategy string in MySQL, Cassandra,
Kafka and Trino (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/953">#953</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b">be4d09e</a>)</li>
<li><strong>compose:</strong> expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f">183e1aa</a>)</li>
<li><strong>core:</strong> bring back dind tests (<a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5">7337266</a>)</li>
<li><strong>core:</strong> Use WaitStrategy internally for wait_for
function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e">e323317</a>)</li>
<li><strong>nats:</strong> add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4">49c9af8</a>)</li>
<li>Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8">f690e88</a>),
closes <a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/860">#860</a></li>
</ul>
<h2>testcontainers: v4.14.0</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0">4.14.0</a>
(2026-01-07)</h2>
<h3>Features</h3>
<ul>
<li>Add ExecWaitStrategy and migrate Postgres from deprecated decorator
(<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/935">#935</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06">2d9eee3</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>add ruff to deps (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/919">#919</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d">5853d32</a>)</li>
<li><strong>cassandra,mysqk,kafka:</strong> Use wait strategy instead of
deprecated wait_for_logs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/945">#945</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9">b7791b9</a>)</li>
<li><strong>core:</strong> recreate poetry lockfile with latest versions
of libraries (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/946">#946</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03">9a97385</a>)</li>
<li><strong>elasticsearch:</strong> Use wait strategy instead of
deprecated decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/915">#915</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627">c785ecd</a>)</li>
<li><strong>minio:</strong> minio client requires kwargs now (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/933">#933</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62">37f5902</a>)</li>
<li><strong>minio:</strong> Use wait strategy instead of deprecated
decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/899">#899</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3">febccb7</a>)</li>
</ul>
<h2>testcontainers: v4.13.3</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3">4.13.3</a>
(2025-11-14)</h2>
<h3>python 3.14 is now supported!</h3>
<h3>Bug Fixes</h3>
<ul>
<li>do not require consumer of library to state nonsupport for py4 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/912">#912</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c">f608df9</a>)</li>
<li><strong>docs:</strong> Update dependencies for docs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/900">#900</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c">3f66784</a>)</li>
</ul>
<h2>testcontainers: v4.13.2</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/testcontainers/testcontainers-python/blob/main/CHANGELOG.md">testcontainers's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2">4.14.2</a>
(2026-03-18)</h2>
<h3>Features</h3>
<ul>
<li><strong>kafka:</strong> allow configurable listener name and
security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3">44dd40b</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1">4.14.1</a>
(2026-01-31)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Allow passing in a custom wait strategy string in MySQL, Cassandra,
Kafka and Trino (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/953">#953</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b">be4d09e</a>)</li>
<li><strong>compose:</strong> expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f">183e1aa</a>)</li>
<li><strong>core:</strong> bring back dind tests (<a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5">7337266</a>)</li>
<li><strong>core:</strong> Use WaitStrategy internally for wait_for
function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e">e323317</a>)</li>
<li><strong>nats:</strong> add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4">49c9af8</a>)</li>
<li>Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8">f690e88</a>),
closes <a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/860">#860</a></li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0">4.14.0</a>
(2026-01-07)</h2>
<h3>Features</h3>
<ul>
<li>Add ExecWaitStrategy and migrate Postgres from deprecated decorator
(<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/935">#935</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06">2d9eee3</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>add ruff to deps (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/919">#919</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d">5853d32</a>)</li>
<li><strong>cassandra,mysqk,kafka:</strong> Use wait strategy instead of
deprecated wait_for_logs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/945">#945</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9">b7791b9</a>)</li>
<li><strong>core:</strong> recreate poetry lockfile with latest versions
of libraries (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/946">#946</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03">9a97385</a>)</li>
<li><strong>elasticsearch:</strong> Use wait strategy instead of
deprecated decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/915">#915</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627">c785ecd</a>)</li>
<li><strong>minio:</strong> minio client requires kwargs now (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/933">#933</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62">37f5902</a>)</li>
<li><strong>minio:</strong> Use wait strategy instead of deprecated
decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/899">#899</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3">febccb7</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3">4.13.3</a>
(2025-11-14)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>do not require consumer of library to state nonsupport for py4 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/912">#912</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c">f608df9</a>)</li>
<li><strong>docs:</strong> Update dependencies for docs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/900">#900</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c">3f66784</a>)</li>
<li>support python 3.14!!! - (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/917">#917</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6">f76e982</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2">4.13.2</a>
(2025-10-07)</h2>
<h3>Bug Fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377"><code>5c67efb</code></a>
chore(main): release testcontainers 4.14.2 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/969">#969</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3"><code>44dd40b</code></a>
feat(kafka): allow configurable listener name and security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a"><code>a78475a</code></a>
chore(main): Migrate to uv (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/960">#960</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c"><code>17eb0b0</code></a>
chore(main): release testcontainers 4.14.1 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/954">#954</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8"><code>f690e88</code></a>
fix: Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a"><code>15e99ee</code></a>
add modifications</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5"><code>7337266</code></a>
fix(core): bring back dind tests</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4"><code>49c9af8</code></a>
fix(nats): add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e"><code>e323317</code></a>
fix(core): Use WaitStrategy internally for wait_for function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f"><code>183e1aa</code></a>
fix(compose): expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.8.2...testcontainers-v4.14.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `mypy` from 1.13.0 to 2.1.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/mypy/blob/master/CHANGELOG.md">mypy's
changelog</a>.</em></p>
<blockquote>
<h1>Mypy Release Notes</h1>
<h2>Next Release</h2>
<h2>Mypy 2.1</h2>
<p>We’ve just uploaded mypy 2.1.0 to the Python Package Index (<a
href="https://pypi.org/project/mypy/">PyPI</a>).
Mypy is a static type checker for Python. This release includes new
features, performance
improvements and bug fixes. You can install it as follows:</p>
<pre><code>python3 -m pip install -U mypy
</code></pre>
<p>You can read the full documentation for this release on <a
href="http://mypy.readthedocs.io">Read the Docs</a>.</p>
<h3>librt.vecs: Fast Growable Array Type for Mypyc</h3>
<p>The new <code>librt.vecs</code> module provides an efficient growable
array type <code>vec</code> that is
optimized for mypyc use. It provides fast, packed arrays with integer
and floating point
value types, which can be <strong>several times faster</strong> than
<code>list</code>, and tens of times faster
than <code>array.array</code> in code compiled using mypyc. It also
supports nested <code>vec</code> objects and
non-value-type items, such as <code>vec[vec[str]]</code>.</p>
<p>Refer to the <a
href="https://mypyc.readthedocs.io/en/latest/librt_vecs.html">documentation</a>
for
the details.</p>
<p>Contributed by Jukka Lehtosalo.</p>
<h3>librt.random: Fast Pseudo-Random Number Generation</h3>
<p>The new <code>librt.random</code> module provides fast pseudo-random
number generation that is
optimized for code compiled using mypyc. It can be 3x to 10x faster than
the stdlib
<code>random</code> module in compiled code.</p>
<p>Refer to the <a
href="https://mypyc.readthedocs.io/en/latest/librt_random.html">documentation</a>
for
the details.</p>
<p>Contributed by Jukka Lehtosalo (PR <a
href="https://redirect.github.com/python/mypy/pull/21433">21433</a>).</p>
<h3>Mypyc Improvements</h3>
<ul>
<li>Enable incremental self-compilation (Vaggelis Danias, PR <a
href="https://redirect.github.com/python/mypy/pull/21369">21369</a>)</li>
<li>Make compilation order with multiple files consistent (Piotr
Sawicki, PR <a
href="https://redirect.github.com/python/mypy/pull/21419">21419</a>)</li>
<li>Fix crash on accessing <code>StopAsyncIteration</code> (Piotr
Sawicki, PR <a
href="https://redirect.github.com/python/mypy/pull/21406">21406</a>)</li>
<li>Fix incremental compilation with <code>separate</code> flag
(Vaggelis Danias, PR <a
href="https://redirect.github.com/python/mypy/pull/21299">21299</a>)</li>
</ul>
<h3>Fixes to Crashes</h3>
<ul>
<li>Fix crash on partial type with <code>--allow-redefinition</code> and
<code>global</code> declaration (Jukka Lehtosalo, PR <a
href="https://redirect.github.com/python/mypy/pull/21428">21428</a>)</li>
<li>Fix broken awaitable generator patching (Ivan Levkivskyi, PR <a
href="https://redirect.github.com/python/mypy/pull/21435">21435</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234"><code>c1c336d</code></a>
Remove +dev from version</li>
<li><a
href="https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7"><code>74df14b</code></a>
Add changelog for mypy 2.1 (<a
href="https://redirect.github.com/python/mypy/issues/21464">#21464</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff"><code>022d9bc</code></a>
Revert &quot;TypeForm: Enable by default (<a
href="https://redirect.github.com/python/mypy/issues/21262">#21262</a>)&quot;</li>
<li><a
href="https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c"><code>8826288</code></a>
[mypyc] Document librt.random (<a
href="https://redirect.github.com/python/mypy/issues/21463">#21463</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96"><code>3f4067b</code></a>
Bump librt version to 0.11.0 (<a
href="https://redirect.github.com/python/mypy/issues/21458">#21458</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e"><code>2b1eb58</code></a>
[mypyc] Enable incremental self-compilation (<a
href="https://redirect.github.com/python/mypy/issues/21369">#21369</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc"><code>8152f4a</code></a>
Respect file config comments for stale modules (<a
href="https://redirect.github.com/python/mypy/issues/21444">#21444</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92"><code>116d60b</code></a>
Fix nondeterminism from nonassociativity of overload joins (<a
href="https://redirect.github.com/python/mypy/issues/21455">#21455</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210"><code>6c4af8e</code></a>
Fix function call message change for small number of args (<a
href="https://redirect.github.com/python/mypy/issues/21432">#21432</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800"><code>4b8fdca</code></a>
[mypyc] Add librt.random module (<a
href="https://redirect.github.com/python/mypy/issues/21433">#21433</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/python/mypy/compare/v1.13.0...v2.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.15.13 to 0.15.15
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<h2>Release Notes</h2>
<p>Released on 2026-05-28.</p>
<h3>Preview features</h3>
<ul>
<li>Fix Markdown closing fence handling (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li>
<li>[<code>pyflakes</code>] Report duplicate imports in
<code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pyflakes</code>] Treat function-scope bare annotations as
locals per PEP 526 (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li>
<li>Reduce memory usage by dropping token-excess capacity and improve
performance by approximating the initial tokens <code>Vec</code> size
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li>
<li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix <code>line-length</code> example for <code>--config</code>
option (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li>
<li>[<code>flake8-comprehensions</code>] Document
<code>RecursionError</code> edge case in <code>__len__</code>
(<code>C416</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li>
<li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li>
<li>[<code>pyupgrade</code>] Clarify fix safety docs
(<code>UP007</code>, <code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li>
<li>[<code>refurb</code>] Document <code>FURB192</code> exception change
for empty sequences (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li>
<li>[<code>ruff</code>] Document false negative for user-defined types
(<code>RUF013</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix formatting of lambdas nested within f-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Return code action for <code>codeAction/resolve</code> requests that
contain no or no valid URL (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/fallintoplace"><code>@​fallintoplace</code></a></li>
<li><a
href="https://github.com/martin-schlossarek"><code>@​martin-schlossarek</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<p>Released on 2026-05-28.</p>
<h3>Preview features</h3>
<ul>
<li>Fix Markdown closing fence handling (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li>
<li>[<code>pyflakes</code>] Report duplicate imports in
<code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pyflakes</code>] Treat function-scope bare annotations as
locals per PEP 526 (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li>
<li>Reduce memory usage by dropping token-excess capacity and improve
performance by approximating the initial tokens <code>Vec</code> size
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li>
<li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix <code>line-length</code> example for <code>--config</code>
option (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li>
<li>[<code>flake8-comprehensions</code>] Document
<code>RecursionError</code> edge case in <code>__len__</code>
(<code>C416</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li>
<li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li>
<li>[<code>pyupgrade</code>] Clarify fix safety docs
(<code>UP007</code>, <code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li>
<li>[<code>refurb</code>] Document <code>FURB192</code> exception change
for empty sequences (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li>
<li>[<code>ruff</code>] Document false negative for user-defined types
(<code>RUF013</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix formatting of lambdas nested within f-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Return code action for <code>codeAction/resolve</code> requests that
contain no or no valid URL (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/fallintoplace"><code>@​fallintoplace</code></a></li>
<li><a
href="https://github.com/martin-schlossarek"><code>@​martin-schlossarek</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
<li><a
href="https://github.com/Ruchir28"><code>@​Ruchir28</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/db5aa0a5f1b92cb91d910bf0866a967554dd94f5"><code>db5aa0a</code></a>
Bump 0.15.15 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25431">#25431</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/366fe21ba369ccdd01eb99c1043c9a969c99230b"><code>366fe21</code></a>
[ty] Improve diagnostics for syntax errors in forward annotations (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25158">#25158</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e2e1e647d182b8567845039c9a65fb0608a4dcfc"><code>e2e1e64</code></a>
[ty] Remove excess capacity from more Salsa cached collections (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25411">#25411</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/1bd77e1646f2213d86b8da215f08279187867d72"><code>1bd77e1</code></a>
[ty] Use diagnostic message as tie breaker when sorting (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25424">#25424</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/7e1bc1e75f15795f12c846294b13df4535f2abbf"><code>7e1bc1e</code></a>
Add agent skills for working on ty (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25422">#25422</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/574e10752f8cfa9e0cdbe3b01e96c4380950469b"><code>574e107</code></a>
Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25415">#25415</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/4a7ca062fccd80443a43aa61e5dc7e5858e88dc1"><code>4a7ca06</code></a>
[ty] Display docs for matching parameter when hovering over the name of
an ar...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/54327092dbfe455040690d63bb1e5e4b5f551239"><code>5432709</code></a>
Refine a few agents instructions (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25423">#25423</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/3cb09eba689ebb49e799131092121928cc789c18"><code>3cb09eb</code></a>
[ty] Support <code>typing.TypeForm</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25334">#25334</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/c8cd59f189f2b6f55d542b29bddb953622add6fc"><code>c8cd59f</code></a>
[ty] Infer class attributes assigned by metaclass initialization (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25342">#25342</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.15.13...0.15.15">compare
view</a></li>
</ul>
</details>
<br />

Updates `faker` from 25.8.0 to 40.21.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/joke2k/faker/releases">faker's
releases</a>.</em></p>
<blockquote>
<h2>Release v40.21.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.21.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.20.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.20.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.19.1</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.19.1/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.19.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.19.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.18.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.18.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.17.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.17.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.16.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.16.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.15.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.14.1</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.14.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.13.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.12.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.11.1</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.11.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.11.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.10.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.10.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.9.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.9.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.8.1</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.8.1/CHANGELOG.md">CHANGELOG.md</a>.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/joke2k/faker/blob/master/CHANGELOG.md">faker's
changelog</a>.</em></p>
<blockquote>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.20.0...v40.21.0">v40.21.0
- 2026-06-02</a></h3>
<ul>
<li>Add banks list for <code>en_GB</code> locale (<a
href="https://redirect.github.com/joke2k/faker/issues/2363">#2363</a>).
Thanks <a
href="https://github.com/osolomientsev"><code>@​osolomientsev</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.19.1...v40.20.0">v40.20.0
- 2026-06-01</a></h3>
<ul>
<li>Add <code>pan</code> and <code>gstin</code> generators to
<code>en_IN</code> SSN provider (<a
href="https://redirect.github.com/joke2k/faker/issues/2357">#2357</a>).
Thanks <a
href="https://github.com/RedZapdos123"><code>@​RedZapdos123</code></a>.</li>
<li>Improve barcode provider test coverage (<a
href="https://redirect.github.com/joke2k/faker/issues/2382">#2382</a>).
Thanks <a
href="https://github.com/lphuc2250gma"><code>@​lphuc2250gma</code></a>.</li>
<li>Bump liskin/gh-problem-matcher-wrap from 3 to 4 (<a
href="https://redirect.github.com/joke2k/faker/issues/2381">#2381</a>).
Thanks <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot].</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.19.0...v40.19.1">v40.19.1
- 2026-05-22</a></h3>
<ul>
<li>Fix shared state mutation in <code>en_IN</code>
<code>pincode_in_state</code> (<a
href="https://redirect.github.com/joke2k/faker/issues/2369">#2369</a>).
Thanks <a
href="https://github.com/RedZapdos123"><code>@​RedZapdos123</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.18.0...v40.19.0">v40.19.0
- 2026-05-22</a></h3>
<ul>
<li>Add <code>uuid1</code> and <code>uuid7</code> providers to
<code>misc</code> provider (<a
href="https://redirect.github.com/joke2k/faker/issues/2344">#2344</a>).
Thanks <a
href="https://github.com/Krishnachaitanyakc"><code>@​Krishnachaitanyakc</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.17.0...v40.18.0">v40.18.0
- 2026-05-14</a></h3>
<ul>
<li>Add automotive providers for <code>ar_DZ</code> and
<code>fr_DZ</code> locales. Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add <code>phone_number</code> provider for <code>ar_DZ</code> and
<code>fr_DZ</code> locales. Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.16.0...v40.17.0">v40.17.0
- 2026-05-14</a></h3>
<ul>
<li>Add <code>am_ET</code> <code>phone_number</code> provider for
Ethiopia. Thanks <a
href="https://github.com/jasur-py"><code>@​jasur-py</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.15.0...v40.16.0">v40.16.0
- 2026-05-14</a></h3>
<ul>
<li>Fix duplicate phone number prefix <code>145</code> in
<code>zh_CN</code> locale. Thanks <a
href="https://github.com/r266-tec"><code>@​r266-tec</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0">v40.15.0
- 2026-04-17</a></h3>
<ul>
<li>Add job providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2352">#2352</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add company providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2351">#2351</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add geo providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2350">#2350</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add currency providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2349">#2349</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add <code>date_time</code> provider for <code>ar_DZ</code> locale
(<a
href="https://redirect.github.com/joke2k/faker/issues/2348">#2348</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add ssn providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2347">#2347</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1">v40.14.1
- 2026-04-17</a></h3>
<ul>
<li>Fix <code>UnicodeEncodeError</code> in CLI docs on non-UTF consoles
(<a
href="https://redirect.github.com/joke2k/faker/issues/2362">#2362</a>).
Thanks <a
href="https://github.com/RedZapdos123"><code>@​RedZapdos123</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0">v40.14.0
- 2026-04-17</a></h3>
<ul>
<li>Fix: update placekitten URL to placekittens (<a
href="https://redirect.github.com/joke2k/faker/issues/2364">#2364</a>).
Thanks <a href="https://github.com/reory"><code>@​reory</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0">v40.13.0
- 2026-04-06</a></h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/joke2k/faker/commit/8b06111fbda82a8e84707f86f5d77973c76d836d"><code>8b06111</code></a>
Bump version: 40.20.0 → 40.21.0</li>
<li><a
href="https://github.com/joke2k/faker/commit/8ec76fb23dfbcecefe6b7ce4f27c47b224376923"><code>8ec76fb</code></a>
📝 Update CHANGELOG.md</li>
<li><a
href="https://github.com/joke2k/faker/commit/fbd8c03a5de255bf288a059dddf6c1f979dc4d8e"><code>fbd8c03</code></a>
add banks list for <code>en_GB</code> locale (<a
href="https://redirect.github.com/joke2k/faker/issues/2363">#2363</a>)</li>
<li><a
href="https://github.com/joke2k/faker/commit/3672645c6404514fd11834161eaec481985895f0"><code>3672645</code></a>
Bump version: 40.19.1 → 40.20.0</li>
<li><a
href="https://github.com/joke2k/faker/commit/b369e13f58c9fe975023cb47e61b309f5d7b8801"><code>b369e13</code></a>
📝 Update CHANGELOG.md</li>
<li><a
href="https://github.com/joke2k/faker/commit/7ec6acd1eabe3f98446cf2f81ec424de95d993b6"><code>7ec6acd</code></a>
chore: improve faker maintenance path (<a
href="https://redirect.github.com/joke2k/faker/issues/2382">#2382</a>)</li>
<li><a
href="https://github.com/joke2k/faker/commit/0535f124612375e1faf04bb64eb9b68ae48bf536"><code>0535f12</code></a>
Bump liskin/gh-problem-matcher-wrap from 3 to 4 (<a
href="https://redirect.github.com/joke2k/faker/issues/2381">#2381</a>)</li>
<li><a
href="https://github.com/joke2k/faker/commit/0bed3fc8b060709bad596532e4c35fef3dd483c1"><code>0bed3fc</code></a>
Add <code>pan</code> and <code>gstin</code> generators to
<code>en_IN</code> SSN provider (<a
href="https://redirect.github.com/joke2k/faker/issues/2357">#2357</a>)</li>
<li><a
href="https://github.com/joke2k/faker/commit/3e9b7b0f47fbea4b2ebf8d33678da653d5a7ed74"><code>3e9b7b0</code></a>
Bump version: 40.19.0 → 40.19.1</li>
<li><a
href="https://github.com/joke2k/faker/commit/fea051597658968d2f096a2af16a67afcd6b6bd5"><code>fea0515</code></a>
📝 Update CHANGELOG.md</li>
<li>Additional commits viewable in <a
href="https://github.com/joke2k/faker/compare/v25.8.0...v40.21.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `greenlet` from 3.1.1 to 3.5.1
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>3.5.1 (2026-05-20)</h1>
<ul>
<li>Add preliminary support for Python 3.15b1. This has not been
reviewed by CPython core developers, but all tests pass. Binary
wheels of this version won't work on earlier Python 3.15 builds and
may not work on later 3.15 builds.</li>
<li>Fix the discrepancy in the way the two <code>getcurrent</code> APIs
behave
during greenlet teardown. One API (the C API used by, e.g., gevent)
raised a
<code>RuntimeError</code>; the other (the Python
<code>greenlet.getcurrent</code> API)
returned <code>None</code>. This second way is incompatible with
greenlet's type
annotations, so <code>greenlet.getcurrent</code> now raises a
<code>RuntimeError</code> as well.</li>
</ul>
<h1>3.5.0 (2026-04-27)</h1>
<ul>
<li>
<p>Remove the <code>atexit</code> callback. This callback caused
greenlet APIs
to become unavailable far too soon during interpreter shutdown. Now
they remain available while all <code>atexit</code> callbacks run.
Sometime
after <code>Py_IsFinalizing</code> becomes true, they may begin
misbehaving.
Because the order in which C extensions are finalized is undefined,
C extensions that are sensitive to this need to check the results of
that function before invoking greenlet APIs. As a convenience,
<code>PyGreenlet_GetCurrent</code> sets an exception and returns
<code>NULL</code>
when this happens (and <code>greenlet.getcurrent</code> begins returning
<code>None</code>); other greenlet C API functions have undefined
behaviour.
Methods invoked directly on pre-existing <code>greenlet.greenlet</code>
objects will continue to function at least until the greenlet C
extension has been garbage collected and finalized.</p>
<p>See <code>PR 508
&lt;https://github.com/python-greenlet/greenlet/pull/508&gt;</code>_.</p>
</li>
</ul>
<h1>3.4.0 (2026-04-08)</h1>
<ul>
<li>
<p>Publish binary wheels for RiscV 64.</p>
</li>
<li>
<p>Fix multiple rare crash paths during interpreter shutdown.</p>
<p>Note that this now relies on the <code>atexit</code> module, and
introduces
subtle API changes during interpreter shutdown (for example,
<code>getcurrent</code> is no longer available once the
<code>atexit</code> callback fires).</p>
<p>See <code>PR
[#499](https://github.com/python-greenlet/greenlet/issues/499)
&lt;https://github.com/python-greenlet/greenlet/pull/499&gt;</code>_ by
Nicolas
Bouvrette.</p>
</li>
<li>
<p>Address the results of an automated code audit performed by
Daniel Diniz. This includes several minor correctness changes that</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/b5e5fc43a51c27ecffa1b1c7107c91464a6b26e2"><code>b5e5fc4</code></a>
Preparing release 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c8e177413d34bc36ed56d2c185c232ab0538be90"><code>c8e1774</code></a>
Tweak wording in CHANGES about greenlet.getcurrent.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/7fb10c570f37b3eb4c8909c6164fdfac3269ddb6"><code>7fb10c5</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/510">#510</a>
from python-greenlet/315</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/9718ce5a23ea3360232b78a806a837d6c3d6183d"><code>9718ce5</code></a>
Add Py 3.15; make both API versions of getcurrent() consistent in
raising Run...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/276e08afc4ddba87e4366390e3eeaecd61ccb3b8"><code>276e08a</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/509">#509</a>
from python-greenlet/dependabot/github_actions/github...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/32b0ad69828eb69d879c70dbee948e685268901b"><code>32b0ad6</code></a>
Bump pypa/gh-action-pypi-publish in the github-actions group</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/173b692dc84288ef41572612ac744754f98eaa90"><code>173b692</code></a>
Back to development: 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c7acc72000572811d6462ebe01733a974f194990"><code>c7acc72</code></a>
Preparing release 3.5.0</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/d08f99bf40801c5d57af6e13631c0ba68300ecf7"><code>d08f99b</code></a>
CHANGES: Update link from <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/507">#507</a>
to more full description in <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/fd3391e33cedc7a17a86059f18dfbec2b3a320bd"><code>fd3391e</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>
from python-greenlet/issue507-remove-atexit</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/3.1.1...3.5.1">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Onegaishimas pushed a commit to Onegaishimas/wasat that referenced this pull request Jun 4, 2026
…ith 7 updates (#515)

Updates the requirements on
[pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio),
[pytest-timeout](https://github.com/pytest-dev/pytest-timeout),
[testcontainers](https://github.com/testcontainers/testcontainers-python),
[mypy](https://github.com/python/mypy),
[ruff](https://github.com/astral-sh/ruff),
[greenlet](https://github.com/python-greenlet/greenlet) and
[faker](https://github.com/joke2k/faker) to permit the latest version.
Updates `pytest-asyncio` to 1.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's
releases</a>.</em></p>
<blockquote>
<h2>pytest-asyncio v1.4.0</h2>
<h1><a
href="https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0">1.4.0</a>
- 2026-05-26</h1>
<h2>Deprecated</h2>
<ul>
<li>Overriding the <em>event_loop_policy</em> fixture is deprecated. Use
the <code>pytest_asyncio_loop_factories</code> hook instead. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419">#1419</a>)</li>
</ul>
<h2>Added</h2>
<ul>
<li>
<p>Added the <code>pytest_asyncio_loop_factories</code> hook to
parametrize asyncio tests with custom event loop factories.</p>
<p>The hook returns a mapping of factory names to loop factories, and
<code>pytest.mark.asyncio(loop_factories=[...])</code> selects a subset
of configured factories per test. When a single factory is configured,
test names are unchanged.</p>
<p>Synchronous <code>@pytest_asyncio.fixture</code> functions now see
the correct event loop when custom loop factories are configured, even
when test code disrupts the current event loop (e.g., via
<code>asyncio.run()</code> or
<code>asyncio.set_event_loop(None)</code>). (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164">#1164</a>)</p>
</li>
</ul>
<h2>Changed</h2>
<ul>
<li>Improved the readability of the warning message that is displayed
when <code>asyncio_default_fixture_loop_scope</code> is unset (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298">#1298</a>)</li>
<li>Only import <code>asyncio.AbstractEventLoopPolicy</code> for type
checking to avoid raising
a DeprecationWarning. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394">#1394</a>)</li>
<li>Updated minimum supported pytest version to v8.4.0. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1397">#1397</a>)</li>
</ul>
<h2>Fixed</h2>
<ul>
<li>Fixed a <code>ResourceWarning: unclosed event loop</code> warning
that could occur when a synchronous test called
<code>asyncio.run()</code> or otherwise unset the current event loop
after pytest-asyncio had run an async test or fixture. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/724">#724</a>)</li>
</ul>
<h2>Notes for Downstream Packagers</h2>
<ul>
<li>Added dependency on <code>sphinx-tabs &gt;= 3.5</code> to organize
documentation examples into tabs. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1395">#1395</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/6e14cd2af9292dca1fa2b027a06bbc40b0e0e425"><code>6e14cd2</code></a>
chore: Prepare release of v1.4.0.</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/4b900fb5d0c30949c574e55dd904ee179f858a5e"><code>4b900fb</code></a>
Build(deps): Bump codecov/codecov-action from 6.0.0 to 6.0.1</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/ab9f63245094865c42c940a34af724b0dec1debf"><code>ab9f632</code></a>
Build(deps): Bump zipp from 3.23.1 to 4.1.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/a56fc77ecd59f781d8471b0f6a82bf58e08c95fa"><code>a56fc77</code></a>
Build(deps): Bump hypothesis from 6.152.6 to 6.152.8</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/e8bae9bc1f197731fc1a210c0da557af7b698e6d"><code>e8bae9b</code></a>
Build(deps): Bump requests from 2.34.0 to 2.34.2</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/fc433402c570fd36a7a227ef4bc3abd4579299de"><code>fc43340</code></a>
Build(deps): Bump idna from 3.14 to 3.15</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/762eaf5033b798b965c92afdbb2cebefa8fc3a8b"><code>762eaf5</code></a>
Build(deps): Bump jaraco-functools from 4.4.0 to 4.5.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/b62e2228c80070977baf6b77ba89d5c148af920f"><code>b62e222</code></a>
Build(deps): Bump click from 8.3.3 to 8.4.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/919044700627889d25ca63b6e7a3bc785f3137eb"><code>9190447</code></a>
Build(deps): Bump pydantic from 2.13.3 to 2.13.4</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/82a393c5e31b6ebbbd8ec2a8dafc5f35b9cf1236"><code>82a393c</code></a>
ci: Remove unnecessary debug output.</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest-asyncio/compare/v0.25.0...v1.4.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `pytest-timeout` from 2.3.1 to 2.4.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest-timeout/commit/ddabc934535081a5bf9ba7c9ca5b494aeaf8f665"><code>ddabc93</code></a>
Add python 3.13</li>
<li><a
href="https://github.com/pytest-dev/pytest-timeout/commit/617b1b6f0ab74517b92a4966b6db9e509d987972"><code>617b1b6</code></a>
Prepare release</li>
<li><a
href="https://github.com/pytest-dev/pytest-timeout/commit/2e96621ee1b61057438c0f8c5b158eddc31654c5"><code>2e96621</code></a>
Change error message to clearly relate it to pytest-timeout (<a
href="https://redirect.github.com/pytest-dev/pytest-timeout/issues/180">#180</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-timeout/commit/733b26b5d3b6f1c86876339f336cd827dc7d1a0c"><code>733b26b</code></a>
Update changelog</li>
<li><a
href="https://github.com/pytest-dev/pytest-timeout/commit/fa5fd451afa3e7e676c7a31a9e7b058dabf0988b"><code>fa5fd45</code></a>
Add support sys.monitoring</li>
<li><a
href="https://github.com/pytest-dev/pytest-timeout/commit/3d41ba8042ab1d07613572d95853dcc1c3602880"><code>3d41ba8</code></a>
Update README.rst with pytest-xdist 3.0.2 news</li>
<li><a
href="https://github.com/pytest-dev/pytest-timeout/commit/935f51cf0931dbbee8162e89b53289f1f43df499"><code>935f51c</code></a>
Add missing Python 3.12 trove classifier</li>
<li>See full diff in <a
href="https://github.com/pytest-dev/pytest-timeout/compare/2.3.1...2.4.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `testcontainers` from 4.8.2 to 4.14.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/testcontainers/testcontainers-python/releases">testcontainers's
releases</a>.</em></p>
<blockquote>
<h2>testcontainers: v4.14.2</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2">4.14.2</a>
(2026-03-18)</h2>
<h3>Features</h3>
<ul>
<li><strong>kafka:</strong> allow configurable listener name and
security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3">44dd40b</a>)</li>
</ul>
<h2>testcontainers: v4.14.1</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1">4.14.1</a>
(2026-01-31)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Allow passing in a custom wait strategy string in MySQL, Cassandra,
Kafka and Trino (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/953">#953</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b">be4d09e</a>)</li>
<li><strong>compose:</strong> expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f">183e1aa</a>)</li>
<li><strong>core:</strong> bring back dind tests (<a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5">7337266</a>)</li>
<li><strong>core:</strong> Use WaitStrategy internally for wait_for
function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e">e323317</a>)</li>
<li><strong>nats:</strong> add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4">49c9af8</a>)</li>
<li>Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8">f690e88</a>),
closes <a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/860">#860</a></li>
</ul>
<h2>testcontainers: v4.14.0</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0">4.14.0</a>
(2026-01-07)</h2>
<h3>Features</h3>
<ul>
<li>Add ExecWaitStrategy and migrate Postgres from deprecated decorator
(<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/935">#935</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06">2d9eee3</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>add ruff to deps (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/919">#919</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d">5853d32</a>)</li>
<li><strong>cassandra,mysqk,kafka:</strong> Use wait strategy instead of
deprecated wait_for_logs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/945">#945</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9">b7791b9</a>)</li>
<li><strong>core:</strong> recreate poetry lockfile with latest versions
of libraries (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/946">#946</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03">9a97385</a>)</li>
<li><strong>elasticsearch:</strong> Use wait strategy instead of
deprecated decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/915">#915</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627">c785ecd</a>)</li>
<li><strong>minio:</strong> minio client requires kwargs now (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/933">#933</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62">37f5902</a>)</li>
<li><strong>minio:</strong> Use wait strategy instead of deprecated
decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/899">#899</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3">febccb7</a>)</li>
</ul>
<h2>testcontainers: v4.13.3</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3">4.13.3</a>
(2025-11-14)</h2>
<h3>python 3.14 is now supported!</h3>
<h3>Bug Fixes</h3>
<ul>
<li>do not require consumer of library to state nonsupport for py4 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/912">#912</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c">f608df9</a>)</li>
<li><strong>docs:</strong> Update dependencies for docs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/900">#900</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c">3f66784</a>)</li>
</ul>
<h2>testcontainers: v4.13.2</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/testcontainers/testcontainers-python/blob/main/CHANGELOG.md">testcontainers's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2">4.14.2</a>
(2026-03-18)</h2>
<h3>Features</h3>
<ul>
<li><strong>kafka:</strong> allow configurable listener name and
security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3">44dd40b</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1">4.14.1</a>
(2026-01-31)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Allow passing in a custom wait strategy string in MySQL, Cassandra,
Kafka and Trino (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/953">#953</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b">be4d09e</a>)</li>
<li><strong>compose:</strong> expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f">183e1aa</a>)</li>
<li><strong>core:</strong> bring back dind tests (<a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5">7337266</a>)</li>
<li><strong>core:</strong> Use WaitStrategy internally for wait_for
function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e">e323317</a>)</li>
<li><strong>nats:</strong> add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4">49c9af8</a>)</li>
<li>Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8">f690e88</a>),
closes <a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/860">#860</a></li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0">4.14.0</a>
(2026-01-07)</h2>
<h3>Features</h3>
<ul>
<li>Add ExecWaitStrategy and migrate Postgres from deprecated decorator
(<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/935">#935</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06">2d9eee3</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>add ruff to deps (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/919">#919</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d">5853d32</a>)</li>
<li><strong>cassandra,mysqk,kafka:</strong> Use wait strategy instead of
deprecated wait_for_logs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/945">#945</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9">b7791b9</a>)</li>
<li><strong>core:</strong> recreate poetry lockfile with latest versions
of libraries (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/946">#946</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03">9a97385</a>)</li>
<li><strong>elasticsearch:</strong> Use wait strategy instead of
deprecated decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/915">#915</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627">c785ecd</a>)</li>
<li><strong>minio:</strong> minio client requires kwargs now (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/933">#933</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62">37f5902</a>)</li>
<li><strong>minio:</strong> Use wait strategy instead of deprecated
decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/899">#899</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3">febccb7</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3">4.13.3</a>
(2025-11-14)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>do not require consumer of library to state nonsupport for py4 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/912">#912</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c">f608df9</a>)</li>
<li><strong>docs:</strong> Update dependencies for docs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/900">#900</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c">3f66784</a>)</li>
<li>support python 3.14!!! - (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/917">#917</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6">f76e982</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2">4.13.2</a>
(2025-10-07)</h2>
<h3>Bug Fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377"><code>5c67efb</code></a>
chore(main): release testcontainers 4.14.2 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/969">#969</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3"><code>44dd40b</code></a>
feat(kafka): allow configurable listener name and security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a"><code>a78475a</code></a>
chore(main): Migrate to uv (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/960">#960</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c"><code>17eb0b0</code></a>
chore(main): release testcontainers 4.14.1 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/954">#954</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8"><code>f690e88</code></a>
fix: Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a"><code>15e99ee</code></a>
add modifications</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5"><code>7337266</code></a>
fix(core): bring back dind tests</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4"><code>49c9af8</code></a>
fix(nats): add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e"><code>e323317</code></a>
fix(core): Use WaitStrategy internally for wait_for function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f"><code>183e1aa</code></a>
fix(compose): expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.8.2...testcontainers-v4.14.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `mypy` from 1.13.0 to 2.1.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/mypy/blob/master/CHANGELOG.md">mypy's
changelog</a>.</em></p>
<blockquote>
<h1>Mypy Release Notes</h1>
<h2>Next Release</h2>
<h2>Mypy 2.1</h2>
<p>We’ve just uploaded mypy 2.1.0 to the Python Package Index (<a
href="https://pypi.org/project/mypy/">PyPI</a>).
Mypy is a static type checker for Python. This release includes new
features, performance
improvements and bug fixes. You can install it as follows:</p>
<pre><code>python3 -m pip install -U mypy
</code></pre>
<p>You can read the full documentation for this release on <a
href="http://mypy.readthedocs.io">Read the Docs</a>.</p>
<h3>librt.vecs: Fast Growable Array Type for Mypyc</h3>
<p>The new <code>librt.vecs</code> module provides an efficient growable
array type <code>vec</code> that is
optimized for mypyc use. It provides fast, packed arrays with integer
and floating point
value types, which can be <strong>several times faster</strong> than
<code>list</code>, and tens of times faster
than <code>array.array</code> in code compiled using mypyc. It also
supports nested <code>vec</code> objects and
non-value-type items, such as <code>vec[vec[str]]</code>.</p>
<p>Refer to the <a
href="https://mypyc.readthedocs.io/en/latest/librt_vecs.html">documentation</a>
for
the details.</p>
<p>Contributed by Jukka Lehtosalo.</p>
<h3>librt.random: Fast Pseudo-Random Number Generation</h3>
<p>The new <code>librt.random</code> module provides fast pseudo-random
number generation that is
optimized for code compiled using mypyc. It can be 3x to 10x faster than
the stdlib
<code>random</code> module in compiled code.</p>
<p>Refer to the <a
href="https://mypyc.readthedocs.io/en/latest/librt_random.html">documentation</a>
for
the details.</p>
<p>Contributed by Jukka Lehtosalo (PR <a
href="https://redirect.github.com/python/mypy/pull/21433">21433</a>).</p>
<h3>Mypyc Improvements</h3>
<ul>
<li>Enable incremental self-compilation (Vaggelis Danias, PR <a
href="https://redirect.github.com/python/mypy/pull/21369">21369</a>)</li>
<li>Make compilation order with multiple files consistent (Piotr
Sawicki, PR <a
href="https://redirect.github.com/python/mypy/pull/21419">21419</a>)</li>
<li>Fix crash on accessing <code>StopAsyncIteration</code> (Piotr
Sawicki, PR <a
href="https://redirect.github.com/python/mypy/pull/21406">21406</a>)</li>
<li>Fix incremental compilation with <code>separate</code> flag
(Vaggelis Danias, PR <a
href="https://redirect.github.com/python/mypy/pull/21299">21299</a>)</li>
</ul>
<h3>Fixes to Crashes</h3>
<ul>
<li>Fix crash on partial type with <code>--allow-redefinition</code> and
<code>global</code> declaration (Jukka Lehtosalo, PR <a
href="https://redirect.github.com/python/mypy/pull/21428">21428</a>)</li>
<li>Fix broken awaitable generator patching (Ivan Levkivskyi, PR <a
href="https://redirect.github.com/python/mypy/pull/21435">21435</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234"><code>c1c336d</code></a>
Remove +dev from version</li>
<li><a
href="https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7"><code>74df14b</code></a>
Add changelog for mypy 2.1 (<a
href="https://redirect.github.com/python/mypy/issues/21464">#21464</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff"><code>022d9bc</code></a>
Revert &quot;TypeForm: Enable by default (<a
href="https://redirect.github.com/python/mypy/issues/21262">#21262</a>)&quot;</li>
<li><a
href="https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c"><code>8826288</code></a>
[mypyc] Document librt.random (<a
href="https://redirect.github.com/python/mypy/issues/21463">#21463</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96"><code>3f4067b</code></a>
Bump librt version to 0.11.0 (<a
href="https://redirect.github.com/python/mypy/issues/21458">#21458</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e"><code>2b1eb58</code></a>
[mypyc] Enable incremental self-compilation (<a
href="https://redirect.github.com/python/mypy/issues/21369">#21369</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc"><code>8152f4a</code></a>
Respect file config comments for stale modules (<a
href="https://redirect.github.com/python/mypy/issues/21444">#21444</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92"><code>116d60b</code></a>
Fix nondeterminism from nonassociativity of overload joins (<a
href="https://redirect.github.com/python/mypy/issues/21455">#21455</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210"><code>6c4af8e</code></a>
Fix function call message change for small number of args (<a
href="https://redirect.github.com/python/mypy/issues/21432">#21432</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800"><code>4b8fdca</code></a>
[mypyc] Add librt.random module (<a
href="https://redirect.github.com/python/mypy/issues/21433">#21433</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/python/mypy/compare/v1.13.0...v2.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.8.0 to 0.15.15
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<h2>Release Notes</h2>
<p>Released on 2026-05-28.</p>
<h3>Preview features</h3>
<ul>
<li>Fix Markdown closing fence handling (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li>
<li>[<code>pyflakes</code>] Report duplicate imports in
<code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pyflakes</code>] Treat function-scope bare annotations as
locals per PEP 526 (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li>
<li>Reduce memory usage by dropping token-excess capacity and improve
performance by approximating the initial tokens <code>Vec</code> size
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li>
<li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix <code>line-length</code> example for <code>--config</code>
option (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li>
<li>[<code>flake8-comprehensions</code>] Document
<code>RecursionError</code> edge case in <code>__len__</code>
(<code>C416</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li>
<li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li>
<li>[<code>pyupgrade</code>] Clarify fix safety docs
(<code>UP007</code>, <code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li>
<li>[<code>refurb</code>] Document <code>FURB192</code> exception change
for empty sequences (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li>
<li>[<code>ruff</code>] Document false negative for user-defined types
(<code>RUF013</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix formatting of lambdas nested within f-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Return code action for <code>codeAction/resolve</code> requests that
contain no or no valid URL (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/fallintoplace"><code>@​fallintoplace</code></a></li>
<li><a
href="https://github.com/martin-schlossarek"><code>@​martin-schlossarek</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<p>Released on 2026-05-28.</p>
<h3>Preview features</h3>
<ul>
<li>Fix Markdown closing fence handling (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li>
<li>[<code>pyflakes</code>] Report duplicate imports in
<code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pyflakes</code>] Treat function-scope bare annotations as
locals per PEP 526 (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li>
<li>Reduce memory usage by dropping token-excess capacity and improve
performance by approximating the initial tokens <code>Vec</code> size
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li>
<li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix <code>line-length</code> example for <code>--config</code>
option (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li>
<li>[<code>flake8-comprehensions</code>] Document
<code>RecursionError</code> edge case in <code>__len__</code>
(<code>C416</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li>
<li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li>
<li>[<code>pyupgrade</code>] Clarify fix safety docs
(<code>UP007</code>, <code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li>
<li>[<code>refurb</code>] Document <code>FURB192</code> exception change
for empty sequences (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li>
<li>[<code>ruff</code>] Document false negative for user-defined types
(<code>RUF013</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix formatting of lambdas nested within f-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Return code action for <code>codeAction/resolve</code> requests that
contain no or no valid URL (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/fallintoplace"><code>@​fallintoplace</code></a></li>
<li><a
href="https://github.com/martin-schlossarek"><code>@​martin-schlossarek</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
<li><a
href="https://github.com/Ruchir28"><code>@​Ruchir28</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/db5aa0a5f1b92cb91d910bf0866a967554dd94f5"><code>db5aa0a</code></a>
Bump 0.15.15 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25431">#25431</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/366fe21ba369ccdd01eb99c1043c9a969c99230b"><code>366fe21</code></a>
[ty] Improve diagnostics for syntax errors in forward annotations (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25158">#25158</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e2e1e647d182b8567845039c9a65fb0608a4dcfc"><code>e2e1e64</code></a>
[ty] Remove excess capacity from more Salsa cached collections (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25411">#25411</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/1bd77e1646f2213d86b8da215f08279187867d72"><code>1bd77e1</code></a>
[ty] Use diagnostic message as tie breaker when sorting (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25424">#25424</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/7e1bc1e75f15795f12c846294b13df4535f2abbf"><code>7e1bc1e</code></a>
Add agent skills for working on ty (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25422">#25422</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/574e10752f8cfa9e0cdbe3b01e96c4380950469b"><code>574e107</code></a>
Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25415">#25415</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/4a7ca062fccd80443a43aa61e5dc7e5858e88dc1"><code>4a7ca06</code></a>
[ty] Display docs for matching parameter when hovering over the name of
an ar...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/54327092dbfe455040690d63bb1e5e4b5f551239"><code>5432709</code></a>
Refine a few agents instructions (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25423">#25423</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/3cb09eba689ebb49e799131092121928cc789c18"><code>3cb09eb</code></a>
[ty] Support <code>typing.TypeForm</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25334">#25334</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/c8cd59f189f2b6f55d542b29bddb953622add6fc"><code>c8cd59f</code></a>
[ty] Infer class attributes assigned by metaclass initialization (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25342">#25342</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.8.0...0.15.15">compare
view</a></li>
</ul>
</details>
<br />

Updates `greenlet` from 3.1.1 to 3.5.1
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>3.5.1 (2026-05-20)</h1>
<ul>
<li>Add preliminary support for Python 3.15b1. This has not been
reviewed by CPython core developers, but all tests pass. Binary
wheels of this version won't work on earlier Python 3.15 builds and
may not work on later 3.15 builds.</li>
<li>Fix the discrepancy in the way the two <code>getcurrent</code> APIs
behave
during greenlet teardown. One API (the C API used by, e.g., gevent)
raised a
<code>RuntimeError</code>; the other (the Python
<code>greenlet.getcurrent</code> API)
returned <code>None</code>. This second way is incompatible with
greenlet's type
annotations, so <code>greenlet.getcurrent</code> now raises a
<code>RuntimeError</code> as well.</li>
</ul>
<h1>3.5.0 (2026-04-27)</h1>
<ul>
<li>
<p>Remove the <code>atexit</code> callback. This callback caused
greenlet APIs
to become unavailable far too soon during interpreter shutdown. Now
they remain available while all <code>atexit</code> callbacks run.
Sometime
after <code>Py_IsFinalizing</code> becomes true, they may begin
misbehaving.
Because the order in which C extensions are finalized is undefined,
C extensions that are sensitive to this need to check the results of
that function before invoking greenlet APIs. As a convenience,
<code>PyGreenlet_GetCurrent</code> sets an exception and returns
<code>NULL</code>
when this happens (and <code>greenlet.getcurrent</code> begins returning
<code>None</code>); other greenlet C API functions have undefined
behaviour.
Methods invoked directly on pre-existing <code>greenlet.greenlet</code>
objects will continue to function at least until the greenlet C
extension has been garbage collected and finalized.</p>
<p>See <code>PR 508
&lt;https://github.com/python-greenlet/greenlet/pull/508&gt;</code>_.</p>
</li>
</ul>
<h1>3.4.0 (2026-04-08)</h1>
<ul>
<li>
<p>Publish binary wheels for RiscV 64.</p>
</li>
<li>
<p>Fix multiple rare crash paths during interpreter shutdown.</p>
<p>Note that this now relies on the <code>atexit</code> module, and
introduces
subtle API changes during interpreter shutdown (for example,
<code>getcurrent</code> is no longer available once the
<code>atexit</code> callback fires).</p>
<p>See <code>PR
[#499](https://github.com/python-greenlet/greenlet/issues/499)
&lt;https://github.com/python-greenlet/greenlet/pull/499&gt;</code>_ by
Nicolas
Bouvrette.</p>
</li>
<li>
<p>Address the results of an automated code audit performed by
Daniel Diniz. This includes several minor correctness changes that</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/b5e5fc43a51c27ecffa1b1c7107c91464a6b26e2"><code>b5e5fc4</code></a>
Preparing release 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c8e177413d34bc36ed56d2c185c232ab0538be90"><code>c8e1774</code></a>
Tweak wording in CHANGES about greenlet.getcurrent.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/7fb10c570f37b3eb4c8909c6164fdfac3269ddb6"><code>7fb10c5</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/510">#510</a>
from python-greenlet/315</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/9718ce5a23ea3360232b78a806a837d6c3d6183d"><code>9718ce5</code></a>
Add Py 3.15; make both API versions of getcurrent() consistent in
raising Run...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/276e08afc4ddba87e4366390e3eeaecd61ccb3b8"><code>276e08a</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/509">#509</a>
from python-greenlet/dependabot/github_actions/github...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/32b0ad69828eb69d879c70dbee948e685268901b"><code>32b0ad6</code></a>
Bump pypa/gh-action-pypi-publish in the github-actions group</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/173b692dc84288ef41572612ac744754f98eaa90"><code>173b692</code></a>
Back to development: 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c7acc72000572811d6462ebe01733a974f194990"><code>c7acc72</code></a>
Preparing release 3.5.0</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/d08f99bf40801c5d57af6e13631c0ba68300ecf7"><code>d08f99b</code></a>
CHANGES: Update link from <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/507">#507</a>
to more full description in <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/fd3391e33cedc7a17a86059f18dfbec2b3a320bd"><code>fd3391e</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>
from python-greenlet/issue507-remove-atexit</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/3.1.1...3.5.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `faker` from 25.8.0 to 40.21.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/joke2k/faker/releases">faker's
releases</a>.</em></p>
<blockquote>
<h2>Release v40.21.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.21.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.20.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.20.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.19.1</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.19.1/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.19.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.19.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.18.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.18.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.17.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.17.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.16.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.16.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.15.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.14.1</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.14.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.13.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.12.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.11.1</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.11.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.11.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.10.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.10.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.9.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.9.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.8.1</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.8.1/CHANGELOG.md">CHANGELOG.md</a>.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/joke2k/faker/blob/master/CHANGELOG.md">faker's
changelog</a>.</em></p>
<blockquote>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.20.0...v40.21.0">v40.21.0
- 2026-06-02</a></h3>
<ul>
<li>Add banks list for <code>en_GB</code> locale (<a
href="https://redirect.github.com/joke2k/faker/issues/2363">#2363</a>).
Thanks <a
href="https://github.com/osolomientsev"><code>@​osolomientsev</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.19.1...v40.20.0">v40.20.0
- 2026-06-01</a></h3>
<ul>
<li>Add <code>pan</code> and <code>gstin</code> generators to
<code>en_IN</code> SSN provider (<a
href="https://redirect.github.com/joke2k/faker/issues/2357">#2357</a>).
Thanks <a
href="https://github.com/RedZapdos123"><code>@​RedZapdos123</code></a>.</li>
<li>Improve barcode provider test coverage (<a
href="https://redirect.github.com/joke2k/faker/issues/2382">#2382</a>).
Thanks <a
href="https://github.com/lphuc2250gma"><code>@​lphuc2250gma</code></a>.</li>
<li>Bump liskin/gh-problem-matcher-wrap from 3 to 4 (<a
href="https://redirect.github.com/joke2k/faker/issues/2381">#2381</a>).
Thanks <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot].</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.19.0...v40.19.1">v40.19.1
- 2026-05-22</a></h3>
<ul>
<li>Fix shared state mutation in <code>en_IN</code>
<code>pincode_in_state</code> (<a
href="https://redirect.github.com/joke2k/faker/issues/2369">#2369</a>).
Thanks <a
href="https://github.com/RedZapdos123"><code>@​RedZapdos123</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.18.0...v40.19.0">v40.19.0
- 2026-05-22</a></h3>
<ul>
<li>Add <code>uuid1</code> and <code>uuid7</code> providers to
<code>misc</code> provider (<a
href="https://redirect.github.com/joke2k/faker/issues/2344">#2344</a>).
Thanks <a
href="https://github.com/Krishnachaitanyakc"><code>@​Krishnachaitanyakc</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.17.0...v40.18.0">v40.18.0
- 2026-05-14</a></h3>
<ul>
<li>Add automotive providers for <code>ar_DZ</code> and
<code>fr_DZ</code> locales. Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add <code>phone_number</code> provider for <code>ar_DZ</code> and
<code>fr_DZ</code> locales. Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.16.0...v40.17.0">v40.17.0
- 2026-05-14</a></h3>
<ul>
<li>Add <code>am_ET</code> <code>phone_number</code> provider for
Ethiopia. Thanks <a
href="https://github.com/jasur-py"><code>@​jasur-py</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.15.0...v40.16.0">v40.16.0
- 2026-05-14</a></h3>
<ul>
<li>Fix duplicate phone number prefix <code>145</code> in
<code>zh_CN</code> locale. Thanks <a
href="https://github.com/r266-tec"><code>@​r266-tec</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0">v40.15.0
- 2026-04-17</a></h3>
<ul>
<li>Add job providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2352">#2352</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add company providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2351">#2351</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add geo providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2350">#2350</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add currency providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2349">#2349</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add <code>date_time</code> provider for <code>ar_DZ</code> locale
(<a
href="https://redirect.github.com/joke2k/faker/issues/2348">#2348</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add ssn providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2347">#2347</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1">v40.14.1
- 2026-04-17</a></h3>
<ul>
<li>Fix <code>UnicodeEncodeError</code> in CLI docs on non-UTF consoles
(<a
href="https://redirect.github.com/joke2k/faker/issues/2362">#2362</a>).
Thanks <a
href="https://github.com/RedZapdos123"><code>@​RedZapdos123</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0">v40.14.0
- 2026-04-17</a></h3>
<ul>
<li>Fix: update placekitten URL to placekittens (<a
href="https://redirect.github.com/joke2k/faker/issues/2364">#2364</a>).
Thanks <a href="https://github.com/reory"><code>@​reory</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0">v40.13.0
- 2026-04-06</a></h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/joke2k/faker/commit/8b06111fbda82a8e84707f86f5d77973c76d836d"><code>8b06111</code></a>
Bump version: 40.20.0 → 40.21.0</li>
<li><a
href="https://github.com/joke2k/faker/commit/8ec76fb23dfbcecefe6b7ce4f27c47b224376923"><code>8ec76fb</code></a>
📝 Update CHANGELOG.md</li>
<li><a
href="https://github.com/joke2k/faker/commit/fbd8c03a5de255bf288a059dddf6c1f979dc4d8e"><code>fbd8c03</code></a>
add banks list for <code>en_GB</code> locale (<a
href="https://redirect.github.com/joke2k/faker/issues/2363">#2363</a>)</li>
<li><a
href="https://github.com/joke2k/faker/commit/3672645c6404514fd11834161eaec481985895f0"><code>3672645</code></a>
Bump version: 40.19.1 → 40.20.0</li>
<li><a
href="https://github.com/joke2k/faker/commit/b369e13f58c9fe975023cb47e61b309f5d7b8801"><code>b369e13</code></a>
📝 Update CHANGELOG.md</li>
<li><a
href="https://github.com/joke2k/faker/commit/7ec6acd1eabe3f98446cf2f81ec424de95d993b6"><code>7ec6acd</code></a>
chore: improve faker maintenance path (<a
href="https://redirect.github.com/joke2k/faker/issues/2382">#2382</a>)</li>
<li><a
href="https://github.com/joke2k/faker/commit/0535f124612375e1faf04bb64eb9b68ae48bf536"><code>0535f12</code></a>
Bump liskin/gh-problem-matcher-wrap from 3 to 4 (<a
href="https://redirect.github.com/joke2k/faker/issues/2381">#2381</a>)</li>
<li><a
href="https://github.com/joke2k/faker/commit/0bed3fc8b060709bad596532e4c35fef3dd483c1"><code>0bed3fc</code></a>
Add <code>pan</code> and <code>gstin</code> generators to
<code>en_IN</code> SSN provider (<a
href="https://redirect.github.com/joke2k/faker/issues/2357">#2357</a>)</li>
<li><a
href="https://github.com/joke2k/faker/commit/3e9b7b0f47fbea4b2ebf8d33678da653d5a7ed74"><code>3e9b7b0</code></a>
Bump version: 40.19.0 → 40.19.1</li>
<li><a
href="https://github.com/joke2k/faker/commit/fea051597658968d2f096a2af16a67afcd6b6bd5"><code>fea0515</code></a>
📝 Update CHANGELOG.md</li>
<li>Additional commits viewable in <a
href="https://github.com/joke2k/faker/compare/v25.8.0...v40.21.0">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Onegaishimas pushed a commit to Onegaishimas/wasat that referenced this pull request Jun 4, 2026
…ith 5 updates (#518)

Updates the requirements on
[pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio),
[pytest-cov](https://github.com/pytest-dev/pytest-cov),
[mypy](https://github.com/python/mypy),
[ruff](https://github.com/astral-sh/ruff) and
[greenlet](https://github.com/python-greenlet/greenlet) to permit the
latest version.
Updates `pytest-asyncio` to 1.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's
releases</a>.</em></p>
<blockquote>
<h2>pytest-asyncio v1.4.0</h2>
<h1><a
href="https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0">1.4.0</a>
- 2026-05-26</h1>
<h2>Deprecated</h2>
<ul>
<li>Overriding the <em>event_loop_policy</em> fixture is deprecated. Use
the <code>pytest_asyncio_loop_factories</code> hook instead. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419">#1419</a>)</li>
</ul>
<h2>Added</h2>
<ul>
<li>
<p>Added the <code>pytest_asyncio_loop_factories</code> hook to
parametrize asyncio tests with custom event loop factories.</p>
<p>The hook returns a mapping of factory names to loop factories, and
<code>pytest.mark.asyncio(loop_factories=[...])</code> selects a subset
of configured factories per test. When a single factory is configured,
test names are unchanged.</p>
<p>Synchronous <code>@pytest_asyncio.fixture</code> functions now see
the correct event loop when custom loop factories are configured, even
when test code disrupts the current event loop (e.g., via
<code>asyncio.run()</code> or
<code>asyncio.set_event_loop(None)</code>). (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164">#1164</a>)</p>
</li>
</ul>
<h2>Changed</h2>
<ul>
<li>Improved the readability of the warning message that is displayed
when <code>asyncio_default_fixture_loop_scope</code> is unset (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298">#1298</a>)</li>
<li>Only import <code>asyncio.AbstractEventLoopPolicy</code> for type
checking to avoid raising
a DeprecationWarning. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394">#1394</a>)</li>
<li>Updated minimum supported pytest version to v8.4.0. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1397">#1397</a>)</li>
</ul>
<h2>Fixed</h2>
<ul>
<li>Fixed a <code>ResourceWarning: unclosed event loop</code> warning
that could occur when a synchronous test called
<code>asyncio.run()</code> or otherwise unset the current event loop
after pytest-asyncio had run an async test or fixture. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/724">#724</a>)</li>
</ul>
<h2>Notes for Downstream Packagers</h2>
<ul>
<li>Added dependency on <code>sphinx-tabs &gt;= 3.5</code> to organize
documentation examples into tabs. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1395">#1395</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/6e14cd2af9292dca1fa2b027a06bbc40b0e0e425"><code>6e14cd2</code></a>
chore: Prepare release of v1.4.0.</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/4b900fb5d0c30949c574e55dd904ee179f858a5e"><code>4b900fb</code></a>
Build(deps): Bump codecov/codecov-action from 6.0.0 to 6.0.1</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/ab9f63245094865c42c940a34af724b0dec1debf"><code>ab9f632</code></a>
Build(deps): Bump zipp from 3.23.1 to 4.1.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/a56fc77ecd59f781d8471b0f6a82bf58e08c95fa"><code>a56fc77</code></a>
Build(deps): Bump hypothesis from 6.152.6 to 6.152.8</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/e8bae9bc1f197731fc1a210c0da557af7b698e6d"><code>e8bae9b</code></a>
Build(deps): Bump requests from 2.34.0 to 2.34.2</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/fc433402c570fd36a7a227ef4bc3abd4579299de"><code>fc43340</code></a>
Build(deps): Bump idna from 3.14 to 3.15</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/762eaf5033b798b965c92afdbb2cebefa8fc3a8b"><code>762eaf5</code></a>
Build(deps): Bump jaraco-functools from 4.4.0 to 4.5.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/b62e2228c80070977baf6b77ba89d5c148af920f"><code>b62e222</code></a>
Build(deps): Bump click from 8.3.3 to 8.4.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/919044700627889d25ca63b6e7a3bc785f3137eb"><code>9190447</code></a>
Build(deps): Bump pydantic from 2.13.3 to 2.13.4</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/82a393c5e31b6ebbbd8ec2a8dafc5f35b9cf1236"><code>82a393c</code></a>
ci: Remove unnecessary debug output.</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest-asyncio/compare/v0.25.0...v1.4.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `pytest-cov` from 5.0.0 to 7.1.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst">pytest-cov's
changelog</a>.</em></p>
<blockquote>
<h2>7.1.0 (2026-03-21)</h2>
<ul>
<li>
<p>Fixed total coverage computation to always be consistent, regardless
of reporting settings.
Previously some reports could produce different total counts, and
consequently can make --cov-fail-under behave different depending on
reporting options.
See <code>[#641](pytest-dev/pytest-cov#641)
&lt;https://github.com/pytest-dev/pytest-cov/issues/641&gt;</code>_.</p>
</li>
<li>
<p>Improve handling of ResourceWarning from sqlite3.</p>
<p>The plugin adds warning filter for sqlite3
<code>ResourceWarning</code> unclosed database (since 6.2.0).
It checks if there is already existing plugin for this message by
comparing filter regular expression.
When filter is specified on command line the message is escaped and does
not match an expected message.
A check for an escaped regular expression is added to handle this
case.</p>
<p>With this fix one can suppress <code>ResourceWarning</code> from
sqlite3 from command line::</p>
<p>pytest -W &quot;ignore:unclosed database in &lt;sqlite3.Connection
object at:ResourceWarning&quot; ...</p>
</li>
<li>
<p>Various improvements to documentation.
Contributed by Art Pelling in
<code>[#718](pytest-dev/pytest-cov#718)
&lt;https://github.com/pytest-dev/pytest-cov/pull/718&gt;</code>_ and
&quot;vivodi&quot; in
<code>[#738](pytest-dev/pytest-cov#738)
&lt;https://github.com/pytest-dev/pytest-cov/pull/738&gt;</code><em>.
Also closed
<code>[#736](pytest-dev/pytest-cov#736)
&lt;https://github.com/pytest-dev/pytest-cov/issues/736&gt;</code></em>.</p>
</li>
<li>
<p>Fixed some assertions in tests.
Contributed by in Markéta Machová in
<code>[#722](pytest-dev/pytest-cov#722)
&lt;https://github.com/pytest-dev/pytest-cov/pull/722&gt;</code>_.</p>
</li>
<li>
<p>Removed unnecessary coverage configuration copying (meant as a backup
because reporting commands had configuration side-effects before
coverage 5.0).</p>
</li>
</ul>
<h2>7.0.0 (2025-09-09)</h2>
<ul>
<li>
<p>Dropped support for subprocesses measurement.</p>
<p>It was a feature added long time ago when coverage lacked a nice way
to measure subprocesses created in tests.
It relied on a <code>.pth</code> file, there was no way to opt-out and
it created bad interations
with <code>coverage's new patch system
&lt;https://coverage.readthedocs.io/en/latest/config.html#run-patch&gt;</code>_
added
in <code>7.10
&lt;https://coverage.readthedocs.io/en/7.10.6/changes.html#version-7-10-0-2025-07-24&gt;</code>_.</p>
<p>To migrate to this release you might need to enable the suprocess
patch, example for <code>.coveragerc</code>:</p>
<p>.. code-block:: ini</p>
<p>[run]
patch = subprocess</p>
<p>This release also requires at least coverage 7.10.6.</p>
</li>
<li>
<p>Switched packaging to have metadata completely in
<code>pyproject.toml</code> and use <code>hatchling
&lt;https://pypi.org/project/hatchling/&gt;</code>_ for
building.
Contributed by Ofek Lev in
<code>[#551](pytest-dev/pytest-cov#551)
&lt;https://github.com/pytest-dev/pytest-cov/pull/551&gt;</code>_
with some extras in
<code>[#716](pytest-dev/pytest-cov#716)
&lt;https://github.com/pytest-dev/pytest-cov/pull/716&gt;</code>_.</p>
</li>
<li>
<p>Removed some not really necessary testing deps like
<code>six</code>.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622"><code>66c8a52</code></a>
Bump version: 7.0.0 → 7.1.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e"><code>f707662</code></a>
Make the examples use pypy 3.11.</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672"><code>6049a78</code></a>
Make context test use the old ctracer (seems the new sysmon tracer
behaves di...</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b"><code>8ebf20b</code></a>
Update changelog.</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9"><code>861d30e</code></a>
Remove the backup context manager - shouldn't be needed since coverage
5.0, ...</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f"><code>fd4c956</code></a>
Pass the precision on the nulled total (seems that there's some caching
goion...</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6"><code>78c9c4e</code></a>
Only run the 3.9 on older deps.</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc"><code>4849a92</code></a>
Punctuation.</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7"><code>197c35e</code></a>
Update changelog and hopefully I don't forget to publish release again
:))</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f"><code>14dc1c9</code></a>
Update examples to use 3.11 and make the adhoc layout example look a bit
more...</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest-cov/compare/v5.0.0...v7.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `mypy` from 1.13.0 to 2.1.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/mypy/blob/master/CHANGELOG.md">mypy's
changelog</a>.</em></p>
<blockquote>
<h1>Mypy Release Notes</h1>
<h2>Next Release</h2>
<h2>Mypy 2.1</h2>
<p>We’ve just uploaded mypy 2.1.0 to the Python Package Index (<a
href="https://pypi.org/project/mypy/">PyPI</a>).
Mypy is a static type checker for Python. This release includes new
features, performance
improvements and bug fixes. You can install it as follows:</p>
<pre><code>python3 -m pip install -U mypy
</code></pre>
<p>You can read the full documentation for this release on <a
href="http://mypy.readthedocs.io">Read the Docs</a>.</p>
<h3>librt.vecs: Fast Growable Array Type for Mypyc</h3>
<p>The new <code>librt.vecs</code> module provides an efficient growable
array type <code>vec</code> that is
optimized for mypyc use. It provides fast, packed arrays with integer
and floating point
value types, which can be <strong>several times faster</strong> than
<code>list</code>, and tens of times faster
than <code>array.array</code> in code compiled using mypyc. It also
supports nested <code>vec</code> objects and
non-value-type items, such as <code>vec[vec[str]]</code>.</p>
<p>Refer to the <a
href="https://mypyc.readthedocs.io/en/latest/librt_vecs.html">documentation</a>
for
the details.</p>
<p>Contributed by Jukka Lehtosalo.</p>
<h3>librt.random: Fast Pseudo-Random Number Generation</h3>
<p>The new <code>librt.random</code> module provides fast pseudo-random
number generation that is
optimized for code compiled using mypyc. It can be 3x to 10x faster than
the stdlib
<code>random</code> module in compiled code.</p>
<p>Refer to the <a
href="https://mypyc.readthedocs.io/en/latest/librt_random.html">documentation</a>
for
the details.</p>
<p>Contributed by Jukka Lehtosalo (PR <a
href="https://redirect.github.com/python/mypy/pull/21433">21433</a>).</p>
<h3>Mypyc Improvements</h3>
<ul>
<li>Enable incremental self-compilation (Vaggelis Danias, PR <a
href="https://redirect.github.com/python/mypy/pull/21369">21369</a>)</li>
<li>Make compilation order with multiple files consistent (Piotr
Sawicki, PR <a
href="https://redirect.github.com/python/mypy/pull/21419">21419</a>)</li>
<li>Fix crash on accessing <code>StopAsyncIteration</code> (Piotr
Sawicki, PR <a
href="https://redirect.github.com/python/mypy/pull/21406">21406</a>)</li>
<li>Fix incremental compilation with <code>separate</code> flag
(Vaggelis Danias, PR <a
href="https://redirect.github.com/python/mypy/pull/21299">21299</a>)</li>
</ul>
<h3>Fixes to Crashes</h3>
<ul>
<li>Fix crash on partial type with <code>--allow-redefinition</code> and
<code>global</code> declaration (Jukka Lehtosalo, PR <a
href="https://redirect.github.com/python/mypy/pull/21428">21428</a>)</li>
<li>Fix broken awaitable generator patching (Ivan Levkivskyi, PR <a
href="https://redirect.github.com/python/mypy/pull/21435">21435</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234"><code>c1c336d</code></a>
Remove +dev from version</li>
<li><a
href="https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7"><code>74df14b</code></a>
Add changelog for mypy 2.1 (<a
href="https://redirect.github.com/python/mypy/issues/21464">#21464</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff"><code>022d9bc</code></a>
Revert &quot;TypeForm: Enable by default (<a
href="https://redirect.github.com/python/mypy/issues/21262">#21262</a>)&quot;</li>
<li><a
href="https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c"><code>8826288</code></a>
[mypyc] Document librt.random (<a
href="https://redirect.github.com/python/mypy/issues/21463">#21463</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96"><code>3f4067b</code></a>
Bump librt version to 0.11.0 (<a
href="https://redirect.github.com/python/mypy/issues/21458">#21458</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e"><code>2b1eb58</code></a>
[mypyc] Enable incremental self-compilation (<a
href="https://redirect.github.com/python/mypy/issues/21369">#21369</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc"><code>8152f4a</code></a>
Respect file config comments for stale modules (<a
href="https://redirect.github.com/python/mypy/issues/21444">#21444</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92"><code>116d60b</code></a>
Fix nondeterminism from nonassociativity of overload joins (<a
href="https://redirect.github.com/python/mypy/issues/21455">#21455</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210"><code>6c4af8e</code></a>
Fix function call message change for small number of args (<a
href="https://redirect.github.com/python/mypy/issues/21432">#21432</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800"><code>4b8fdca</code></a>
[mypyc] Add librt.random module (<a
href="https://redirect.github.com/python/mypy/issues/21433">#21433</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/python/mypy/compare/v1.13.0...v2.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.8.0 to 0.15.15
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<h2>Release Notes</h2>
<p>Released on 2026-05-28.</p>
<h3>Preview features</h3>
<ul>
<li>Fix Markdown closing fence handling (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li>
<li>[<code>pyflakes</code>] Report duplicate imports in
<code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pyflakes</code>] Treat function-scope bare annotations as
locals per PEP 526 (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li>
<li>Reduce memory usage by dropping token-excess capacity and improve
performance by approximating the initial tokens <code>Vec</code> size
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li>
<li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix <code>line-length</code> example for <code>--config</code>
option (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li>
<li>[<code>flake8-comprehensions</code>] Document
<code>RecursionError</code> edge case in <code>__len__</code>
(<code>C416</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li>
<li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li>
<li>[<code>pyupgrade</code>] Clarify fix safety docs
(<code>UP007</code>, <code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li>
<li>[<code>refurb</code>] Document <code>FURB192</code> exception change
for empty sequences (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li>
<li>[<code>ruff</code>] Document false negative for user-defined types
(<code>RUF013</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix formatting of lambdas nested within f-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Return code action for <code>codeAction/resolve</code> requests that
contain no or no valid URL (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/fallintoplace"><code>@​fallintoplace</code></a></li>
<li><a
href="https://github.com/martin-schlossarek"><code>@​martin-schlossarek</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<p>Released on 2026-05-28.</p>
<h3>Preview features</h3>
<ul>
<li>Fix Markdown closing fence handling (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li>
<li>[<code>pyflakes</code>] Report duplicate imports in
<code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pyflakes</code>] Treat function-scope bare annotations as
locals per PEP 526 (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li>
<li>Reduce memory usage by dropping token-excess capacity and improve
performance by approximating the initial tokens <code>Vec</code> size
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li>
<li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix <code>line-length</code> example for <code>--config</code>
option (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li>
<li>[<code>flake8-comprehensions</code>] Document
<code>RecursionError</code> edge case in <code>__len__</code>
(<code>C416</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li>
<li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li>
<li>[<code>pyupgrade</code>] Clarify fix safety docs
(<code>UP007</code>, <code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li>
<li>[<code>refurb</code>] Document <code>FURB192</code> exception change
for empty sequences (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li>
<li>[<code>ruff</code>] Document false negative for user-defined types
(<code>RUF013</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix formatting of lambdas nested within f-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Return code action for <code>codeAction/resolve</code> requests that
contain no or no valid URL (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/fallintoplace"><code>@​fallintoplace</code></a></li>
<li><a
href="https://github.com/martin-schlossarek"><code>@​martin-schlossarek</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
<li><a
href="https://github.com/Ruchir28"><code>@​Ruchir28</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/db5aa0a5f1b92cb91d910bf0866a967554dd94f5"><code>db5aa0a</code></a>
Bump 0.15.15 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25431">#25431</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/366fe21ba369ccdd01eb99c1043c9a969c99230b"><code>366fe21</code></a>
[ty] Improve diagnostics for syntax errors in forward annotations (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25158">#25158</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e2e1e647d182b8567845039c9a65fb0608a4dcfc"><code>e2e1e64</code></a>
[ty] Remove excess capacity from more Salsa cached collections (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25411">#25411</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/1bd77e1646f2213d86b8da215f08279187867d72"><code>1bd77e1</code></a>
[ty] Use diagnostic message as tie breaker when sorting (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25424">#25424</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/7e1bc1e75f15795f12c846294b13df4535f2abbf"><code>7e1bc1e</code></a>
Add agent skills for working on ty (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25422">#25422</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/574e10752f8cfa9e0cdbe3b01e96c4380950469b"><code>574e107</code></a>
Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25415">#25415</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/4a7ca062fccd80443a43aa61e5dc7e5858e88dc1"><code>4a7ca06</code></a>
[ty] Display docs for matching parameter when hovering over the name of
an ar...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/54327092dbfe455040690d63bb1e5e4b5f551239"><code>5432709</code></a>
Refine a few agents instructions (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25423">#25423</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/3cb09eba689ebb49e799131092121928cc789c18"><code>3cb09eb</code></a>
[ty] Support <code>typing.TypeForm</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25334">#25334</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/c8cd59f189f2b6f55d542b29bddb953622add6fc"><code>c8cd59f</code></a>
[ty] Infer class attributes assigned by metaclass initialization (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25342">#25342</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.8.0...0.15.15">compare
view</a></li>
</ul>
</details>
<br />

Updates `greenlet` from 3.1.1 to 3.5.1
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>3.5.1 (2026-05-20)</h1>
<ul>
<li>Add preliminary support for Python 3.15b1. This has not been
reviewed by CPython core developers, but all tests pass. Binary
wheels of this version won't work on earlier Python 3.15 builds and
may not work on later 3.15 builds.</li>
<li>Fix the discrepancy in the way the two <code>getcurrent</code> APIs
behave
during greenlet teardown. One API (the C API used by, e.g., gevent)
raised a
<code>RuntimeError</code>; the other (the Python
<code>greenlet.getcurrent</code> API)
returned <code>None</code>. This second way is incompatible with
greenlet's type
annotations, so <code>greenlet.getcurrent</code> now raises a
<code>RuntimeError</code> as well.</li>
</ul>
<h1>3.5.0 (2026-04-27)</h1>
<ul>
<li>
<p>Remove the <code>atexit</code> callback. This callback caused
greenlet APIs
to become unavailable far too soon during interpreter shutdown. Now
they remain available while all <code>atexit</code> callbacks run.
Sometime
after <code>Py_IsFinalizing</code> becomes true, they may begin
misbehaving.
Because the order in which C extensions are finalized is undefined,
C extensions that are sensitive to this need to check the results of
that function before invoking greenlet APIs. As a convenience,
<code>PyGreenlet_GetCurrent</code> sets an exception and returns
<code>NULL</code>
when this happens (and <code>greenlet.getcurrent</code> begins returning
<code>None</code>); other greenlet C API functions have undefined
behaviour.
Methods invoked directly on pre-existing <code>greenlet.greenlet</code>
objects will continue to function at least until the greenlet C
extension has been garbage collected and finalized.</p>
<p>See <code>PR 508
&lt;https://github.com/python-greenlet/greenlet/pull/508&gt;</code>_.</p>
</li>
</ul>
<h1>3.4.0 (2026-04-08)</h1>
<ul>
<li>
<p>Publish binary wheels for RiscV 64.</p>
</li>
<li>
<p>Fix multiple rare crash paths during interpreter shutdown.</p>
<p>Note that this now relies on the <code>atexit</code> module, and
introduces
subtle API changes during interpreter shutdown (for example,
<code>getcurrent</code> is no longer available once the
<code>atexit</code> callback fires).</p>
<p>See <code>PR
[#499](python-greenlet/greenlet#499)
&lt;https://github.com/python-greenlet/greenlet/pull/499&gt;</code>_ by
Nicolas
Bouvrette.</p>
</li>
<li>
<p>Address the results of an automated code audit performed by
Daniel Diniz. This includes several minor correctness changes that</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/b5e5fc43a51c27ecffa1b1c7107c91464a6b26e2"><code>b5e5fc4</code></a>
Preparing release 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c8e177413d34bc36ed56d2c185c232ab0538be90"><code>c8e1774</code></a>
Tweak wording in CHANGES about greenlet.getcurrent.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/7fb10c570f37b3eb4c8909c6164fdfac3269ddb6"><code>7fb10c5</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/510">#510</a>
from python-greenlet/315</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/9718ce5a23ea3360232b78a806a837d6c3d6183d"><code>9718ce5</code></a>
Add Py 3.15; make both API versions of getcurrent() consistent in
raising Run...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/276e08afc4ddba87e4366390e3eeaecd61ccb3b8"><code>276e08a</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/509">#509</a>
from python-greenlet/dependabot/github_actions/github...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/32b0ad69828eb69d879c70dbee948e685268901b"><code>32b0ad6</code></a>
Bump pypa/gh-action-pypi-publish in the github-actions group</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/173b692dc84288ef41572612ac744754f98eaa90"><code>173b692</code></a>
Back to development: 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c7acc72000572811d6462ebe01733a974f194990"><code>c7acc72</code></a>
Preparing release 3.5.0</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/d08f99bf40801c5d57af6e13631c0ba68300ecf7"><code>d08f99b</code></a>
CHANGES: Update link from <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/507">#507</a>
to more full description in <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/fd3391e33cedc7a17a86059f18dfbec2b3a320bd"><code>fd3391e</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>
from python-greenlet/issue507-remove-atexit</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/3.1.1...3.5.1">compare
view</a></li>
</ul>
</details>
<br />

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Onegaishimas pushed a commit to Onegaishimas/wasat that referenced this pull request Jun 4, 2026
…ith 8 updates (#513)

[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Updates the requirements on
[pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio),
[pytest-mock](https://github.com/pytest-dev/pytest-mock),
[respx](https://github.com/lundberg/respx),
[testcontainers](https://github.com/testcontainers/testcontainers-python),
[mypy](https://github.com/python/mypy),
[ruff](https://github.com/astral-sh/ruff),
[pact-python](https://github.com/pact-foundation/pact-python) and
[greenlet](https://github.com/python-greenlet/greenlet) to permit the
latest version.
Updates `pytest-asyncio` to 1.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's
releases</a>.</em></p>
<blockquote>
<h2>pytest-asyncio v1.4.0</h2>
<h1><a
href="https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0">1.4.0</a>
- 2026-05-26</h1>
<h2>Deprecated</h2>
<ul>
<li>Overriding the <em>event_loop_policy</em> fixture is deprecated. Use
the <code>pytest_asyncio_loop_factories</code> hook instead. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419">#1419</a>)</li>
</ul>
<h2>Added</h2>
<ul>
<li>
<p>Added the <code>pytest_asyncio_loop_factories</code> hook to
parametrize asyncio tests with custom event loop factories.</p>
<p>The hook returns a mapping of factory names to loop factories, and
<code>pytest.mark.asyncio(loop_factories=[...])</code> selects a subset
of configured factories per test. When a single factory is configured,
test names are unchanged.</p>
<p>Synchronous <code>@pytest_asyncio.fixture</code> functions now see
the correct event loop when custom loop factories are configured, even
when test code disrupts the current event loop (e.g., via
<code>asyncio.run()</code> or
<code>asyncio.set_event_loop(None)</code>). (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164">#1164</a>)</p>
</li>
</ul>
<h2>Changed</h2>
<ul>
<li>Improved the readability of the warning message that is displayed
when <code>asyncio_default_fixture_loop_scope</code> is unset (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298">#1298</a>)</li>
<li>Only import <code>asyncio.AbstractEventLoopPolicy</code> for type
checking to avoid raising
a DeprecationWarning. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394">#1394</a>)</li>
<li>Updated minimum supported pytest version to v8.4.0. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1397">#1397</a>)</li>
</ul>
<h2>Fixed</h2>
<ul>
<li>Fixed a <code>ResourceWarning: unclosed event loop</code> warning
that could occur when a synchronous test called
<code>asyncio.run()</code> or otherwise unset the current event loop
after pytest-asyncio had run an async test or fixture. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/724">#724</a>)</li>
</ul>
<h2>Notes for Downstream Packagers</h2>
<ul>
<li>Added dependency on <code>sphinx-tabs &gt;= 3.5</code> to organize
documentation examples into tabs. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1395">#1395</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/6e14cd2af9292dca1fa2b027a06bbc40b0e0e425"><code>6e14cd2</code></a>
chore: Prepare release of v1.4.0.</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/4b900fb5d0c30949c574e55dd904ee179f858a5e"><code>4b900fb</code></a>
Build(deps): Bump codecov/codecov-action from 6.0.0 to 6.0.1</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/ab9f63245094865c42c940a34af724b0dec1debf"><code>ab9f632</code></a>
Build(deps): Bump zipp from 3.23.1 to 4.1.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/a56fc77ecd59f781d8471b0f6a82bf58e08c95fa"><code>a56fc77</code></a>
Build(deps): Bump hypothesis from 6.152.6 to 6.152.8</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/e8bae9bc1f197731fc1a210c0da557af7b698e6d"><code>e8bae9b</code></a>
Build(deps): Bump requests from 2.34.0 to 2.34.2</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/fc433402c570fd36a7a227ef4bc3abd4579299de"><code>fc43340</code></a>
Build(deps): Bump idna from 3.14 to 3.15</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/762eaf5033b798b965c92afdbb2cebefa8fc3a8b"><code>762eaf5</code></a>
Build(deps): Bump jaraco-functools from 4.4.0 to 4.5.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/b62e2228c80070977baf6b77ba89d5c148af920f"><code>b62e222</code></a>
Build(deps): Bump click from 8.3.3 to 8.4.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/919044700627889d25ca63b6e7a3bc785f3137eb"><code>9190447</code></a>
Build(deps): Bump pydantic from 2.13.3 to 2.13.4</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/82a393c5e31b6ebbbd8ec2a8dafc5f35b9cf1236"><code>82a393c</code></a>
ci: Remove unnecessary debug output.</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest-asyncio/compare/v0.25.0...v1.4.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `pytest-mock` from 3.14.0 to 3.15.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-mock/releases">pytest-mock's
releases</a>.</em></p>
<blockquote>
<h2>v3.15.1</h2>
<p><em>2025-09-16</em></p>
<ul>
<li><a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/529">#529</a>:
Fixed <code>itertools._tee object has no attribute error</code> -- now
<code>duplicate_iterators=True</code> must be passed to
<code>mocker.spy</code> to duplicate iterators.</li>
</ul>
<h2>v3.15.0</h2>
<p><em>2025-09-04</em></p>
<ul>
<li>Python 3.8 (EOL) is no longer supported.</li>
<li><a
href="https://redirect.github.com/pytest-dev/pytest-mock/pull/524">#524</a>:
Added <code>spy_return_iter</code> to <code>mocker.spy</code>, which
contains a duplicate of the return value of the spied method if it is an
<code>Iterator</code>.</li>
</ul>
<h2>v3.14.1</h2>
<ul>
<li><a
href="https://redirect.github.com/pytest-dev/pytest-mock/pull/503">#503</a>:
Python 3.14 is now officially supported.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst">pytest-mock's
changelog</a>.</em></p>
<blockquote>
<h2>3.15.1</h2>
<p><em>2025-09-16</em></p>
<ul>
<li><code>[#529](https://github.com/pytest-dev/pytest-mock/issues/529)
&lt;https://github.com/pytest-dev/pytest-mock/issues/529&gt;</code>_:
Fixed <code>itertools._tee object has no attribute error</code> -- now
<code>duplicate_iterators=True</code> must be passed to
<code>mocker.spy</code> to duplicate iterators.</li>
</ul>
<h2>3.15.0</h2>
<p><em>2025-09-04</em></p>
<ul>
<li>Python 3.8 (EOL) is no longer supported.</li>
<li><code>[#524](https://github.com/pytest-dev/pytest-mock/issues/524)
&lt;https://github.com/pytest-dev/pytest-mock/pull/524&gt;</code>_:
Added <code>spy_return_iter</code> to <code>mocker.spy</code>, which
contains a duplicate of the return value of the spied method if it is an
<code>Iterator</code>.</li>
</ul>
<h2>3.14.1 (2025-05-26)</h2>
<ul>
<li><code>[#503](https://github.com/pytest-dev/pytest-mock/issues/503)
&lt;https://github.com/pytest-dev/pytest-mock/pull/503&gt;</code>_:
Python 3.14 is now officially supported.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/e1b5c62a38c5a05cae614aef3847f240ba50d269"><code>e1b5c62</code></a>
Release 3.15.1</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/184eb190d6be417f5f33727bcbc9704909479498"><code>184eb19</code></a>
Set <code>spy_return_iter</code> only when explicitly requested (<a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/537">#537</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/4fa0088a0aa85eefb1313bd97adf43889bf1f647"><code>4fa0088</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/536">#536</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/f5aff33ce71ed4620acc43dc41cb3b198bcf4cb0"><code>f5aff33</code></a>
Fix test failure with pytest 8+ and verbose mode (<a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/535">#535</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/adc41873c9d6aa69b87e3f108c93a29c847869aa"><code>adc4187</code></a>
Bump actions/setup-python from 5 to 6 in the github-actions group (<a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/533">#533</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/95ad5700609aae73c6f767b8cc2ccfb2483e0f5c"><code>95ad570</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/532">#532</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/e696bf02c199b1f7d0c48adb450f40e5a75b699a"><code>e696bf0</code></a>
Fix standalone mock support (<a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/531">#531</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/5b29b03ce9581cfcd867dd6c04a970fb2c861291"><code>5b29b03</code></a>
Fix gen-release-notes script</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/7d22ef4e560351832e60687d8bd15ebe2785ff3b"><code>7d22ef4</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/528">#528</a>
from pytest-dev/release-3.15.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/90b29f89e2086c139a7b4fea89202faa192ee5a9"><code>90b29f8</code></a>
Update CHANGELOG for 3.15.0</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest-mock/compare/v3.14.0...v3.15.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `respx` from 0.21.1 to 0.23.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/lundberg/respx/releases">respx's
releases</a>.</em></p>
<blockquote>
<h2>Version 0.23.1</h2>
<h2>0.23.1 (8th April 2026)</h2>
<h3>Fixed</h3>
<ul>
<li>Fix regression causing <code>params</code> pattern to stop working
under some conditions,
by doing a strict detection of <code>ANY</code> in multi items patterns
(<a
href="https://redirect.github.com/lundberg/respx/issues/313">#313</a>)</li>
</ul>
<h3>CI</h3>
<ul>
<li>Update workflows actions (<a
href="https://redirect.github.com/lundberg/respx/issues/310">#310</a>)</li>
</ul>
<h2>Version 0.23.0</h2>
<h2>0.23.0 (7th April 2026)</h2>
<h3>Fixed</h3>
<ul>
<li>Fix <code>data</code> pattern with list value (<a
href="https://redirect.github.com/lundberg/respx/issues/264">#264</a>)</li>
<li>Fix and enhance incorrect documentations about iterable side effects
(<a
href="https://redirect.github.com/lundberg/respx/issues/287">#287</a>)</li>
<li>Fix documentation typo, thanks <a
href="https://github.com/markhobson"><code>@​markhobson</code></a> (<a
href="https://redirect.github.com/lundberg/respx/issues/298">#298</a>)</li>
<li>Fix support for multiple slashes <code>//</code> in URL path by not
using <code>urljoin</code> when
prepending path, thanks <a
href="https://github.com/lewiscollard"><code>@​lewiscollard</code></a>
and <a href="https://github.com/Skeen"><code>@​Skeen</code></a> (<a
href="https://redirect.github.com/lundberg/respx/issues/302">#302</a>)</li>
<li>Type Route.respond json as <code>Any</code> to align with HTTPX,
thanks <a
href="https://github.com/JacobHayes"><code>@​JacobHayes</code></a> (<a
href="https://redirect.github.com/lundberg/respx/issues/284">#284</a>)</li>
<li>Properly handle <code>ANY</code> in <code>MuitiItems</code> patterns
(<a
href="https://redirect.github.com/lundberg/respx/issues/289">#289</a>)</li>
</ul>
<h3>CI</h3>
<ul>
<li>Fix test warnings (<a
href="https://redirect.github.com/lundberg/respx/issues/267">#267</a>)</li>
<li>Add Python 3.14 to test matrix, thanks <a
href="https://github.com/carlosdorneles-mb"><code>@​carlosdorneles-mb</code></a>
(<a
href="https://redirect.github.com/lundberg/respx/issues/300">#300</a>)</li>
<li>Update nix flake, mypy target and workflows (<a
href="https://redirect.github.com/lundberg/respx/issues/306">#306</a>,
<a
href="https://redirect.github.com/lundberg/respx/issues/282">#282</a>)</li>
</ul>
<h2>Version 0.22.0</h2>
<h2>0.22.0 (19th December 2024)</h2>
<h3>Fixed</h3>
<ul>
<li>Support HTTPX 0.28.0, thanks <a
href="https://github.com/ndhansen"><code>@​ndhansen</code></a> (<a
href="https://redirect.github.com/lundberg/respx/issues/278">#278</a>)</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Drop support for Python 3.7, to align with HTTPX 0.25.0 (<a
href="https://redirect.github.com/lundberg/respx/issues/280">#280</a>)</li>
</ul>
<h3>CI</h3>
<ul>
<li>Update CI test to not fail fast and cancel workflows, thanks <a
href="https://github.com/flaeppe"><code>@​flaeppe</code></a> (<a
href="https://redirect.github.com/lundberg/respx/issues/269">#269</a>)</li>
<li>Add dependabot to check GitHub actions packages, thanks <a
href="https://github.com/flaeppe"><code>@​flaeppe</code></a> (<a
href="https://redirect.github.com/lundberg/respx/issues/268">#268</a>)</li>
<li>Add Python 3.13 to test suite, thanks <a
href="https://github.com/jairhenrique"><code>@​jairhenrique</code></a>
(<a
href="https://redirect.github.com/lundberg/respx/issues/283">#283</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/lundberg/respx/blob/master/CHANGELOG.md">respx's
changelog</a>.</em></p>
<blockquote>
<h2>[0.23.1] - 2026-04-08</h2>
<h3>Fixed</h3>
<ul>
<li>Fix regression causing <code>params</code> pattern to stop working
under some conditions, by
doing a strict detection of <code>ANY</code> in multi items patterns (<a
href="https://redirect.github.com/lundberg/respx/issues/313">#313</a>)</li>
</ul>
<h3>CI</h3>
<ul>
<li>Update workflows actions (<a
href="https://redirect.github.com/lundberg/respx/issues/310">#310</a>)</li>
</ul>
<h2>[0.23.0] - 2026-04-07</h2>
<h3>Fixed</h3>
<ul>
<li>Fix <code>data</code> pattern with list value (<a
href="https://redirect.github.com/lundberg/respx/issues/264">#264</a>)</li>
<li>Fix and enhance incorrect documentations about iterable side effects
(<a
href="https://redirect.github.com/lundberg/respx/issues/287">#287</a>)</li>
<li>Fix documentation typo, thanks <a
href="https://github.com/markhobson"><code>@​markhobson</code></a> (<a
href="https://redirect.github.com/lundberg/respx/issues/298">#298</a>)</li>
<li>Fix support for multiple slashes <code>//</code> in URL path by not
using <code>urljoin</code> when
prepending path, thanks <a
href="https://github.com/lewiscollard"><code>@​lewiscollard</code></a>
and <a href="https://github.com/Skeen"><code>@​Skeen</code></a> (<a
href="https://redirect.github.com/lundberg/respx/issues/302">#302</a>)</li>
<li>Type Route.respond json as <code>Any</code> to align with HTTPX,
thanks <a
href="https://github.com/JacobHayes"><code>@​JacobHayes</code></a> (<a
href="https://redirect.github.com/lundberg/respx/issues/284">#284</a>)</li>
<li>Properly handle <code>ANY</code> in <code>MuitiItems</code> patterns
(<a
href="https://redirect.github.com/lundberg/respx/issues/289">#289</a>)</li>
</ul>
<h3>CI</h3>
<ul>
<li>Fix test warnings (<a
href="https://redirect.github.com/lundberg/respx/issues/267">#267</a>)</li>
<li>Add Python 3.14 to test matrix, thanks <a
href="https://github.com/carlosdorneles-mb"><code>@​carlosdorneles-mb</code></a>
(<a
href="https://redirect.github.com/lundberg/respx/issues/300">#300</a>)</li>
<li>Update nix flake, mypy target and workflows (<a
href="https://redirect.github.com/lundberg/respx/issues/306">#306</a>,
<a
href="https://redirect.github.com/lundberg/respx/issues/282">#282</a>)</li>
</ul>
<h2>[0.22.0] - 2024-12-19</h2>
<h3>Fixed</h3>
<ul>
<li>Support HTTPX 0.28.0, thanks <a
href="https://github.com/ndhansen"><code>@​ndhansen</code></a> (<a
href="https://redirect.github.com/lundberg/respx/issues/278">#278</a>)</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Drop support for Python 3.7, to align with HTTPX 0.25.0 (<a
href="https://redirect.github.com/lundberg/respx/issues/280">#280</a>)</li>
</ul>
<h3>CI</h3>
<ul>
<li>Update CI test to not fail fast and cancel workflows, thanks <a
href="https://github.com/flaeppe"><code>@​flaeppe</code></a> (<a
href="https://redirect.github.com/lundberg/respx/issues/269">#269</a>)</li>
<li>Add dependabot to check GitHub actions packages, thanks <a
href="https://github.com/flaeppe"><code>@​flaeppe</code></a> (<a
href="https://redirect.github.com/lundberg/respx/issues/268">#268</a>)</li>
<li>Add Python 3.13 to test suite, thanks <a
href="https://github.com/jairhenrique"><code>@​jairhenrique</code></a>
(<a
href="https://redirect.github.com/lundberg/respx/issues/283">#283</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/lundberg/respx/commit/fc8b43bc74a69d07a6bdccf61522069b12bb8fad"><code>fc8b43b</code></a>
Release <code>0.23.1</code></li>
<li><a
href="https://github.com/lundberg/respx/commit/1da5d2ff487122de3648efd4ad8d33ae9a1a5393"><code>1da5d2f</code></a>
Strict detection of <code>ANY</code> in multi items patterns (<a
href="https://redirect.github.com/lundberg/respx/issues/313">#313</a>)</li>
<li><a
href="https://github.com/lundberg/respx/commit/6f1bf70576eb7a024272c82cd84fb523d50fe9e9"><code>6f1bf70</code></a>
Bump checkout and python actions (<a
href="https://redirect.github.com/lundberg/respx/issues/310">#310</a>)</li>
<li><a
href="https://github.com/lundberg/respx/commit/62aaeabf2d55c9dcafa74ec086885850194e0dda"><code>62aaeab</code></a>
Release <code>0.23.0</code></li>
<li><a
href="https://github.com/lundberg/respx/commit/d8edf3db92c4e6830301a4f4e51fe56b743e0ed9"><code>d8edf3d</code></a>
Adjust badges</li>
<li><a
href="https://github.com/lundberg/respx/commit/b3a193d3a443472c9f0241599f02d89f4a3f33f9"><code>b3a193d</code></a>
Add downloads badge to docs</li>
<li><a
href="https://github.com/lundberg/respx/commit/9961e9b79641635f3c891d8ded5c7e5aa3d8f049"><code>9961e9b</code></a>
Handle multiple routes using <code>MuitiItems</code> pattern with
<code>ANY</code> (<a
href="https://redirect.github.com/lundberg/respx/issues/289">#289</a>)</li>
<li><a
href="https://github.com/lundberg/respx/commit/e51c2a6ffad066c78dedb0fc0e2fa27257f686f2"><code>e51c2a6</code></a>
Update Route.respond json type hint to Any to match HTTPX (<a
href="https://redirect.github.com/lundberg/respx/issues/284">#284</a>)</li>
<li><a
href="https://github.com/lundberg/respx/commit/a499260e28520ad6f19b06539f3321aa67f3f3b3"><code>a499260</code></a>
Bump less-action/reusables from 8 to 10 (<a
href="https://redirect.github.com/lundberg/respx/issues/282">#282</a>)</li>
<li><a
href="https://github.com/lundberg/respx/commit/7b44b512c8e44db460bbafaddb382444660c55f4"><code>7b44b51</code></a>
Update nix flake and mypy target (<a
href="https://redirect.github.com/lundberg/respx/issues/306">#306</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/lundberg/respx/compare/0.21.1...0.23.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `testcontainers` from 4.8.2 to 4.14.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/testcontainers/testcontainers-python/releases">testcontainers's
releases</a>.</em></p>
<blockquote>
<h2>testcontainers: v4.14.2</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2">4.14.2</a>
(2026-03-18)</h2>
<h3>Features</h3>
<ul>
<li><strong>kafka:</strong> allow configurable listener name and
security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3">44dd40b</a>)</li>
</ul>
<h2>testcontainers: v4.14.1</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1">4.14.1</a>
(2026-01-31)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Allow passing in a custom wait strategy string in MySQL, Cassandra,
Kafka and Trino (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/953">#953</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b">be4d09e</a>)</li>
<li><strong>compose:</strong> expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f">183e1aa</a>)</li>
<li><strong>core:</strong> bring back dind tests (<a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5">7337266</a>)</li>
<li><strong>core:</strong> Use WaitStrategy internally for wait_for
function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e">e323317</a>)</li>
<li><strong>nats:</strong> add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4">49c9af8</a>)</li>
<li>Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8">f690e88</a>),
closes <a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/860">#860</a></li>
</ul>
<h2>testcontainers: v4.14.0</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0">4.14.0</a>
(2026-01-07)</h2>
<h3>Features</h3>
<ul>
<li>Add ExecWaitStrategy and migrate Postgres from deprecated decorator
(<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/935">#935</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06">2d9eee3</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>add ruff to deps (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/919">#919</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d">5853d32</a>)</li>
<li><strong>cassandra,mysqk,kafka:</strong> Use wait strategy instead of
deprecated wait_for_logs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/945">#945</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9">b7791b9</a>)</li>
<li><strong>core:</strong> recreate poetry lockfile with latest versions
of libraries (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/946">#946</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03">9a97385</a>)</li>
<li><strong>elasticsearch:</strong> Use wait strategy instead of
deprecated decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/915">#915</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627">c785ecd</a>)</li>
<li><strong>minio:</strong> minio client requires kwargs now (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/933">#933</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62">37f5902</a>)</li>
<li><strong>minio:</strong> Use wait strategy instead of deprecated
decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/899">#899</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3">febccb7</a>)</li>
</ul>
<h2>testcontainers: v4.13.3</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3">4.13.3</a>
(2025-11-14)</h2>
<h3>python 3.14 is now supported!</h3>
<h3>Bug Fixes</h3>
<ul>
<li>do not require consumer of library to state nonsupport for py4 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/912">#912</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c">f608df9</a>)</li>
<li><strong>docs:</strong> Update dependencies for docs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/900">#900</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c">3f66784</a>)</li>
</ul>
<h2>testcontainers: v4.13.2</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/testcontainers/testcontainers-python/blob/main/CHANGELOG.md">testcontainers's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2">4.14.2</a>
(2026-03-18)</h2>
<h3>Features</h3>
<ul>
<li><strong>kafka:</strong> allow configurable listener name and
security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3">44dd40b</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1">4.14.1</a>
(2026-01-31)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Allow passing in a custom wait strategy string in MySQL, Cassandra,
Kafka and Trino (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/953">#953</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b">be4d09e</a>)</li>
<li><strong>compose:</strong> expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f">183e1aa</a>)</li>
<li><strong>core:</strong> bring back dind tests (<a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5">7337266</a>)</li>
<li><strong>core:</strong> Use WaitStrategy internally for wait_for
function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e">e323317</a>)</li>
<li><strong>nats:</strong> add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4">49c9af8</a>)</li>
<li>Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8">f690e88</a>),
closes <a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/860">#860</a></li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0">4.14.0</a>
(2026-01-07)</h2>
<h3>Features</h3>
<ul>
<li>Add ExecWaitStrategy and migrate Postgres from deprecated decorator
(<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/935">#935</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06">2d9eee3</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>add ruff to deps (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/919">#919</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d">5853d32</a>)</li>
<li><strong>cassandra,mysqk,kafka:</strong> Use wait strategy instead of
deprecated wait_for_logs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/945">#945</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9">b7791b9</a>)</li>
<li><strong>core:</strong> recreate poetry lockfile with latest versions
of libraries (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/946">#946</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03">9a97385</a>)</li>
<li><strong>elasticsearch:</strong> Use wait strategy instead of
deprecated decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/915">#915</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627">c785ecd</a>)</li>
<li><strong>minio:</strong> minio client requires kwargs now (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/933">#933</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62">37f5902</a>)</li>
<li><strong>minio:</strong> Use wait strategy instead of deprecated
decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/899">#899</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3">febccb7</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3">4.13.3</a>
(2025-11-14)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>do not require consumer of library to state nonsupport for py4 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/912">#912</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c">f608df9</a>)</li>
<li><strong>docs:</strong> Update dependencies for docs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/900">#900</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c">3f66784</a>)</li>
<li>support python 3.14!!! - (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/917">#917</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6">f76e982</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2">4.13.2</a>
(2025-10-07)</h2>
<h3>Bug Fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377"><code>5c67efb</code></a>
chore(main): release testcontainers 4.14.2 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/969">#969</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3"><code>44dd40b</code></a>
feat(kafka): allow configurable listener name and security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a"><code>a78475a</code></a>
chore(main): Migrate to uv (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/960">#960</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c"><code>17eb0b0</code></a>
chore(main): release testcontainers 4.14.1 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/954">#954</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8"><code>f690e88</code></a>
fix: Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a"><code>15e99ee</code></a>
add modifications</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5"><code>7337266</code></a>
fix(core): bring back dind tests</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4"><code>49c9af8</code></a>
fix(nats): add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e"><code>e323317</code></a>
fix(core): Use WaitStrategy internally for wait_for function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f"><code>183e1aa</code></a>
fix(compose): expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.8.2...testcontainers-v4.14.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `mypy` from 1.13.0 to 2.1.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/mypy/blob/master/CHANGELOG.md">mypy's
changelog</a>.</em></p>
<blockquote>
<h1>Mypy Release Notes</h1>
<h2>Next Release</h2>
<h2>Mypy 2.1</h2>
<p>We’ve just uploaded mypy 2.1.0 to the Python Package Index (<a
href="https://pypi.org/project/mypy/">PyPI</a>).
Mypy is a static type checker for Python. This release includes new
features, performance
improvements and bug fixes. You can install it as follows:</p>
<pre><code>python3 -m pip install -U mypy
</code></pre>
<p>You can read the full documentation for this release on <a
href="http://mypy.readthedocs.io">Read the Docs</a>.</p>
<h3>librt.vecs: Fast Growable Array Type for Mypyc</h3>
<p>The new <code>librt.vecs</code> module provides an efficient growable
array type <code>vec</code> that is
optimized for mypyc use. It provides fast, packed arrays with integer
and floating point
value types, which can be <strong>several times faster</strong> than
<code>list</code>, and tens of times faster
than <code>array.array</code> in code compiled using mypyc. It also
supports nested <code>vec</code> objects and
non-value-type items, such as <code>vec[vec[str]]</code>.</p>
<p>Refer to the <a
href="https://mypyc.readthedocs.io/en/latest/librt_vecs.html">documentation</a>
for
the details.</p>
<p>Contributed by Jukka Lehtosalo.</p>
<h3>librt.random: Fast Pseudo-Random Number Generation</h3>
<p>The new <code>librt.random</code> module provides fast pseudo-random
number generation that is
optimized for code compiled using mypyc. It can be 3x to 10x faster than
the stdlib
<code>random</code> module in compiled code.</p>
<p>Refer to the <a
href="https://mypyc.readthedocs.io/en/latest/librt_random.html">documentation</a>
for
the details.</p>
<p>Contributed by Jukka Lehtosalo (PR <a
href="https://redirect.github.com/python/mypy/pull/21433">21433</a>).</p>
<h3>Mypyc Improvements</h3>
<ul>
<li>Enable incremental self-compilation (Vaggelis Danias, PR <a
href="https://redirect.github.com/python/mypy/pull/21369">21369</a>)</li>
<li>Make compilation order with multiple files consistent (Piotr
Sawicki, PR <a
href="https://redirect.github.com/python/mypy/pull/21419">21419</a>)</li>
<li>Fix crash on accessing <code>StopAsyncIteration</code> (Piotr
Sawicki, PR <a
href="https://redirect.github.com/python/mypy/pull/21406">21406</a>)</li>
<li>Fix incremental compilation with <code>separate</code> flag
(Vaggelis Danias, PR <a
href="https://redirect.github.com/python/mypy/pull/21299">21299</a>)</li>
</ul>
<h3>Fixes to Crashes</h3>
<ul>
<li>Fix crash on partial type with <code>--allow-redefinition</code> and
<code>global</code> declaration (Jukka Lehtosalo, PR <a
href="https://redirect.github.com/python/mypy/pull/21428">21428</a>)</li>
<li>Fix broken awaitable generator patching (Ivan Levkivskyi, PR <a
href="https://redirect.github.com/python/mypy/pull/21435">21435</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234"><code>c1c336d</code></a>
Remove +dev from version</li>
<li><a
href="https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7"><code>74df14b</code></a>
Add changelog for mypy 2.1 (<a
href="https://redirect.github.com/python/mypy/issues/21464">#21464</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff"><code>022d9bc</code></a>
Revert &quot;TypeForm: Enable by default (<a
href="https://redirect.github.com/python/mypy/issues/21262">#21262</a>)&quot;</li>
<li><a
href="https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c"><code>8826288</code></a>
[mypyc] Document librt.random (<a
href="https://redirect.github.com/python/mypy/issues/21463">#21463</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96"><code>3f4067b</code></a>
Bump librt version to 0.11.0 (<a
href="https://redirect.github.com/python/mypy/issues/21458">#21458</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e"><code>2b1eb58</code></a>
[mypyc] Enable incremental self-compilation (<a
href="https://redirect.github.com/python/mypy/issues/21369">#21369</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc"><code>8152f4a</code></a>
Respect file config comments for stale modules (<a
href="https://redirect.github.com/python/mypy/issues/21444">#21444</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92"><code>116d60b</code></a>
Fix nondeterminism from nonassociativity of overload joins (<a
href="https://redirect.github.com/python/mypy/issues/21455">#21455</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210"><code>6c4af8e</code></a>
Fix function call message change for small number of args (<a
href="https://redirect.github.com/python/mypy/issues/21432">#21432</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800"><code>4b8fdca</code></a>
[mypyc] Add librt.random module (<a
href="https://redirect.github.com/python/mypy/issues/21433">#21433</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/python/mypy/compare/v1.13.0...v2.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.8.0 to 0.15.15
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<h2>Release Notes</h2>
<p>Released on 2026-05-28.</p>
<h3>Preview features</h3>
<ul>
<li>Fix Markdown closing fence handling (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li>
<li>[<code>pyflakes</code>] Report duplicate imports in
<code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pyflakes</code>] Treat function-scope bare annotations as
locals per PEP 526 (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li>
<li>Reduce memory usage by dropping token-excess capacity and improve
performance by approximating the initial tokens <code>Vec</code> size
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li>
<li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix <code>line-length</code> example for <code>--config</code>
option (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li>
<li>[<code>flake8-comprehensions</code>] Document
<code>RecursionError</code> edge case in <code>__len__</code>
(<code>C416</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li>
<li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li>
<li>[<code>pyupgrade</code>] Clarify fix safety docs
(<code>UP007</code>, <code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li>
<li>[<code>refurb</code>] Document <code>FURB192</code> exception change
for empty sequences (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li>
<li>[<code>ruff</code>] Document false negative for user-defined types
(<code>RUF013</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix formatting of lambdas nested within f-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Return code action for <code>codeAction/resolve</code> requests that
contain no or no valid URL (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/fallintoplace"><code>@​fallintoplace</code></a></li>
<li><a
href="https://github.com/martin-schlossarek"><code>@​martin-schlossarek</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<p>Released on 2026-05-28.</p>
<h3>Preview features</h3>
<ul>
<li>Fix Markdown closing fence handling (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li>
<li>[<code>pyflakes</code>] Report duplicate imports in
<code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pyflakes</code>] Treat function-scope bare annotations as
locals per PEP 526 (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li>
<li>Reduce memory usage by dropping token-excess capacity and improve
performance by approximating the initial tokens <code>Vec</code> size
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li>
<li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix <code>line-length</code> example for <code>--config</code>
option (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li>
<li>[<code>flake8-comprehensions</code>] Document
<code>RecursionError</code> edge case in <code>__len__</code>
(<code>C416</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li>
<li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li>
<li>[<code>pyupgrade</code>] Clarify fix safety docs
(<code>UP007</code>, <code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li>
<li>[<code>refurb</code>] Document <code>FURB192</code> exception change
for empty sequences (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li>
<li>[<code>ruff</code>] Document false negative for user-defined types
(<code>RUF013</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix formatting of lambdas nested within f-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Return code action for <code>codeAction/resolve</code> requests that
contain no or no valid URL (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/fallintoplace"><code>@​fallintoplace</code></a></li>
<li><a
href="https://github.com/martin-schlossarek"><code>@​martin-schlossarek</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
<li><a
href="https://github.com/Ruchir28"><code>@​Ruchir28</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/db5aa0a5f1b92cb91d910bf0866a967554dd94f5"><code>db5aa0a</code></a>
Bump 0.15.15 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25431">#25431</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/366fe21ba369ccdd01eb99c1043c9a969c99230b"><code>366fe21</code></a>
[ty] Improve diagnostics for syntax errors in forward annotations (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25158">#25158</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e2e1e647d182b8567845039c9a65fb0608a4dcfc"><code>e2e1e64</code></a>
[ty] Remove excess capacity from more Salsa cached collections (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25411">#25411</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/1bd77e1646f2213d86b8da215f08279187867d72"><code>1bd77e1</code></a>
[ty] Use diagnostic message as tie breaker when sorting (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25424">#25424</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/7e1bc1e75f15795f12c846294b13df4535f2abbf"><code>7e1bc1e</code></a>
Add agent skills for working on ty (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25422">#25422</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/574e10752f8cfa9e0cdbe3b01e96c4380950469b"><code>574e107</code></a>
Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25415">#25415</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/4a7ca062fccd80443a43aa61e5dc7e5858e88dc1"><code>4a7ca06</code></a>
[ty] Display docs for matching parameter when hovering over the name of
an ar...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/54327092dbfe455040690d63bb1e5e4b5f551239"><code>5432709</code></a>
Refine a few agents instructions (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25423">#25423</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/3cb09eba689ebb49e799131092121928cc789c18"><code>3cb09eb</code></a>
[ty] Support <code>typing.TypeForm</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25334">#25334</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/c8cd59f189f2b6f55d542b29bddb953622add6fc"><code>c8cd59f</code></a>
[ty] Infer class attributes assigned by metaclass initialization (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25342">#25342</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.8.0...0.15.15">compare
view</a></li>
</ul>
</details>
<br />

Updates `pact-python` to 3.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pact-foundation/pact-python/releases">pact-python's
releases</a>.</em></p>
<blockquote>
<h2>pact-python/3.4.0</h2>
<h3>🚀 Features</h3>
<ul>
<li>Add external reference dsl</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/rholshausen"><code>@​rholshausen</code></a></li>
<li><a
href="https://github.com/JP-Ellis"><code>@​JP-Ellis</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pact-foundation/pact-python/blob/main/CHANGELOG.md">pact-python's
changelog</a>.</em></p>
<blockquote>
<h2>[pact-python/3.4.0] <em>2026-05-04</em></h2>
<h3>🚀 Features</h3>
<ul>
<li>Add external reference dsl</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/rholshausen"><code>@​rholshausen</code></a></li>
<li><a
href="https://github.com/JP-Ellis"><code>@​JP-Ellis</code></a></li>
</ul>
<h2>[pact-python/3.3.1] <em>2026-04-22</em></h2>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>Avoid rare port clash</li>
</ul>
<h3>⚙️ Miscellaneous Tasks</h3>
<ul>
<li>Simplify find_free_port</li>
<li>Replace pre-commit with prek</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/JP-Ellis"><code>@​JP-Ellis</code></a></li>
</ul>
<h2>[pact-python/3.3.0] <em>2026-04-17</em></h2>
<h3>🚀 Features</h3>
<ul>
<li>
<p>Add xml matching</p>
<p>A new <code>pact.xml</code> module provides builder functions for
constructing XML request and response bodies with embedded Pact
matchers. Use <code>xml.element()</code> to describe the XML structure
and attach matchers where needed, then wrap the result with
<code>xml.body()</code> before passing it to <code>with_body(...,
content_type=&quot;application/xml&quot;)</code>:</p>
<pre lang="python"><code>from pact import match, xml
<p>response = xml.body(
xml.element(
&quot;user&quot;,
xml.element(&quot;id&quot;, match.int(123)),
xml.element(&quot;name&quot;, match.str(&quot;Alice&quot;)),
)
)
interaction.with_body(response,
content_type=&quot;application/xml&quot;)
</code></pre></p>
<p>Repeating elements are supported via <code>.each(min=1,
examples=2)</code> on any <code>XmlElement</code>. Attributes (including
namespace declarations) can be passed via the <code>attrs</code> keyword
argument.</p>
</li>
<li>
<p>Allow iteration over all interactions</p>
</li>
<li>
<p>Use common <code>PactInteraction</code> type</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/ff3ea64ab25912068fc26dad37cf420048f28bb6"><code>ff3ea64</code></a>
chore(release): pact-python v3.4.0</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/a64c2270749a85fe38769325f498d023f0a53e49"><code>a64c227</code></a>
feat: add external reference dsl</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/440de3e8a88f75a935fdbcf7d28eb5e67d34537b"><code>440de3e</code></a>
chore(release): pact-python-ffi v0.5.4.0</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/329466431f00250e0fd86693fd275caa53bc7152"><code>3294664</code></a>
chore(deps): update taiki-e/install-action action to v2.75.30 (<a
href="https://redirect.github.com/pact-foundation/pact-python/issues/1588">#1588</a>)</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/43b8dc95aa4704ac148df7a731724d9bb9250fcf"><code>43b8dc9</code></a>
chore(deps): update j178/prek-action action to v2.0.3 (<a
href="https://redirect.github.com/pact-foundation/pact-python/issues/1587">#1587</a>)</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/084af65e8f9b5951f6cf4ba1eac7055fbc62a622"><code>084af65</code></a>
chore(deps): update taiki-e/install-action action to v2.75.23 (<a
href="https://redirect.github.com/pact-foundation/pact-python/issues/1585">#1585</a>)</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/d2934b7024781fdf2d10284e08af2d5515a01a25"><code>d2934b7</code></a>
chore(deps): update dependency pathspec to v1.1.1 (<a
href="https://redirect.github.com/pact-foundation/pact-python/issues/1586">#1586</a>)</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/58dcb8d818580084ea7f103d1ac9a72eb389b03c"><code>58dcb8d</code></a>
chore(deps): update python:3.14-slim docker digest to 5b3879b (<a
href="https://redirect.github.com/pact-foundation/pact-python/issues/1582">#1582</a>)</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/f1afa28d7034aa49a7d5b3d81249a44b43f0d6be"><code>f1afa28</code></a>
chore(deps): update dependency ruff to v0.15.12 (<a
href="https://redirect.github.com/pact-foundation/pact-python/issues/1583">#1583</a>)</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/14ce0ca91760ed1fa682721a12bb25d1a705c245"><code>14ce0ca</code></a>
chore(deps): update python:3.14-slim docker digest to 3989a23 (<a
href="https://redirect.github.com/pact-foundation/pact-python/issues/1580">#1580</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pact-foundation/pact-python/compare/pact-python/3.0.0...pact-python/3.4.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `greenlet` from 3.1.1 to 3.5.1
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>3.5.1 (2026-05-20)</h1>
<ul>
<li>Add preliminary support for Python 3.15b1. This has not been
reviewed by CPython core developers, but all tests pass. Binary
wheels of this version won't work on earlier Python 3.15 builds and
may not work on later 3.15 builds.</li>
<li>Fix the discrepancy in the way the two <code>getcurrent</code> APIs
behave
during greenlet teardown. One API (the C API used by, e.g., gevent)
raised a
<code>RuntimeError</code>; the other (the Python
<code>greenlet.getcurrent</code> API)
returned <code>None</code>. This second way is incompatible with
greenlet's type
annotations, so <code>greenlet.getcurrent</code> now raises a
<code>RuntimeError</code> as well.</li>
</ul>
<h1>3.5.0 (2026-04-27)</h1>
<ul>
<li>
<p>Remove the <code>atexit</code> callback. This callback caused
greenlet APIs
to become unavailable far too soon during interpreter shutdown. Now
they remain available while all <code>atexit</code> callbacks run.
Sometime
after <code>Py_IsFinalizing</code> becomes true, they may begin
misbehaving.
Because the order in which C extensions are finalized is undefined,
C extensions that are sensitive to this need to check the results of
that function before invoking greenlet APIs. As a convenience,
<code>PyGreenlet_GetCurrent</code> sets an exception and returns
<code>NULL</code>
when this happens (and <code>greenlet.getcurrent</code> begins returning
<code>None</code>); other greenlet C API functions have undefined
behaviour.
Methods invoked directly on pre-existing <code>greenlet.greenlet</code>
objects will continue to function at least until the greenlet C
extension has been garbage collected and finalized.</p>
<p>See <code>PR 508
&lt;https://github.com/python-greenlet/greenlet/pull/508&gt;</code>_.</p>
</li>
</ul>
<h1>3.4.0 (2026-04-08)</h1>
<ul>
<li>
<p>Publish binary wheels for RiscV 64.</p>
</li>
<li>
<p>Fix multiple rare crash paths during interpreter shutdown.</p>
<p>Note that this now relies on the <code>atexit</code> module, and
introduces
subtle API changes during interpreter shutdown (for example,
<code>getcurrent</code> is no longer available once the
<code>atexit</code> callback fires).</p>
<p>See <code>PR
[#499](https://github.com/python-greenlet/greenlet/issues/499)
&lt;https://github.com/python-greenlet/greenlet/pull/499&gt;</code>_ by
Nicolas
Bouvrette.</p>
</li>
<li>
<p>Address the results of an automated code audit performed by
Daniel Diniz. This includes several minor correctness changes that</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/b5e5fc43a51c27ecffa1b1c7107c91464a6b26e2"><code>b5e5fc4</code></a>
Preparing release 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c8e177413d34bc36ed56d2c185c232ab0538be90"><code>c8e1774</code></a>
Tweak wording in CHANGES about greenlet.getcurrent.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/7fb10c570f37b3eb4c8909c6164fdfac3269ddb6"><code>7fb10c5</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/510">#510</a>
from python-greenlet/315</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/9718ce5a23ea3360232b78a806a837d6c3d6183d"><code>9718ce5</code></a>
Add Py 3.15; make both API versions of getcurrent() consistent in
raising Run...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/276e08afc4ddba87e4366390e3eeaecd61ccb3b8"><code>276e08a</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/509">#509</a>
from python-greenlet/dependabot/github_actions/github...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/32b0ad69828eb69d879c70dbee948e685268901b"><code>32b0ad6</code></a>
Bump pypa/gh-action-pypi-publish in the github-actions group</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/173b692dc84288ef41572612ac744754f98eaa90"><code>173b692</code></a>
Back to development: 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c7acc72000572811d6462ebe01733a974f194990"><code>c7acc72</code></a>
Preparing release 3.5.0</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/d08f99bf40801c5d57af6e13631c0ba68300ecf7"><code>d08f99b</code></a>
CHANGES: Update link from <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/507">#507</a>
to more full description in <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/fd3391e33cedc7a17a86059f18dfbec2b3a320bd"><code>fd3391e</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>
from python-greenlet/issue507-remove-atexit</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/3.1.1...3.5.1">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Onegaishimas pushed a commit to Onegaishimas/wasat that referenced this pull request Jun 4, 2026
…ith 6 updates (#514)

[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Updates the requirements on
[pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio),
[pytest-cov](https://github.com/pytest-dev/pytest-cov),
[testcontainers](https://github.com/testcontainers/testcontainers-python),
[ruff](https://github.com/astral-sh/ruff),
[greenlet](https://github.com/python-greenlet/greenlet) and
[faker](https://github.com/joke2k/faker) to permit the latest version.
Updates `pytest-asyncio` to 1.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's
releases</a>.</em></p>
<blockquote>
<h2>pytest-asyncio v1.4.0</h2>
<h1><a
href="https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0">1.4.0</a>
- 2026-05-26</h1>
<h2>Deprecated</h2>
<ul>
<li>Overriding the <em>event_loop_policy</em> fixture is deprecated. Use
the <code>pytest_asyncio_loop_factories</code> hook instead. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419">#1419</a>)</li>
</ul>
<h2>Added</h2>
<ul>
<li>
<p>Added the <code>pytest_asyncio_loop_factories</code> hook to
parametrize asyncio tests with custom event loop factories.</p>
<p>The hook returns a mapping of factory names to loop factories, and
<code>pytest.mark.asyncio(loop_factories=[...])</code> selects a subset
of configured factories per test. When a single factory is configured,
test names are unchanged.</p>
<p>Synchronous <code>@pytest_asyncio.fixture</code> functions now see
the correct event loop when custom loop factories are configured, even
when test code disrupts the current event loop (e.g., via
<code>asyncio.run()</code> or
<code>asyncio.set_event_loop(None)</code>). (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164">#1164</a>)</p>
</li>
</ul>
<h2>Changed</h2>
<ul>
<li>Improved the readability of the warning message that is displayed
when <code>asyncio_default_fixture_loop_scope</code> is unset (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298">#1298</a>)</li>
<li>Only import <code>asyncio.AbstractEventLoopPolicy</code> for type
checking to avoid raising
a DeprecationWarning. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394">#1394</a>)</li>
<li>Updated minimum supported pytest version to v8.4.0. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1397">#1397</a>)</li>
</ul>
<h2>Fixed</h2>
<ul>
<li>Fixed a <code>ResourceWarning: unclosed event loop</code> warning
that could occur when a synchronous test called
<code>asyncio.run()</code> or otherwise unset the current event loop
after pytest-asyncio had run an async test or fixture. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/724">#724</a>)</li>
</ul>
<h2>Notes for Downstream Packagers</h2>
<ul>
<li>Added dependency on <code>sphinx-tabs &gt;= 3.5</code> to organize
documentation examples into tabs. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1395">#1395</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/6e14cd2af9292dca1fa2b027a06bbc40b0e0e425"><code>6e14cd2</code></a>
chore: Prepare release of v1.4.0.</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/4b900fb5d0c30949c574e55dd904ee179f858a5e"><code>4b900fb</code></a>
Build(deps): Bump codecov/codecov-action from 6.0.0 to 6.0.1</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/ab9f63245094865c42c940a34af724b0dec1debf"><code>ab9f632</code></a>
Build(deps): Bump zipp from 3.23.1 to 4.1.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/a56fc77ecd59f781d8471b0f6a82bf58e08c95fa"><code>a56fc77</code></a>
Build(deps): Bump hypothesis from 6.152.6 to 6.152.8</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/e8bae9bc1f197731fc1a210c0da557af7b698e6d"><code>e8bae9b</code></a>
Build(deps): Bump requests from 2.34.0 to 2.34.2</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/fc433402c570fd36a7a227ef4bc3abd4579299de"><code>fc43340</code></a>
Build(deps): Bump idna from 3.14 to 3.15</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/762eaf5033b798b965c92afdbb2cebefa8fc3a8b"><code>762eaf5</code></a>
Build(deps): Bump jaraco-functools from 4.4.0 to 4.5.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/b62e2228c80070977baf6b77ba89d5c148af920f"><code>b62e222</code></a>
Build(deps): Bump click from 8.3.3 to 8.4.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/919044700627889d25ca63b6e7a3bc785f3137eb"><code>9190447</code></a>
Build(deps): Bump pydantic from 2.13.3 to 2.13.4</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/82a393c5e31b6ebbbd8ec2a8dafc5f35b9cf1236"><code>82a393c</code></a>
ci: Remove unnecessary debug output.</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest-asyncio/compare/v0.25.0...v1.4.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `pytest-cov` from 5.0.0 to 7.1.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst">pytest-cov's
changelog</a>.</em></p>
<blockquote>
<h2>7.1.0 (2026-03-21)</h2>
<ul>
<li>
<p>Fixed total coverage computation to always be consistent, regardless
of reporting settings.
Previously some reports could produce different total counts, and
consequently can make --cov-fail-under behave different depending on
reporting options.
See <code>[#641](https://github.com/pytest-dev/pytest-cov/issues/641)
&lt;https://github.com/pytest-dev/pytest-cov/issues/641&gt;</code>_.</p>
</li>
<li>
<p>Improve handling of ResourceWarning from sqlite3.</p>
<p>The plugin adds warning filter for sqlite3
<code>ResourceWarning</code> unclosed database (since 6.2.0).
It checks if there is already existing plugin for this message by
comparing filter regular expression.
When filter is specified on command line the message is escaped and does
not match an expected message.
A check for an escaped regular expression is added to handle this
case.</p>
<p>With this fix one can suppress <code>ResourceWarning</code> from
sqlite3 from command line::</p>
<p>pytest -W &quot;ignore:unclosed database in &lt;sqlite3.Connection
object at:ResourceWarning&quot; ...</p>
</li>
<li>
<p>Various improvements to documentation.
Contributed by Art Pelling in
<code>[#718](https://github.com/pytest-dev/pytest-cov/issues/718)
&lt;https://github.com/pytest-dev/pytest-cov/pull/718&gt;</code>_ and
&quot;vivodi&quot; in
<code>[#738](https://github.com/pytest-dev/pytest-cov/issues/738)
&lt;https://github.com/pytest-dev/pytest-cov/pull/738&gt;</code><em>.
Also closed
<code>[#736](https://github.com/pytest-dev/pytest-cov/issues/736)
&lt;https://github.com/pytest-dev/pytest-cov/issues/736&gt;</code></em>.</p>
</li>
<li>
<p>Fixed some assertions in tests.
Contributed by in Markéta Machová in
<code>[#722](https://github.com/pytest-dev/pytest-cov/issues/722)
&lt;https://github.com/pytest-dev/pytest-cov/pull/722&gt;</code>_.</p>
</li>
<li>
<p>Removed unnecessary coverage configuration copying (meant as a backup
because reporting commands had configuration side-effects before
coverage 5.0).</p>
</li>
</ul>
<h2>7.0.0 (2025-09-09)</h2>
<ul>
<li>
<p>Dropped support for subprocesses measurement.</p>
<p>It was a feature added long time ago when coverage lacked a nice way
to measure subprocesses created in tests.
It relied on a <code>.pth</code> file, there was no way to opt-out and
it created bad interations
with <code>coverage's new patch system
&lt;https://coverage.readthedocs.io/en/latest/config.html#run-patch&gt;</code>_
added
in <code>7.10
&lt;https://coverage.readthedocs.io/en/7.10.6/changes.html#version-7-10-0-2025-07-24&gt;</code>_.</p>
<p>To migrate to this release you might need to enable the suprocess
patch, example for <code>.coveragerc</code>:</p>
<p>.. code-block:: ini</p>
<p>[run]
patch = subprocess</p>
<p>This release also requires at least coverage 7.10.6.</p>
</li>
<li>
<p>Switched packaging to have metadata completely in
<code>pyproject.toml</code> and use <code>hatchling
&lt;https://pypi.org/project/hatchling/&gt;</code>_ for
building.
Contributed by Ofek Lev in
<code>[#551](https://github.com/pytest-dev/pytest-cov/issues/551)
&lt;https://github.com/pytest-dev/pytest-cov/pull/551&gt;</code>_
with some extras in
<code>[#716](https://github.com/pytest-dev/pytest-cov/issues/716)
&lt;https://github.com/pytest-dev/pytest-cov/pull/716&gt;</code>_.</p>
</li>
<li>
<p>Removed some not really necessary testing deps like
<code>six</code>.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622"><code>66c8a52</code></a>
Bump version: 7.0.0 → 7.1.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e"><code>f707662</code></a>
Make the examples use pypy 3.11.</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672"><code>6049a78</code></a>
Make context test use the old ctracer (seems the new sysmon tracer
behaves di...</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b"><code>8ebf20b</code></a>
Update changelog.</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9"><code>861d30e</code></a>
Remove the backup context manager - shouldn't be needed since coverage
5.0, ...</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f"><code>fd4c956</code></a>
Pass the precision on the nulled total (seems that there's some caching
goion...</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6"><code>78c9c4e</code></a>
Only run the 3.9 on older deps.</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc"><code>4849a92</code></a>
Punctuation.</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7"><code>197c35e</code></a>
Update changelog and hopefully I don't forget to publish release again
:))</li>
<li><a
href="https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f"><code>14dc1c9</code></a>
Update examples to use 3.11 and make the adhoc layout example look a bit
more...</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest-cov/compare/v5.0.0...v7.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `testcontainers` from 4.8.2 to 4.14.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/testcontainers/testcontainers-python/releases">testcontainers's
releases</a>.</em></p>
<blockquote>
<h2>testcontainers: v4.14.2</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2">4.14.2</a>
(2026-03-18)</h2>
<h3>Features</h3>
<ul>
<li><strong>kafka:</strong> allow configurable listener name and
security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3">44dd40b</a>)</li>
</ul>
<h2>testcontainers: v4.14.1</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1">4.14.1</a>
(2026-01-31)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Allow passing in a custom wait strategy string in MySQL, Cassandra,
Kafka and Trino (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/953">#953</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b">be4d09e</a>)</li>
<li><strong>compose:</strong> expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f">183e1aa</a>)</li>
<li><strong>core:</strong> bring back dind tests (<a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5">7337266</a>)</li>
<li><strong>core:</strong> Use WaitStrategy internally for wait_for
function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e">e323317</a>)</li>
<li><strong>nats:</strong> add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4">49c9af8</a>)</li>
<li>Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8">f690e88</a>),
closes <a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/860">#860</a></li>
</ul>
<h2>testcontainers: v4.14.0</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0">4.14.0</a>
(2026-01-07)</h2>
<h3>Features</h3>
<ul>
<li>Add ExecWaitStrategy and migrate Postgres from deprecated decorator
(<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/935">#935</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06">2d9eee3</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>add ruff to deps (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/919">#919</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d">5853d32</a>)</li>
<li><strong>cassandra,mysqk,kafka:</strong> Use wait strategy instead of
deprecated wait_for_logs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/945">#945</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9">b7791b9</a>)</li>
<li><strong>core:</strong> recreate poetry lockfile with latest versions
of libraries (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/946">#946</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03">9a97385</a>)</li>
<li><strong>elasticsearch:</strong> Use wait strategy instead of
deprecated decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/915">#915</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627">c785ecd</a>)</li>
<li><strong>minio:</strong> minio client requires kwargs now (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/933">#933</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62">37f5902</a>)</li>
<li><strong>minio:</strong> Use wait strategy instead of deprecated
decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/899">#899</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3">febccb7</a>)</li>
</ul>
<h2>testcontainers: v4.13.3</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3">4.13.3</a>
(2025-11-14)</h2>
<h3>python 3.14 is now supported!</h3>
<h3>Bug Fixes</h3>
<ul>
<li>do not require consumer of library to state nonsupport for py4 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/912">#912</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c">f608df9</a>)</li>
<li><strong>docs:</strong> Update dependencies for docs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/900">#900</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c">3f66784</a>)</li>
</ul>
<h2>testcontainers: v4.13.2</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/testcontainers/testcontainers-python/blob/main/CHANGELOG.md">testcontainers's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2">4.14.2</a>
(2026-03-18)</h2>
<h3>Features</h3>
<ul>
<li><strong>kafka:</strong> allow configurable listener name and
security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3">44dd40b</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1">4.14.1</a>
(2026-01-31)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Allow passing in a custom wait strategy string in MySQL, Cassandra,
Kafka and Trino (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/953">#953</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b">be4d09e</a>)</li>
<li><strong>compose:</strong> expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f">183e1aa</a>)</li>
<li><strong>core:</strong> bring back dind tests (<a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5">7337266</a>)</li>
<li><strong>core:</strong> Use WaitStrategy internally for wait_for
function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e">e323317</a>)</li>
<li><strong>nats:</strong> add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4">49c9af8</a>)</li>
<li>Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8">f690e88</a>),
closes <a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/860">#860</a></li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0">4.14.0</a>
(2026-01-07)</h2>
<h3>Features</h3>
<ul>
<li>Add ExecWaitStrategy and migrate Postgres from deprecated decorator
(<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/935">#935</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06">2d9eee3</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>add ruff to deps (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/919">#919</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d">5853d32</a>)</li>
<li><strong>cassandra,mysqk,kafka:</strong> Use wait strategy instead of
deprecated wait_for_logs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/945">#945</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9">b7791b9</a>)</li>
<li><strong>core:</strong> recreate poetry lockfile with latest versions
of libraries (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/946">#946</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03">9a97385</a>)</li>
<li><strong>elasticsearch:</strong> Use wait strategy instead of
deprecated decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/915">#915</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627">c785ecd</a>)</li>
<li><strong>minio:</strong> minio client requires kwargs now (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/933">#933</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62">37f5902</a>)</li>
<li><strong>minio:</strong> Use wait strategy instead of deprecated
decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/899">#899</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3">febccb7</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3">4.13.3</a>
(2025-11-14)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>do not require consumer of library to state nonsupport for py4 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/912">#912</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c">f608df9</a>)</li>
<li><strong>docs:</strong> Update dependencies for docs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/900">#900</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c">3f66784</a>)</li>
<li>support python 3.14!!! - (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/917">#917</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6">f76e982</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2">4.13.2</a>
(2025-10-07)</h2>
<h3>Bug Fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377"><code>5c67efb</code></a>
chore(main): release testcontainers 4.14.2 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/969">#969</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3"><code>44dd40b</code></a>
feat(kafka): allow configurable listener name and security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a"><code>a78475a</code></a>
chore(main): Migrate to uv (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/960">#960</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c"><code>17eb0b0</code></a>
chore(main): release testcontainers 4.14.1 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/954">#954</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8"><code>f690e88</code></a>
fix: Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a"><code>15e99ee</code></a>
add modifications</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5"><code>7337266</code></a>
fix(core): bring back dind tests</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4"><code>49c9af8</code></a>
fix(nats): add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e"><code>e323317</code></a>
fix(core): Use WaitStrategy internally for wait_for function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f"><code>183e1aa</code></a>
fix(compose): expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.8.2...testcontainers-v4.14.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.8.0 to 0.15.15
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<h2>Release Notes</h2>
<p>Released on 2026-05-28.</p>
<h3>Preview features</h3>
<ul>
<li>Fix Markdown closing fence handling (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li>
<li>[<code>pyflakes</code>] Report duplicate imports in
<code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pyflakes</code>] Treat function-scope bare annotations as
locals per PEP 526 (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li>
<li>Reduce memory usage by dropping token-excess capacity and improve
performance by approximating the initial tokens <code>Vec</code> size
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li>
<li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix <code>line-length</code> example for <code>--config</code>
option (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li>
<li>[<code>flake8-comprehensions</code>] Document
<code>RecursionError</code> edge case in <code>__len__</code>
(<code>C416</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li>
<li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li>
<li>[<code>pyupgrade</code>] Clarify fix safety docs
(<code>UP007</code>, <code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li>
<li>[<code>refurb</code>] Document <code>FURB192</code> exception change
for empty sequences (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li>
<li>[<code>ruff</code>] Document false negative for user-defined types
(<code>RUF013</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix formatting of lambdas nested within f-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Return code action for <code>codeAction/resolve</code> requests that
contain no or no valid URL (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/fallintoplace"><code>@​fallintoplace</code></a></li>
<li><a
href="https://github.com/martin-schlossarek"><code>@​martin-schlossarek</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<p>Released on 2026-05-28.</p>
<h3>Preview features</h3>
<ul>
<li>Fix Markdown closing fence handling (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li>
<li>[<code>pyflakes</code>] Report duplicate imports in
<code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pyflakes</code>] Treat function-scope bare annotations as
locals per PEP 526 (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li>
<li>Reduce memory usage by dropping token-excess capacity and improve
performance by approximating the initial tokens <code>Vec</code> size
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li>
<li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix <code>line-length</code> example for <code>--config</code>
option (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li>
<li>[<code>flake8-comprehensions</code>] Document
<code>RecursionError</code> edge case in <code>__len__</code>
(<code>C416</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li>
<li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li>
<li>[<code>pyupgrade</code>] Clarify fix safety docs
(<code>UP007</code>, <code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li>
<li>[<code>refurb</code>] Document <code>FURB192</code> exception change
for empty sequences (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li>
<li>[<code>ruff</code>] Document false negative for user-defined types
(<code>RUF013</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix formatting of lambdas nested within f-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Return code action for <code>codeAction/resolve</code> requests that
contain no or no valid URL (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/fallintoplace"><code>@​fallintoplace</code></a></li>
<li><a
href="https://github.com/martin-schlossarek"><code>@​martin-schlossarek</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
<li><a
href="https://github.com/Ruchir28"><code>@​Ruchir28</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/db5aa0a5f1b92cb91d910bf0866a967554dd94f5"><code>db5aa0a</code></a>
Bump 0.15.15 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25431">#25431</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/366fe21ba369ccdd01eb99c1043c9a969c99230b"><code>366fe21</code></a>
[ty] Improve diagnostics for syntax errors in forward annotations (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25158">#25158</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e2e1e647d182b8567845039c9a65fb0608a4dcfc"><code>e2e1e64</code></a>
[ty] Remove excess capacity from more Salsa cached collections (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25411">#25411</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/1bd77e1646f2213d86b8da215f08279187867d72"><code>1bd77e1</code></a>
[ty] Use diagnostic message as tie breaker when sorting (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25424">#25424</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/7e1bc1e75f15795f12c846294b13df4535f2abbf"><code>7e1bc1e</code></a>
Add agent skills for working on ty (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25422">#25422</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/574e10752f8cfa9e0cdbe3b01e96c4380950469b"><code>574e107</code></a>
Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25415">#25415</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/4a7ca062fccd80443a43aa61e5dc7e5858e88dc1"><code>4a7ca06</code></a>
[ty] Display docs for matching parameter when hovering over the name of
an ar...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/54327092dbfe455040690d63bb1e5e4b5f551239"><code>5432709</code></a>
Refine a few agents instructions (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25423">#25423</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/3cb09eba689ebb49e799131092121928cc789c18"><code>3cb09eb</code></a>
[ty] Support <code>typing.TypeForm</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25334">#25334</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/c8cd59f189f2b6f55d542b29bddb953622add6fc"><code>c8cd59f</code></a>
[ty] Infer class attributes assigned by metaclass initialization (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25342">#25342</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.8.0...0.15.15">compare
view</a></li>
</ul>
</details>
<br />

Updates `greenlet` from 3.1.1 to 3.5.1
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>3.5.1 (2026-05-20)</h1>
<ul>
<li>Add preliminary support for Python 3.15b1. This has not been
reviewed by CPython core developers, but all tests pass. Binary
wheels of this version won't work on earlier Python 3.15 builds and
may not work on later 3.15 builds.</li>
<li>Fix the discrepancy in the way the two <code>getcurrent</code> APIs
behave
during greenlet teardown. One API (the C API used by, e.g., gevent)
raised a
<code>RuntimeError</code>; the other (the Python
<code>greenlet.getcurrent</code> API)
returned <code>None</code>. This second way is incompatible with
greenlet's type
annotations, so <code>greenlet.getcurrent</code> now raises a
<code>RuntimeError</code> as well.</li>
</ul>
<h1>3.5.0 (2026-04-27)</h1>
<ul>
<li>
<p>Remove the <code>atexit</code> callback. This callback caused
greenlet APIs
to become unavailable far too soon during interpreter shutdown. Now
they remain available while all <code>atexit</code> callbacks run.
Sometime
after <code>Py_IsFinalizing</code> becomes true, they may begin
misbehaving.
Because the order in which C extensions are finalized is undefined,
C extensions that are sensitive to this need to check the results of
that function before invoking greenlet APIs. As a convenience,
<code>PyGreenlet_GetCurrent</code> sets an exception and returns
<code>NULL</code>
when this happens (and <code>greenlet.getcurrent</code> begins returning
<code>None</code>); other greenlet C API functions have undefined
behaviour.
Methods invoked directly on pre-existing <code>greenlet.greenlet</code>
objects will continue to function at least until the greenlet C
extension has been garbage collected and finalized.</p>
<p>See <code>PR 508
&lt;https://github.com/python-greenlet/greenlet/pull/508&gt;</code>_.</p>
</li>
</ul>
<h1>3.4.0 (2026-04-08)</h1>
<ul>
<li>
<p>Publish binary wheels for RiscV 64.</p>
</li>
<li>
<p>Fix multiple rare crash paths during interpreter shutdown.</p>
<p>Note that this now relies on the <code>atexit</code> module, and
introduces
subtle API changes during interpreter shutdown (for example,
<code>getcurrent</code> is no longer available once the
<code>atexit</code> callback fires).</p>
<p>See <code>PR
[#499](https://github.com/python-greenlet/greenlet/issues/499)
&lt;https://github.com/python-greenlet/greenlet/pull/499&gt;</code>_ by
Nicolas
Bouvrette.</p>
</li>
<li>
<p>Address the results of an automated code audit performed by
Daniel Diniz. This includes several minor correctness changes that</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/b5e5fc43a51c27ecffa1b1c7107c91464a6b26e2"><code>b5e5fc4</code></a>
Preparing release 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c8e177413d34bc36ed56d2c185c232ab0538be90"><code>c8e1774</code></a>
Tweak wording in CHANGES about greenlet.getcurrent.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/7fb10c570f37b3eb4c8909c6164fdfac3269ddb6"><code>7fb10c5</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/510">#510</a>
from python-greenlet/315</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/9718ce5a23ea3360232b78a806a837d6c3d6183d"><code>9718ce5</code></a>
Add Py 3.15; make both API versions of getcurrent() consistent in
raising Run...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/276e08afc4ddba87e4366390e3eeaecd61ccb3b8"><code>276e08a</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/509">#509</a>
from python-greenlet/dependabot/github_actions/github...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/32b0ad69828eb69d879c70dbee948e685268901b"><code>32b0ad6</code></a>
Bump pypa/gh-action-pypi-publish in the github-actions group</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/173b692dc84288ef41572612ac744754f98eaa90"><code>173b692</code></a>
Back to development: 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c7acc72000572811d6462ebe01733a974f194990"><code>c7acc72</code></a>
Preparing release 3.5.0</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/d08f99bf40801c5d57af6e13631c0ba68300ecf7"><code>d08f99b</code></a>
CHANGES: Update link from <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/507">#507</a>
to more full description in <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/fd3391e33cedc7a17a86059f18dfbec2b3a320bd"><code>fd3391e</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>
from python-greenlet/issue507-remove-atexit</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/3.1.1...3.5.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `faker` from 25.8.0 to 40.21.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/joke2k/faker/releases">faker's
releases</a>.</em></p>
<blockquote>
<h2>Release v40.21.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.21.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.20.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.20.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.19.1</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.19.1/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.19.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.19.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.18.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.18.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.17.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.17.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.16.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.16.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.15.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.14.1</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.14.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.13.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.12.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.11.1</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.11.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.11.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.10.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.10.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.9.0</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.9.0/CHANGELOG.md">CHANGELOG.md</a>.</p>
<h2>Release v40.8.1</h2>
<p>See <a
href="https://github.com/joke2k/faker/blob/refs/tags/v40.8.1/CHANGELOG.md">CHANGELOG.md</a>.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/joke2k/faker/blob/master/CHANGELOG.md">faker's
changelog</a>.</em></p>
<blockquote>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.20.0...v40.21.0">v40.21.0
- 2026-06-02</a></h3>
<ul>
<li>Add banks list for <code>en_GB</code> locale (<a
href="https://redirect.github.com/joke2k/faker/issues/2363">#2363</a>).
Thanks <a
href="https://github.com/osolomientsev"><code>@​osolomientsev</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.19.1...v40.20.0">v40.20.0
- 2026-06-01</a></h3>
<ul>
<li>Add <code>pan</code> and <code>gstin</code> generators to
<code>en_IN</code> SSN provider (<a
href="https://redirect.github.com/joke2k/faker/issues/2357">#2357</a>).
Thanks <a
href="https://github.com/RedZapdos123"><code>@​RedZapdos123</code></a>.</li>
<li>Improve barcode provider test coverage (<a
href="https://redirect.github.com/joke2k/faker/issues/2382">#2382</a>).
Thanks <a
href="https://github.com/lphuc2250gma"><code>@​lphuc2250gma</code></a>.</li>
<li>Bump liskin/gh-problem-matcher-wrap from 3 to 4 (<a
href="https://redirect.github.com/joke2k/faker/issues/2381">#2381</a>).
Thanks <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot].</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.19.0...v40.19.1">v40.19.1
- 2026-05-22</a></h3>
<ul>
<li>Fix shared state mutation in <code>en_IN</code>
<code>pincode_in_state</code> (<a
href="https://redirect.github.com/joke2k/faker/issues/2369">#2369</a>).
Thanks <a
href="https://github.com/RedZapdos123"><code>@​RedZapdos123</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.18.0...v40.19.0">v40.19.0
- 2026-05-22</a></h3>
<ul>
<li>Add <code>uuid1</code> and <code>uuid7</code> providers to
<code>misc</code> provider (<a
href="https://redirect.github.com/joke2k/faker/issues/2344">#2344</a>).
Thanks <a
href="https://github.com/Krishnachaitanyakc"><code>@​Krishnachaitanyakc</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.17.0...v40.18.0">v40.18.0
- 2026-05-14</a></h3>
<ul>
<li>Add automotive providers for <code>ar_DZ</code> and
<code>fr_DZ</code> locales. Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add <code>phone_number</code> provider for <code>ar_DZ</code> and
<code>fr_DZ</code> locales. Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.16.0...v40.17.0">v40.17.0
- 2026-05-14</a></h3>
<ul>
<li>Add <code>am_ET</code> <code>phone_number</code> provider for
Ethiopia. Thanks <a
href="https://github.com/jasur-py"><code>@​jasur-py</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.15.0...v40.16.0">v40.16.0
- 2026-05-14</a></h3>
<ul>
<li>Fix duplicate phone number prefix <code>145</code> in
<code>zh_CN</code> locale. Thanks <a
href="https://github.com/r266-tec"><code>@​r266-tec</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0">v40.15.0
- 2026-04-17</a></h3>
<ul>
<li>Add job providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2352">#2352</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add company providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2351">#2351</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add geo providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2350">#2350</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add currency providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2349">#2349</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add <code>date_time</code> provider for <code>ar_DZ</code> locale
(<a
href="https://redirect.github.com/joke2k/faker/issues/2348">#2348</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
<li>Add ssn providers for <code>ar_DZ</code> and <code>fr_DZ</code>
locales (<a
href="https://redirect.github.com/joke2k/faker/issues/2347">#2347</a>).
Thanks <a
href="https://github.com/othmane099"><code>@​othmane099</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1">v40.14.1
- 2026-04-17</a></h3>
<ul>
<li>Fix <code>UnicodeEncodeError</code> in CLI docs on non-UTF consoles
(<a
href="https://redirect.github.com/joke2k/faker/issues/2362">#2362</a>).
Thanks <a
href="https://github.com/RedZapdos123"><code>@​RedZapdos123</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0">v40.14.0
- 2026-04-17</a></h3>
<ul>
<li>Fix: update placekitten URL to placekittens (<a
href="https://redirect.github.com/joke2k/faker/issues/2364">#2364</a>).
Thanks <a href="https://github.com/reory"><code>@​reory</code></a>.</li>
</ul>
<h3><a
href="https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0">v40.13.0
- 2026-04-06</a></h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/joke2k/faker/commit/8b06111fbda82a8e84707f86f5d77973c76d836d"><code>8b06111</code></a>
Bump version: 40.20.0 → 40.21.0</li>
<li><a
href="https://github.com/joke2k/faker/commit/8ec76fb23dfbcecefe6b7ce4f27c47b224376923"><code>8ec76fb</code></a>
📝 Update CHANGELOG.md</li>
<li><a
href="https://github.com/joke2k/faker/commit/fbd8c03a5de255bf288a059dddf6c1f979dc4d8e"><code>fbd8c03</code></a>
add banks list for <code>en_GB</code> locale (<a
href="https://redirect.github.com/joke2k/faker/issues/2363">#2363</a>)</li>
<li><a
href="https://github.com/joke2k/faker/commit/3672645c6404514fd11834161eaec481985895f0"><code>3672645</code></a>
Bump version: 40.19.1 → 40.20.0</li>
<li><a
href="https://github.com/joke2k/faker/commit/b369e13f58c9fe975023cb47e61b309f5d7b8801"><code>b369e13</code></a>
📝 Update CHANGELOG.md</li>
<li><a
href="https://github.com/joke2k/faker/commit/7ec6acd1eabe3f98446cf2f81ec424de95d993b6"><code>7ec6acd</code></a>
chore: improve faker maintenance path (<a
href="https://redirect.github.com/joke2k/faker/issues/2382">#2382</a>)</li>
<li><a
href="https://github.com/joke2k/faker/commit/0535f124612375e1faf04bb64eb9b68ae48bf536"><code>0535f12</code></a>
Bump liskin/gh-problem-matcher-wrap from 3 to 4 (<a
href="https://redirect.github.com/joke2k/faker/issues/2381">#2381</a>)</li>
<li><a
href="https://github.com/joke2k/faker/commit/0bed3fc8b060709bad596532e4c35fef3dd483c1"><code>0bed3fc</code></a>
Add <code>pan</code> and <code>gstin</code> generators to
<code>en_IN</code> SSN provider (<a
href="https://redirect.github.com/joke2k/faker/issues/2357">#2357</a>)</li>
<li><a
href="https://github.com/joke2k/faker/commit/3e9b7b0f47fbea4b2ebf8d33678da653d5a7ed74"><code>3e9b7b0</code></a>
Bump version: 40.19.0 → 40.19.1</li>
<li><a
href="https://github.com/joke2k/faker/commit/fea051597658968d2f096a2af16a67afcd6b6bd5"><code>fea0515</code></a>
📝 Update CHANGELOG.md</li>
<li>Additional commits viewable in <a
href="https://github.com/joke2k/faker/compare/v25.8.0...v40.21.0">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Onegaishimas pushed a commit to Onegaishimas/wasat that referenced this pull request Jun 4, 2026
…ith 7 updates (#466)

[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Updates the requirements on
[pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio),
[pytest-mock](https://github.com/pytest-dev/pytest-mock),
[testcontainers](https://github.com/testcontainers/testcontainers-python),
[mypy](https://github.com/python/mypy),
[ruff](https://github.com/astral-sh/ruff),
[pact-python](https://github.com/pact-foundation/pact-python) and
[greenlet](https://github.com/python-greenlet/greenlet) to permit the
latest version.
Updates `pytest-asyncio` to 1.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's
releases</a>.</em></p>
<blockquote>
<h2>pytest-asyncio v1.4.0</h2>
<h1><a
href="https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0">1.4.0</a>
- 2026-05-26</h1>
<h2>Deprecated</h2>
<ul>
<li>Overriding the <em>event_loop_policy</em> fixture is deprecated. Use
the <code>pytest_asyncio_loop_factories</code> hook instead. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419">#1419</a>)</li>
</ul>
<h2>Added</h2>
<ul>
<li>
<p>Added the <code>pytest_asyncio_loop_factories</code> hook to
parametrize asyncio tests with custom event loop factories.</p>
<p>The hook returns a mapping of factory names to loop factories, and
<code>pytest.mark.asyncio(loop_factories=[...])</code> selects a subset
of configured factories per test. When a single factory is configured,
test names are unchanged.</p>
<p>Synchronous <code>@pytest_asyncio.fixture</code> functions now see
the correct event loop when custom loop factories are configured, even
when test code disrupts the current event loop (e.g., via
<code>asyncio.run()</code> or
<code>asyncio.set_event_loop(None)</code>). (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164">#1164</a>)</p>
</li>
</ul>
<h2>Changed</h2>
<ul>
<li>Improved the readability of the warning message that is displayed
when <code>asyncio_default_fixture_loop_scope</code> is unset (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298">#1298</a>)</li>
<li>Only import <code>asyncio.AbstractEventLoopPolicy</code> for type
checking to avoid raising
a DeprecationWarning. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394">#1394</a>)</li>
<li>Updated minimum supported pytest version to v8.4.0. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1397">#1397</a>)</li>
</ul>
<h2>Fixed</h2>
<ul>
<li>Fixed a <code>ResourceWarning: unclosed event loop</code> warning
that could occur when a synchronous test called
<code>asyncio.run()</code> or otherwise unset the current event loop
after pytest-asyncio had run an async test or fixture. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/724">#724</a>)</li>
</ul>
<h2>Notes for Downstream Packagers</h2>
<ul>
<li>Added dependency on <code>sphinx-tabs &gt;= 3.5</code> to organize
documentation examples into tabs. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1395">#1395</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/6e14cd2af9292dca1fa2b027a06bbc40b0e0e425"><code>6e14cd2</code></a>
chore: Prepare release of v1.4.0.</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/4b900fb5d0c30949c574e55dd904ee179f858a5e"><code>4b900fb</code></a>
Build(deps): Bump codecov/codecov-action from 6.0.0 to 6.0.1</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/ab9f63245094865c42c940a34af724b0dec1debf"><code>ab9f632</code></a>
Build(deps): Bump zipp from 3.23.1 to 4.1.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/a56fc77ecd59f781d8471b0f6a82bf58e08c95fa"><code>a56fc77</code></a>
Build(deps): Bump hypothesis from 6.152.6 to 6.152.8</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/e8bae9bc1f197731fc1a210c0da557af7b698e6d"><code>e8bae9b</code></a>
Build(deps): Bump requests from 2.34.0 to 2.34.2</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/fc433402c570fd36a7a227ef4bc3abd4579299de"><code>fc43340</code></a>
Build(deps): Bump idna from 3.14 to 3.15</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/762eaf5033b798b965c92afdbb2cebefa8fc3a8b"><code>762eaf5</code></a>
Build(deps): Bump jaraco-functools from 4.4.0 to 4.5.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/b62e2228c80070977baf6b77ba89d5c148af920f"><code>b62e222</code></a>
Build(deps): Bump click from 8.3.3 to 8.4.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/919044700627889d25ca63b6e7a3bc785f3137eb"><code>9190447</code></a>
Build(deps): Bump pydantic from 2.13.3 to 2.13.4</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/82a393c5e31b6ebbbd8ec2a8dafc5f35b9cf1236"><code>82a393c</code></a>
ci: Remove unnecessary debug output.</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest-asyncio/compare/v0.25.0...v1.4.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `pytest-mock` from 3.14.0 to 3.15.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-mock/releases">pytest-mock's
releases</a>.</em></p>
<blockquote>
<h2>v3.15.1</h2>
<p><em>2025-09-16</em></p>
<ul>
<li><a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/529">#529</a>:
Fixed <code>itertools._tee object has no attribute error</code> -- now
<code>duplicate_iterators=True</code> must be passed to
<code>mocker.spy</code> to duplicate iterators.</li>
</ul>
<h2>v3.15.0</h2>
<p><em>2025-09-04</em></p>
<ul>
<li>Python 3.8 (EOL) is no longer supported.</li>
<li><a
href="https://redirect.github.com/pytest-dev/pytest-mock/pull/524">#524</a>:
Added <code>spy_return_iter</code> to <code>mocker.spy</code>, which
contains a duplicate of the return value of the spied method if it is an
<code>Iterator</code>.</li>
</ul>
<h2>v3.14.1</h2>
<ul>
<li><a
href="https://redirect.github.com/pytest-dev/pytest-mock/pull/503">#503</a>:
Python 3.14 is now officially supported.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst">pytest-mock's
changelog</a>.</em></p>
<blockquote>
<h2>3.15.1</h2>
<p><em>2025-09-16</em></p>
<ul>
<li><code>[#529](https://github.com/pytest-dev/pytest-mock/issues/529)
&lt;https://github.com/pytest-dev/pytest-mock/issues/529&gt;</code>_:
Fixed <code>itertools._tee object has no attribute error</code> -- now
<code>duplicate_iterators=True</code> must be passed to
<code>mocker.spy</code> to duplicate iterators.</li>
</ul>
<h2>3.15.0</h2>
<p><em>2025-09-04</em></p>
<ul>
<li>Python 3.8 (EOL) is no longer supported.</li>
<li><code>[#524](https://github.com/pytest-dev/pytest-mock/issues/524)
&lt;https://github.com/pytest-dev/pytest-mock/pull/524&gt;</code>_:
Added <code>spy_return_iter</code> to <code>mocker.spy</code>, which
contains a duplicate of the return value of the spied method if it is an
<code>Iterator</code>.</li>
</ul>
<h2>3.14.1 (2025-05-26)</h2>
<ul>
<li><code>[#503](https://github.com/pytest-dev/pytest-mock/issues/503)
&lt;https://github.com/pytest-dev/pytest-mock/pull/503&gt;</code>_:
Python 3.14 is now officially supported.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/e1b5c62a38c5a05cae614aef3847f240ba50d269"><code>e1b5c62</code></a>
Release 3.15.1</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/184eb190d6be417f5f33727bcbc9704909479498"><code>184eb19</code></a>
Set <code>spy_return_iter</code> only when explicitly requested (<a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/537">#537</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/4fa0088a0aa85eefb1313bd97adf43889bf1f647"><code>4fa0088</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/536">#536</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/f5aff33ce71ed4620acc43dc41cb3b198bcf4cb0"><code>f5aff33</code></a>
Fix test failure with pytest 8+ and verbose mode (<a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/535">#535</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/adc41873c9d6aa69b87e3f108c93a29c847869aa"><code>adc4187</code></a>
Bump actions/setup-python from 5 to 6 in the github-actions group (<a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/533">#533</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/95ad5700609aae73c6f767b8cc2ccfb2483e0f5c"><code>95ad570</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/532">#532</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/e696bf02c199b1f7d0c48adb450f40e5a75b699a"><code>e696bf0</code></a>
Fix standalone mock support (<a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/531">#531</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/5b29b03ce9581cfcd867dd6c04a970fb2c861291"><code>5b29b03</code></a>
Fix gen-release-notes script</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/7d22ef4e560351832e60687d8bd15ebe2785ff3b"><code>7d22ef4</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest-mock/issues/528">#528</a>
from pytest-dev/release-3.15.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-mock/commit/90b29f89e2086c139a7b4fea89202faa192ee5a9"><code>90b29f8</code></a>
Update CHANGELOG for 3.15.0</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest-mock/compare/v3.14.0...v3.15.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `testcontainers` from 4.8.2 to 4.14.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/testcontainers/testcontainers-python/releases">testcontainers's
releases</a>.</em></p>
<blockquote>
<h2>testcontainers: v4.14.2</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2">4.14.2</a>
(2026-03-18)</h2>
<h3>Features</h3>
<ul>
<li><strong>kafka:</strong> allow configurable listener name and
security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3">44dd40b</a>)</li>
</ul>
<h2>testcontainers: v4.14.1</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1">4.14.1</a>
(2026-01-31)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Allow passing in a custom wait strategy string in MySQL, Cassandra,
Kafka and Trino (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/953">#953</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b">be4d09e</a>)</li>
<li><strong>compose:</strong> expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f">183e1aa</a>)</li>
<li><strong>core:</strong> bring back dind tests (<a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5">7337266</a>)</li>
<li><strong>core:</strong> Use WaitStrategy internally for wait_for
function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e">e323317</a>)</li>
<li><strong>nats:</strong> add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4">49c9af8</a>)</li>
<li>Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8">f690e88</a>),
closes <a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/860">#860</a></li>
</ul>
<h2>testcontainers: v4.14.0</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0">4.14.0</a>
(2026-01-07)</h2>
<h3>Features</h3>
<ul>
<li>Add ExecWaitStrategy and migrate Postgres from deprecated decorator
(<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/935">#935</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06">2d9eee3</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>add ruff to deps (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/919">#919</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d">5853d32</a>)</li>
<li><strong>cassandra,mysqk,kafka:</strong> Use wait strategy instead of
deprecated wait_for_logs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/945">#945</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9">b7791b9</a>)</li>
<li><strong>core:</strong> recreate poetry lockfile with latest versions
of libraries (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/946">#946</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03">9a97385</a>)</li>
<li><strong>elasticsearch:</strong> Use wait strategy instead of
deprecated decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/915">#915</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627">c785ecd</a>)</li>
<li><strong>minio:</strong> minio client requires kwargs now (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/933">#933</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62">37f5902</a>)</li>
<li><strong>minio:</strong> Use wait strategy instead of deprecated
decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/899">#899</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3">febccb7</a>)</li>
</ul>
<h2>testcontainers: v4.13.3</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3">4.13.3</a>
(2025-11-14)</h2>
<h3>python 3.14 is now supported!</h3>
<h3>Bug Fixes</h3>
<ul>
<li>do not require consumer of library to state nonsupport for py4 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/912">#912</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c">f608df9</a>)</li>
<li><strong>docs:</strong> Update dependencies for docs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/900">#900</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c">3f66784</a>)</li>
</ul>
<h2>testcontainers: v4.13.2</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/testcontainers/testcontainers-python/blob/main/CHANGELOG.md">testcontainers's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2">4.14.2</a>
(2026-03-18)</h2>
<h3>Features</h3>
<ul>
<li><strong>kafka:</strong> allow configurable listener name and
security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3">44dd40b</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1">4.14.1</a>
(2026-01-31)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Allow passing in a custom wait strategy string in MySQL, Cassandra,
Kafka and Trino (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/953">#953</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b">be4d09e</a>)</li>
<li><strong>compose:</strong> expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f">183e1aa</a>)</li>
<li><strong>core:</strong> bring back dind tests (<a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5">7337266</a>)</li>
<li><strong>core:</strong> Use WaitStrategy internally for wait_for
function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e">e323317</a>)</li>
<li><strong>nats:</strong> add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4">49c9af8</a>)</li>
<li>Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8">f690e88</a>),
closes <a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/860">#860</a></li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0">4.14.0</a>
(2026-01-07)</h2>
<h3>Features</h3>
<ul>
<li>Add ExecWaitStrategy and migrate Postgres from deprecated decorator
(<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/935">#935</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06">2d9eee3</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>add ruff to deps (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/919">#919</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d">5853d32</a>)</li>
<li><strong>cassandra,mysqk,kafka:</strong> Use wait strategy instead of
deprecated wait_for_logs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/945">#945</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9">b7791b9</a>)</li>
<li><strong>core:</strong> recreate poetry lockfile with latest versions
of libraries (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/946">#946</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03">9a97385</a>)</li>
<li><strong>elasticsearch:</strong> Use wait strategy instead of
deprecated decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/915">#915</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627">c785ecd</a>)</li>
<li><strong>minio:</strong> minio client requires kwargs now (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/933">#933</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62">37f5902</a>)</li>
<li><strong>minio:</strong> Use wait strategy instead of deprecated
decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/899">#899</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3">febccb7</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3">4.13.3</a>
(2025-11-14)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>do not require consumer of library to state nonsupport for py4 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/912">#912</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c">f608df9</a>)</li>
<li><strong>docs:</strong> Update dependencies for docs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/900">#900</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c">3f66784</a>)</li>
<li>support python 3.14!!! - (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/917">#917</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6">f76e982</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2">4.13.2</a>
(2025-10-07)</h2>
<h3>Bug Fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377"><code>5c67efb</code></a>
chore(main): release testcontainers 4.14.2 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/969">#969</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3"><code>44dd40b</code></a>
feat(kafka): allow configurable listener name and security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a"><code>a78475a</code></a>
chore(main): Migrate to uv (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/960">#960</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c"><code>17eb0b0</code></a>
chore(main): release testcontainers 4.14.1 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/954">#954</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8"><code>f690e88</code></a>
fix: Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a"><code>15e99ee</code></a>
add modifications</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5"><code>7337266</code></a>
fix(core): bring back dind tests</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4"><code>49c9af8</code></a>
fix(nats): add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e"><code>e323317</code></a>
fix(core): Use WaitStrategy internally for wait_for function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f"><code>183e1aa</code></a>
fix(compose): expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.8.2...testcontainers-v4.14.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `mypy` from 1.13.0 to 2.1.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/mypy/blob/master/CHANGELOG.md">mypy's
changelog</a>.</em></p>
<blockquote>
<h1>Mypy Release Notes</h1>
<h2>Next Release</h2>
<h2>Mypy 2.1</h2>
<p>We’ve just uploaded mypy 2.1.0 to the Python Package Index (<a
href="https://pypi.org/project/mypy/">PyPI</a>).
Mypy is a static type checker for Python. This release includes new
features, performance
improvements and bug fixes. You can install it as follows:</p>
<pre><code>python3 -m pip install -U mypy
</code></pre>
<p>You can read the full documentation for this release on <a
href="http://mypy.readthedocs.io">Read the Docs</a>.</p>
<h3>librt.vecs: Fast Growable Array Type for Mypyc</h3>
<p>The new <code>librt.vecs</code> module provides an efficient growable
array type <code>vec</code> that is
optimized for mypyc use. It provides fast, packed arrays with integer
and floating point
value types, which can be <strong>several times faster</strong> than
<code>list</code>, and tens of times faster
than <code>array.array</code> in code compiled using mypyc. It also
supports nested <code>vec</code> objects and
non-value-type items, such as <code>vec[vec[str]]</code>.</p>
<p>Refer to the <a
href="https://mypyc.readthedocs.io/en/latest/librt_vecs.html">documentation</a>
for
the details.</p>
<p>Contributed by Jukka Lehtosalo.</p>
<h3>librt.random: Fast Pseudo-Random Number Generation</h3>
<p>The new <code>librt.random</code> module provides fast pseudo-random
number generation that is
optimized for code compiled using mypyc. It can be 3x to 10x faster than
the stdlib
<code>random</code> module in compiled code.</p>
<p>Refer to the <a
href="https://mypyc.readthedocs.io/en/latest/librt_random.html">documentation</a>
for
the details.</p>
<p>Contributed by Jukka Lehtosalo (PR <a
href="https://redirect.github.com/python/mypy/pull/21433">21433</a>).</p>
<h3>Mypyc Improvements</h3>
<ul>
<li>Enable incremental self-compilation (Vaggelis Danias, PR <a
href="https://redirect.github.com/python/mypy/pull/21369">21369</a>)</li>
<li>Make compilation order with multiple files consistent (Piotr
Sawicki, PR <a
href="https://redirect.github.com/python/mypy/pull/21419">21419</a>)</li>
<li>Fix crash on accessing <code>StopAsyncIteration</code> (Piotr
Sawicki, PR <a
href="https://redirect.github.com/python/mypy/pull/21406">21406</a>)</li>
<li>Fix incremental compilation with <code>separate</code> flag
(Vaggelis Danias, PR <a
href="https://redirect.github.com/python/mypy/pull/21299">21299</a>)</li>
</ul>
<h3>Fixes to Crashes</h3>
<ul>
<li>Fix crash on partial type with <code>--allow-redefinition</code> and
<code>global</code> declaration (Jukka Lehtosalo, PR <a
href="https://redirect.github.com/python/mypy/pull/21428">21428</a>)</li>
<li>Fix broken awaitable generator patching (Ivan Levkivskyi, PR <a
href="https://redirect.github.com/python/mypy/pull/21435">21435</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234"><code>c1c336d</code></a>
Remove +dev from version</li>
<li><a
href="https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7"><code>74df14b</code></a>
Add changelog for mypy 2.1 (<a
href="https://redirect.github.com/python/mypy/issues/21464">#21464</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff"><code>022d9bc</code></a>
Revert &quot;TypeForm: Enable by default (<a
href="https://redirect.github.com/python/mypy/issues/21262">#21262</a>)&quot;</li>
<li><a
href="https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c"><code>8826288</code></a>
[mypyc] Document librt.random (<a
href="https://redirect.github.com/python/mypy/issues/21463">#21463</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96"><code>3f4067b</code></a>
Bump librt version to 0.11.0 (<a
href="https://redirect.github.com/python/mypy/issues/21458">#21458</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e"><code>2b1eb58</code></a>
[mypyc] Enable incremental self-compilation (<a
href="https://redirect.github.com/python/mypy/issues/21369">#21369</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc"><code>8152f4a</code></a>
Respect file config comments for stale modules (<a
href="https://redirect.github.com/python/mypy/issues/21444">#21444</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92"><code>116d60b</code></a>
Fix nondeterminism from nonassociativity of overload joins (<a
href="https://redirect.github.com/python/mypy/issues/21455">#21455</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210"><code>6c4af8e</code></a>
Fix function call message change for small number of args (<a
href="https://redirect.github.com/python/mypy/issues/21432">#21432</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800"><code>4b8fdca</code></a>
[mypyc] Add librt.random module (<a
href="https://redirect.github.com/python/mypy/issues/21433">#21433</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/python/mypy/compare/v1.13.0...v2.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.8.0 to 0.15.15
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<h2>Release Notes</h2>
<p>Released on 2026-05-28.</p>
<h3>Preview features</h3>
<ul>
<li>Fix Markdown closing fence handling (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li>
<li>[<code>pyflakes</code>] Report duplicate imports in
<code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pyflakes</code>] Treat function-scope bare annotations as
locals per PEP 526 (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li>
<li>Reduce memory usage by dropping token-excess capacity and improve
performance by approximating the initial tokens <code>Vec</code> size
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li>
<li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix <code>line-length</code> example for <code>--config</code>
option (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li>
<li>[<code>flake8-comprehensions</code>] Document
<code>RecursionError</code> edge case in <code>__len__</code>
(<code>C416</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li>
<li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li>
<li>[<code>pyupgrade</code>] Clarify fix safety docs
(<code>UP007</code>, <code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li>
<li>[<code>refurb</code>] Document <code>FURB192</code> exception change
for empty sequences (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li>
<li>[<code>ruff</code>] Document false negative for user-defined types
(<code>RUF013</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix formatting of lambdas nested within f-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Return code action for <code>codeAction/resolve</code> requests that
contain no or no valid URL (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/fallintoplace"><code>@​fallintoplace</code></a></li>
<li><a
href="https://github.com/martin-schlossarek"><code>@​martin-schlossarek</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<p>Released on 2026-05-28.</p>
<h3>Preview features</h3>
<ul>
<li>Fix Markdown closing fence handling (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li>
<li>[<code>pyflakes</code>] Report duplicate imports in
<code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pyflakes</code>] Treat function-scope bare annotations as
locals per PEP 526 (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li>
<li>Reduce memory usage by dropping token-excess capacity and improve
performance by approximating the initial tokens <code>Vec</code> size
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li>
<li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix <code>line-length</code> example for <code>--config</code>
option (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li>
<li>[<code>flake8-comprehensions</code>] Document
<code>RecursionError</code> edge case in <code>__len__</code>
(<code>C416</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li>
<li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li>
<li>[<code>pyupgrade</code>] Clarify fix safety docs
(<code>UP007</code>, <code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li>
<li>[<code>refurb</code>] Document <code>FURB192</code> exception change
for empty sequences (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li>
<li>[<code>ruff</code>] Document false negative for user-defined types
(<code>RUF013</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix formatting of lambdas nested within f-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Return code action for <code>codeAction/resolve</code> requests that
contain no or no valid URL (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/fallintoplace"><code>@​fallintoplace</code></a></li>
<li><a
href="https://github.com/martin-schlossarek"><code>@​martin-schlossarek</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
<li><a
href="https://github.com/Ruchir28"><code>@​Ruchir28</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/db5aa0a5f1b92cb91d910bf0866a967554dd94f5"><code>db5aa0a</code></a>
Bump 0.15.15 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25431">#25431</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/366fe21ba369ccdd01eb99c1043c9a969c99230b"><code>366fe21</code></a>
[ty] Improve diagnostics for syntax errors in forward annotations (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25158">#25158</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e2e1e647d182b8567845039c9a65fb0608a4dcfc"><code>e2e1e64</code></a>
[ty] Remove excess capacity from more Salsa cached collections (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25411">#25411</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/1bd77e1646f2213d86b8da215f08279187867d72"><code>1bd77e1</code></a>
[ty] Use diagnostic message as tie breaker when sorting (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25424">#25424</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/7e1bc1e75f15795f12c846294b13df4535f2abbf"><code>7e1bc1e</code></a>
Add agent skills for working on ty (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25422">#25422</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/574e10752f8cfa9e0cdbe3b01e96c4380950469b"><code>574e107</code></a>
Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25415">#25415</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/4a7ca062fccd80443a43aa61e5dc7e5858e88dc1"><code>4a7ca06</code></a>
[ty] Display docs for matching parameter when hovering over the name of
an ar...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/54327092dbfe455040690d63bb1e5e4b5f551239"><code>5432709</code></a>
Refine a few agents instructions (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25423">#25423</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/3cb09eba689ebb49e799131092121928cc789c18"><code>3cb09eb</code></a>
[ty] Support <code>typing.TypeForm</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25334">#25334</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/c8cd59f189f2b6f55d542b29bddb953622add6fc"><code>c8cd59f</code></a>
[ty] Infer class attributes assigned by metaclass initialization (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25342">#25342</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.8.0...0.15.15">compare
view</a></li>
</ul>
</details>
<br />

Updates `pact-python` to 3.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pact-foundation/pact-python/releases">pact-python's
releases</a>.</em></p>
<blockquote>
<h2>pact-python/3.4.0</h2>
<h3>🚀 Features</h3>
<ul>
<li>Add external reference dsl</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/rholshausen"><code>@​rholshausen</code></a></li>
<li><a
href="https://github.com/JP-Ellis"><code>@​JP-Ellis</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pact-foundation/pact-python/blob/main/CHANGELOG.md">pact-python's
changelog</a>.</em></p>
<blockquote>
<h2>[pact-python/3.4.0] <em>2026-05-04</em></h2>
<h3>🚀 Features</h3>
<ul>
<li>Add external reference dsl</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/rholshausen"><code>@​rholshausen</code></a></li>
<li><a
href="https://github.com/JP-Ellis"><code>@​JP-Ellis</code></a></li>
</ul>
<h2>[pact-python/3.3.1] <em>2026-04-22</em></h2>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>Avoid rare port clash</li>
</ul>
<h3>⚙️ Miscellaneous Tasks</h3>
<ul>
<li>Simplify find_free_port</li>
<li>Replace pre-commit with prek</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/JP-Ellis"><code>@​JP-Ellis</code></a></li>
</ul>
<h2>[pact-python/3.3.0] <em>2026-04-17</em></h2>
<h3>🚀 Features</h3>
<ul>
<li>
<p>Add xml matching</p>
<p>A new <code>pact.xml</code> module provides builder functions for
constructing XML request and response bodies with embedded Pact
matchers. Use <code>xml.element()</code> to describe the XML structure
and attach matchers where needed, then wrap the result with
<code>xml.body()</code> before passing it to <code>with_body(...,
content_type=&quot;application/xml&quot;)</code>:</p>
<pre lang="python"><code>from pact import match, xml
<p>response = xml.body(
xml.element(
&quot;user&quot;,
xml.element(&quot;id&quot;, match.int(123)),
xml.element(&quot;name&quot;, match.str(&quot;Alice&quot;)),
)
)
interaction.with_body(response,
content_type=&quot;application/xml&quot;)
</code></pre></p>
<p>Repeating elements are supported via <code>.each(min=1,
examples=2)</code> on any <code>XmlElement</code>. Attributes (including
namespace declarations) can be passed via the <code>attrs</code> keyword
argument.</p>
</li>
<li>
<p>Allow iteration over all interactions</p>
</li>
<li>
<p>Use common <code>PactInteraction</code> type</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/ff3ea64ab25912068fc26dad37cf420048f28bb6"><code>ff3ea64</code></a>
chore(release): pact-python v3.4.0</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/a64c2270749a85fe38769325f498d023f0a53e49"><code>a64c227</code></a>
feat: add external reference dsl</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/440de3e8a88f75a935fdbcf7d28eb5e67d34537b"><code>440de3e</code></a>
chore(release): pact-python-ffi v0.5.4.0</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/329466431f00250e0fd86693fd275caa53bc7152"><code>3294664</code></a>
chore(deps): update taiki-e/install-action action to v2.75.30 (<a
href="https://redirect.github.com/pact-foundation/pact-python/issues/1588">#1588</a>)</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/43b8dc95aa4704ac148df7a731724d9bb9250fcf"><code>43b8dc9</code></a>
chore(deps): update j178/prek-action action to v2.0.3 (<a
href="https://redirect.github.com/pact-foundation/pact-python/issues/1587">#1587</a>)</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/084af65e8f9b5951f6cf4ba1eac7055fbc62a622"><code>084af65</code></a>
chore(deps): update taiki-e/install-action action to v2.75.23 (<a
href="https://redirect.github.com/pact-foundation/pact-python/issues/1585">#1585</a>)</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/d2934b7024781fdf2d10284e08af2d5515a01a25"><code>d2934b7</code></a>
chore(deps): update dependency pathspec to v1.1.1 (<a
href="https://redirect.github.com/pact-foundation/pact-python/issues/1586">#1586</a>)</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/58dcb8d818580084ea7f103d1ac9a72eb389b03c"><code>58dcb8d</code></a>
chore(deps): update python:3.14-slim docker digest to 5b3879b (<a
href="https://redirect.github.com/pact-foundation/pact-python/issues/1582">#1582</a>)</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/f1afa28d7034aa49a7d5b3d81249a44b43f0d6be"><code>f1afa28</code></a>
chore(deps): update dependency ruff to v0.15.12 (<a
href="https://redirect.github.com/pact-foundation/pact-python/issues/1583">#1583</a>)</li>
<li><a
href="https://github.com/pact-foundation/pact-python/commit/14ce0ca91760ed1fa682721a12bb25d1a705c245"><code>14ce0ca</code></a>
chore(deps): update python:3.14-slim docker digest to 3989a23 (<a
href="https://redirect.github.com/pact-foundation/pact-python/issues/1580">#1580</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pact-foundation/pact-python/compare/pact-python/3.0.0...pact-python/3.4.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `greenlet` from 3.1.1 to 3.5.1
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>3.5.1 (2026-05-20)</h1>
<ul>
<li>Add preliminary support for Python 3.15b1. This has not been
reviewed by CPython core developers, but all tests pass. Binary
wheels of this version won't work on earlier Python 3.15 builds and
may not work on later 3.15 builds.</li>
<li>Fix the discrepancy in the way the two <code>getcurrent</code> APIs
behave
during greenlet teardown. One API (the C API used by, e.g., gevent)
raised a
<code>RuntimeError</code>; the other (the Python
<code>greenlet.getcurrent</code> API)
returned <code>None</code>. This second way is incompatible with
greenlet's type
annotations, so <code>greenlet.getcurrent</code> now raises a
<code>RuntimeError</code> as well.</li>
</ul>
<h1>3.5.0 (2026-04-27)</h1>
<ul>
<li>
<p>Remove the <code>atexit</code> callback. This callback caused
greenlet APIs
to become unavailable far too soon during interpreter shutdown. Now
they remain available while all <code>atexit</code> callbacks run.
Sometime
after <code>Py_IsFinalizing</code> becomes true, they may begin
misbehaving.
Because the order in which C extensions are finalized is undefined,
C extensions that are sensitive to this need to check the results of
that function before invoking greenlet APIs. As a convenience,
<code>PyGreenlet_GetCurrent</code> sets an exception and returns
<code>NULL</code>
when this happens (and <code>greenlet.getcurrent</code> begins returning
<code>None</code>); other greenlet C API functions have undefined
behaviour.
Methods invoked directly on pre-existing <code>greenlet.greenlet</code>
objects will continue to function at least until the greenlet C
extension has been garbage collected and finalized.</p>
<p>See <code>PR 508
&lt;https://github.com/python-greenlet/greenlet/pull/508&gt;</code>_.</p>
</li>
</ul>
<h1>3.4.0 (2026-04-08)</h1>
<ul>
<li>
<p>Publish binary wheels for RiscV 64.</p>
</li>
<li>
<p>Fix multiple rare crash paths during interpreter shutdown.</p>
<p>Note that this now relies on the <code>atexit</code> module, and
introduces
subtle API changes during interpreter shutdown (for example,
<code>getcurrent</code> is no longer available once the
<code>atexit</code> callback fires).</p>
<p>See <code>PR
[#499](https://github.com/python-greenlet/greenlet/issues/499)
&lt;https://github.com/python-greenlet/greenlet/pull/499&gt;</code>_ by
Nicolas
Bouvrette.</p>
</li>
<li>
<p>Address the results of an automated code audit performed by
Daniel Diniz. This includes several minor correctness changes that</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/b5e5fc43a51c27ecffa1b1c7107c91464a6b26e2"><code>b5e5fc4</code></a>
Preparing release 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c8e177413d34bc36ed56d2c185c232ab0538be90"><code>c8e1774</code></a>
Tweak wording in CHANGES about greenlet.getcurrent.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/7fb10c570f37b3eb4c8909c6164fdfac3269ddb6"><code>7fb10c5</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/510">#510</a>
from python-greenlet/315</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/9718ce5a23ea3360232b78a806a837d6c3d6183d"><code>9718ce5</code></a>
Add Py 3.15; make both API versions of getcurrent() consistent in
raising Run...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/276e08afc4ddba87e4366390e3eeaecd61ccb3b8"><code>276e08a</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/509">#509</a>
from python-greenlet/dependabot/github_actions/github...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/32b0ad69828eb69d879c70dbee948e685268901b"><code>32b0ad6</code></a>
Bump pypa/gh-action-pypi-publish in the github-actions group</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/173b692dc84288ef41572612ac744754f98eaa90"><code>173b692</code></a>
Back to development: 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c7acc72000572811d6462ebe01733a974f194990"><code>c7acc72</code></a>
Preparing release 3.5.0</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/d08f99bf40801c5d57af6e13631c0ba68300ecf7"><code>d08f99b</code></a>
CHANGES: Update link from <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/507">#507</a>
to more full description in <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/fd3391e33cedc7a17a86059f18dfbec2b3a320bd"><code>fd3391e</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>
from python-greenlet/issue507-remove-atexit</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/3.1.1...3.5.1">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Onegaishimas pushed a commit to Onegaishimas/wasat that referenced this pull request Jun 4, 2026
…ith 5 updates (#476)

[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Updates the requirements on
[pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio),
[testcontainers](https://github.com/testcontainers/testcontainers-python),
[mypy](https://github.com/python/mypy),
[ruff](https://github.com/astral-sh/ruff) and
[greenlet](https://github.com/python-greenlet/greenlet) to permit the
latest version.
Updates `pytest-asyncio` to 1.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's
releases</a>.</em></p>
<blockquote>
<h2>pytest-asyncio v1.4.0</h2>
<h1><a
href="https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0">1.4.0</a>
- 2026-05-26</h1>
<h2>Deprecated</h2>
<ul>
<li>Overriding the <em>event_loop_policy</em> fixture is deprecated. Use
the <code>pytest_asyncio_loop_factories</code> hook instead. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419">#1419</a>)</li>
</ul>
<h2>Added</h2>
<ul>
<li>
<p>Added the <code>pytest_asyncio_loop_factories</code> hook to
parametrize asyncio tests with custom event loop factories.</p>
<p>The hook returns a mapping of factory names to loop factories, and
<code>pytest.mark.asyncio(loop_factories=[...])</code> selects a subset
of configured factories per test. When a single factory is configured,
test names are unchanged.</p>
<p>Synchronous <code>@pytest_asyncio.fixture</code> functions now see
the correct event loop when custom loop factories are configured, even
when test code disrupts the current event loop (e.g., via
<code>asyncio.run()</code> or
<code>asyncio.set_event_loop(None)</code>). (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164">#1164</a>)</p>
</li>
</ul>
<h2>Changed</h2>
<ul>
<li>Improved the readability of the warning message that is displayed
when <code>asyncio_default_fixture_loop_scope</code> is unset (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298">#1298</a>)</li>
<li>Only import <code>asyncio.AbstractEventLoopPolicy</code> for type
checking to avoid raising
a DeprecationWarning. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394">#1394</a>)</li>
<li>Updated minimum supported pytest version to v8.4.0. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1397">#1397</a>)</li>
</ul>
<h2>Fixed</h2>
<ul>
<li>Fixed a <code>ResourceWarning: unclosed event loop</code> warning
that could occur when a synchronous test called
<code>asyncio.run()</code> or otherwise unset the current event loop
after pytest-asyncio had run an async test or fixture. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/724">#724</a>)</li>
</ul>
<h2>Notes for Downstream Packagers</h2>
<ul>
<li>Added dependency on <code>sphinx-tabs &gt;= 3.5</code> to organize
documentation examples into tabs. (<a
href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1395">#1395</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/6e14cd2af9292dca1fa2b027a06bbc40b0e0e425"><code>6e14cd2</code></a>
chore: Prepare release of v1.4.0.</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/4b900fb5d0c30949c574e55dd904ee179f858a5e"><code>4b900fb</code></a>
Build(deps): Bump codecov/codecov-action from 6.0.0 to 6.0.1</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/ab9f63245094865c42c940a34af724b0dec1debf"><code>ab9f632</code></a>
Build(deps): Bump zipp from 3.23.1 to 4.1.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/a56fc77ecd59f781d8471b0f6a82bf58e08c95fa"><code>a56fc77</code></a>
Build(deps): Bump hypothesis from 6.152.6 to 6.152.8</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/e8bae9bc1f197731fc1a210c0da557af7b698e6d"><code>e8bae9b</code></a>
Build(deps): Bump requests from 2.34.0 to 2.34.2</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/fc433402c570fd36a7a227ef4bc3abd4579299de"><code>fc43340</code></a>
Build(deps): Bump idna from 3.14 to 3.15</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/762eaf5033b798b965c92afdbb2cebefa8fc3a8b"><code>762eaf5</code></a>
Build(deps): Bump jaraco-functools from 4.4.0 to 4.5.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/b62e2228c80070977baf6b77ba89d5c148af920f"><code>b62e222</code></a>
Build(deps): Bump click from 8.3.3 to 8.4.0</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/919044700627889d25ca63b6e7a3bc785f3137eb"><code>9190447</code></a>
Build(deps): Bump pydantic from 2.13.3 to 2.13.4</li>
<li><a
href="https://github.com/pytest-dev/pytest-asyncio/commit/82a393c5e31b6ebbbd8ec2a8dafc5f35b9cf1236"><code>82a393c</code></a>
ci: Remove unnecessary debug output.</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest-asyncio/compare/v0.25.0...v1.4.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `testcontainers` from 4.8.2 to 4.14.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/testcontainers/testcontainers-python/releases">testcontainers's
releases</a>.</em></p>
<blockquote>
<h2>testcontainers: v4.14.2</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2">4.14.2</a>
(2026-03-18)</h2>
<h3>Features</h3>
<ul>
<li><strong>kafka:</strong> allow configurable listener name and
security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3">44dd40b</a>)</li>
</ul>
<h2>testcontainers: v4.14.1</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1">4.14.1</a>
(2026-01-31)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Allow passing in a custom wait strategy string in MySQL, Cassandra,
Kafka and Trino (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/953">#953</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b">be4d09e</a>)</li>
<li><strong>compose:</strong> expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f">183e1aa</a>)</li>
<li><strong>core:</strong> bring back dind tests (<a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5">7337266</a>)</li>
<li><strong>core:</strong> Use WaitStrategy internally for wait_for
function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e">e323317</a>)</li>
<li><strong>nats:</strong> add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4">49c9af8</a>)</li>
<li>Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8">f690e88</a>),
closes <a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/860">#860</a></li>
</ul>
<h2>testcontainers: v4.14.0</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0">4.14.0</a>
(2026-01-07)</h2>
<h3>Features</h3>
<ul>
<li>Add ExecWaitStrategy and migrate Postgres from deprecated decorator
(<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/935">#935</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06">2d9eee3</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>add ruff to deps (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/919">#919</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d">5853d32</a>)</li>
<li><strong>cassandra,mysqk,kafka:</strong> Use wait strategy instead of
deprecated wait_for_logs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/945">#945</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9">b7791b9</a>)</li>
<li><strong>core:</strong> recreate poetry lockfile with latest versions
of libraries (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/946">#946</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03">9a97385</a>)</li>
<li><strong>elasticsearch:</strong> Use wait strategy instead of
deprecated decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/915">#915</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627">c785ecd</a>)</li>
<li><strong>minio:</strong> minio client requires kwargs now (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/933">#933</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62">37f5902</a>)</li>
<li><strong>minio:</strong> Use wait strategy instead of deprecated
decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/899">#899</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3">febccb7</a>)</li>
</ul>
<h2>testcontainers: v4.13.3</h2>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3">4.13.3</a>
(2025-11-14)</h2>
<h3>python 3.14 is now supported!</h3>
<h3>Bug Fixes</h3>
<ul>
<li>do not require consumer of library to state nonsupport for py4 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/912">#912</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c">f608df9</a>)</li>
<li><strong>docs:</strong> Update dependencies for docs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/900">#900</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c">3f66784</a>)</li>
</ul>
<h2>testcontainers: v4.13.2</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/testcontainers/testcontainers-python/blob/main/CHANGELOG.md">testcontainers's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.1...testcontainers-v4.14.2">4.14.2</a>
(2026-03-18)</h2>
<h3>Features</h3>
<ul>
<li><strong>kafka:</strong> allow configurable listener name and
security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3">44dd40b</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.14.0...testcontainers-v4.14.1">4.14.1</a>
(2026-01-31)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Allow passing in a custom wait strategy string in MySQL, Cassandra,
Kafka and Trino (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/953">#953</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/be4d09ecb3f65089d06fbd1ab9d4f12e9009ed8b">be4d09e</a>)</li>
<li><strong>compose:</strong> expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f">183e1aa</a>)</li>
<li><strong>core:</strong> bring back dind tests (<a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5">7337266</a>)</li>
<li><strong>core:</strong> Use WaitStrategy internally for wait_for
function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e">e323317</a>)</li>
<li><strong>nats:</strong> add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4">49c9af8</a>)</li>
<li>Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8">f690e88</a>),
closes <a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/860">#860</a></li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.3...testcontainers-v4.14.0">4.14.0</a>
(2026-01-07)</h2>
<h3>Features</h3>
<ul>
<li>Add ExecWaitStrategy and migrate Postgres from deprecated decorator
(<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/935">#935</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/2d9eee30442ec8adbf4a42fcd308cd6377b41c06">2d9eee3</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>add ruff to deps (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/919">#919</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/5853d326bb4e9631b7c58355c53ff7fc3ecab92d">5853d32</a>)</li>
<li><strong>cassandra,mysqk,kafka:</strong> Use wait strategy instead of
deprecated wait_for_logs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/945">#945</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/b7791b945134940c3185baa3eab009f06d0338a9">b7791b9</a>)</li>
<li><strong>core:</strong> recreate poetry lockfile with latest versions
of libraries (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/946">#946</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/9a9738575ec3f831c78512b10b990e416eacad03">9a97385</a>)</li>
<li><strong>elasticsearch:</strong> Use wait strategy instead of
deprecated decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/915">#915</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/c785ecdca20b51e077ab23ed61ae123c643a0627">c785ecd</a>)</li>
<li><strong>minio:</strong> minio client requires kwargs now (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/933">#933</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/37f590278f23851c4f8244d4add7aa6f8ed3bc62">37f5902</a>)</li>
<li><strong>minio:</strong> Use wait strategy instead of deprecated
decorator (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/899">#899</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/febccb78b5b4b00d2a3bda27f09e6b4d4c9dfde3">febccb7</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.2...testcontainers-v4.13.3">4.13.3</a>
(2025-11-14)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>do not require consumer of library to state nonsupport for py4 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/912">#912</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f608df908f87674484b106831d8e8019fdc1927c">f608df9</a>)</li>
<li><strong>docs:</strong> Update dependencies for docs (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/900">#900</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/3f667847a0d9a893e4f15481d81d131817382d5c">3f66784</a>)</li>
<li>support python 3.14!!! - (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/917">#917</a>)
(<a
href="https://github.com/testcontainers/testcontainers-python/commit/f76e982ca6f40d185d6f430be0a62cd26afbf7e6">f76e982</a>)</li>
</ul>
<h2><a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.13.1...testcontainers-v4.13.2">4.13.2</a>
(2025-10-07)</h2>
<h3>Bug Fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/5c67efb8e51885021e6d41cd8bc60300978a8377"><code>5c67efb</code></a>
chore(main): release testcontainers 4.14.2 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/969">#969</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/44dd40b48c3a5020b487bae5d460124d9e594ac3"><code>44dd40b</code></a>
feat(kafka): allow configurable listener name and security protocol (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/966">#966</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/a78475a92dabfc1b7166320f851280ab783f6b8a"><code>a78475a</code></a>
chore(main): Migrate to uv (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/960">#960</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/17eb0b0a98b89395000e5143a5b40da6367a3b2c"><code>17eb0b0</code></a>
chore(main): release testcontainers 4.14.1 (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/954">#954</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/f690e88e866ef3ff30ba2cd18958fc1fc07f89c8"><code>f690e88</code></a>
fix: Support Elasticsearch 9.x (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/881">#881</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/15e99ee5458e41fbc4df37fd66911600e434016a"><code>15e99ee</code></a>
add modifications</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/7337266c73f05f003378ff483a5e3b565a1e86c5"><code>7337266</code></a>
fix(core): bring back dind tests</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/49c9af8cf542feb5df9ec389d554edd7645a4dc4"><code>49c9af8</code></a>
fix(nats): add support for jetstream (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/938">#938</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/e323317838552a9f8046b2a8e24a03c07ff8890e"><code>e323317</code></a>
fix(core): Use WaitStrategy internally for wait_for function (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/942">#942</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-python/commit/183e1aa1bcd684d36d3f5b52b28965c851f5436f"><code>183e1aa</code></a>
fix(compose): expose useful compose options (<a
href="https://redirect.github.com/testcontainers/testcontainers-python/issues/951">#951</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/testcontainers/testcontainers-python/compare/testcontainers-v4.8.2...testcontainers-v4.14.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `mypy` from 1.13.0 to 2.1.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/mypy/blob/master/CHANGELOG.md">mypy's
changelog</a>.</em></p>
<blockquote>
<h1>Mypy Release Notes</h1>
<h2>Next Release</h2>
<h2>Mypy 2.1</h2>
<p>We’ve just uploaded mypy 2.1.0 to the Python Package Index (<a
href="https://pypi.org/project/mypy/">PyPI</a>).
Mypy is a static type checker for Python. This release includes new
features, performance
improvements and bug fixes. You can install it as follows:</p>
<pre><code>python3 -m pip install -U mypy
</code></pre>
<p>You can read the full documentation for this release on <a
href="http://mypy.readthedocs.io">Read the Docs</a>.</p>
<h3>librt.vecs: Fast Growable Array Type for Mypyc</h3>
<p>The new <code>librt.vecs</code> module provides an efficient growable
array type <code>vec</code> that is
optimized for mypyc use. It provides fast, packed arrays with integer
and floating point
value types, which can be <strong>several times faster</strong> than
<code>list</code>, and tens of times faster
than <code>array.array</code> in code compiled using mypyc. It also
supports nested <code>vec</code> objects and
non-value-type items, such as <code>vec[vec[str]]</code>.</p>
<p>Refer to the <a
href="https://mypyc.readthedocs.io/en/latest/librt_vecs.html">documentation</a>
for
the details.</p>
<p>Contributed by Jukka Lehtosalo.</p>
<h3>librt.random: Fast Pseudo-Random Number Generation</h3>
<p>The new <code>librt.random</code> module provides fast pseudo-random
number generation that is
optimized for code compiled using mypyc. It can be 3x to 10x faster than
the stdlib
<code>random</code> module in compiled code.</p>
<p>Refer to the <a
href="https://mypyc.readthedocs.io/en/latest/librt_random.html">documentation</a>
for
the details.</p>
<p>Contributed by Jukka Lehtosalo (PR <a
href="https://redirect.github.com/python/mypy/pull/21433">21433</a>).</p>
<h3>Mypyc Improvements</h3>
<ul>
<li>Enable incremental self-compilation (Vaggelis Danias, PR <a
href="https://redirect.github.com/python/mypy/pull/21369">21369</a>)</li>
<li>Make compilation order with multiple files consistent (Piotr
Sawicki, PR <a
href="https://redirect.github.com/python/mypy/pull/21419">21419</a>)</li>
<li>Fix crash on accessing <code>StopAsyncIteration</code> (Piotr
Sawicki, PR <a
href="https://redirect.github.com/python/mypy/pull/21406">21406</a>)</li>
<li>Fix incremental compilation with <code>separate</code> flag
(Vaggelis Danias, PR <a
href="https://redirect.github.com/python/mypy/pull/21299">21299</a>)</li>
</ul>
<h3>Fixes to Crashes</h3>
<ul>
<li>Fix crash on partial type with <code>--allow-redefinition</code> and
<code>global</code> declaration (Jukka Lehtosalo, PR <a
href="https://redirect.github.com/python/mypy/pull/21428">21428</a>)</li>
<li>Fix broken awaitable generator patching (Ivan Levkivskyi, PR <a
href="https://redirect.github.com/python/mypy/pull/21435">21435</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234"><code>c1c336d</code></a>
Remove +dev from version</li>
<li><a
href="https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7"><code>74df14b</code></a>
Add changelog for mypy 2.1 (<a
href="https://redirect.github.com/python/mypy/issues/21464">#21464</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff"><code>022d9bc</code></a>
Revert &quot;TypeForm: Enable by default (<a
href="https://redirect.github.com/python/mypy/issues/21262">#21262</a>)&quot;</li>
<li><a
href="https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c"><code>8826288</code></a>
[mypyc] Document librt.random (<a
href="https://redirect.github.com/python/mypy/issues/21463">#21463</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96"><code>3f4067b</code></a>
Bump librt version to 0.11.0 (<a
href="https://redirect.github.com/python/mypy/issues/21458">#21458</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e"><code>2b1eb58</code></a>
[mypyc] Enable incremental self-compilation (<a
href="https://redirect.github.com/python/mypy/issues/21369">#21369</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc"><code>8152f4a</code></a>
Respect file config comments for stale modules (<a
href="https://redirect.github.com/python/mypy/issues/21444">#21444</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92"><code>116d60b</code></a>
Fix nondeterminism from nonassociativity of overload joins (<a
href="https://redirect.github.com/python/mypy/issues/21455">#21455</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210"><code>6c4af8e</code></a>
Fix function call message change for small number of args (<a
href="https://redirect.github.com/python/mypy/issues/21432">#21432</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800"><code>4b8fdca</code></a>
[mypyc] Add librt.random module (<a
href="https://redirect.github.com/python/mypy/issues/21433">#21433</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/python/mypy/compare/v1.13.0...v2.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.8.0 to 0.15.15
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<h2>Release Notes</h2>
<p>Released on 2026-05-28.</p>
<h3>Preview features</h3>
<ul>
<li>Fix Markdown closing fence handling (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li>
<li>[<code>pyflakes</code>] Report duplicate imports in
<code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pyflakes</code>] Treat function-scope bare annotations as
locals per PEP 526 (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li>
<li>Reduce memory usage by dropping token-excess capacity and improve
performance by approximating the initial tokens <code>Vec</code> size
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li>
<li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix <code>line-length</code> example for <code>--config</code>
option (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li>
<li>[<code>flake8-comprehensions</code>] Document
<code>RecursionError</code> edge case in <code>__len__</code>
(<code>C416</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li>
<li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li>
<li>[<code>pyupgrade</code>] Clarify fix safety docs
(<code>UP007</code>, <code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li>
<li>[<code>refurb</code>] Document <code>FURB192</code> exception change
for empty sequences (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li>
<li>[<code>ruff</code>] Document false negative for user-defined types
(<code>RUF013</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix formatting of lambdas nested within f-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Return code action for <code>codeAction/resolve</code> requests that
contain no or no valid URL (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/fallintoplace"><code>@​fallintoplace</code></a></li>
<li><a
href="https://github.com/martin-schlossarek"><code>@​martin-schlossarek</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.15.15</h2>
<p>Released on 2026-05-28.</p>
<h3>Preview features</h3>
<ul>
<li>Fix Markdown closing fence handling (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li>
<li>[<code>pyflakes</code>] Report duplicate imports in
<code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pyflakes</code>] Treat function-scope bare annotations as
locals per PEP 526 (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li>
<li>Reduce memory usage by dropping token-excess capacity and improve
performance by approximating the initial tokens <code>Vec</code> size
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li>
<li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix <code>line-length</code> example for <code>--config</code>
option (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li>
<li>[<code>flake8-comprehensions</code>] Document
<code>RecursionError</code> edge case in <code>__len__</code>
(<code>C416</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li>
<li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li>
<li>[<code>pyupgrade</code>] Clarify fix safety docs
(<code>UP007</code>, <code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li>
<li>[<code>refurb</code>] Document <code>FURB192</code> exception change
for empty sequences (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li>
<li>[<code>ruff</code>] Document false negative for user-defined types
(<code>RUF013</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix formatting of lambdas nested within f-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Return code action for <code>codeAction/resolve</code> requests that
contain no or no valid URL (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/adityasingh2400"><code>@​adityasingh2400</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/fallintoplace"><code>@​fallintoplace</code></a></li>
<li><a
href="https://github.com/martin-schlossarek"><code>@​martin-schlossarek</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
<li><a
href="https://github.com/Ruchir28"><code>@​Ruchir28</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/db5aa0a5f1b92cb91d910bf0866a967554dd94f5"><code>db5aa0a</code></a>
Bump 0.15.15 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25431">#25431</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/366fe21ba369ccdd01eb99c1043c9a969c99230b"><code>366fe21</code></a>
[ty] Improve diagnostics for syntax errors in forward annotations (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25158">#25158</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e2e1e647d182b8567845039c9a65fb0608a4dcfc"><code>e2e1e64</code></a>
[ty] Remove excess capacity from more Salsa cached collections (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25411">#25411</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/1bd77e1646f2213d86b8da215f08279187867d72"><code>1bd77e1</code></a>
[ty] Use diagnostic message as tie breaker when sorting (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25424">#25424</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/7e1bc1e75f15795f12c846294b13df4535f2abbf"><code>7e1bc1e</code></a>
Add agent skills for working on ty (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25422">#25422</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/574e10752f8cfa9e0cdbe3b01e96c4380950469b"><code>574e107</code></a>
Expand semantic syntax errors for invalid walruses (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25415">#25415</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/4a7ca062fccd80443a43aa61e5dc7e5858e88dc1"><code>4a7ca06</code></a>
[ty] Display docs for matching parameter when hovering over the name of
an ar...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/54327092dbfe455040690d63bb1e5e4b5f551239"><code>5432709</code></a>
Refine a few agents instructions (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25423">#25423</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/3cb09eba689ebb49e799131092121928cc789c18"><code>3cb09eb</code></a>
[ty] Support <code>typing.TypeForm</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25334">#25334</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/c8cd59f189f2b6f55d542b29bddb953622add6fc"><code>c8cd59f</code></a>
[ty] Infer class attributes assigned by metaclass initialization (<a
href="https://redirect.github.com/astral-sh/ruff/issues/25342">#25342</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.8.0...0.15.15">compare
view</a></li>
</ul>
</details>
<br />

Updates `greenlet` from 3.1.1 to 3.5.1
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>3.5.1 (2026-05-20)</h1>
<ul>
<li>Add preliminary support for Python 3.15b1. This has not been
reviewed by CPython core developers, but all tests pass. Binary
wheels of this version won't work on earlier Python 3.15 builds and
may not work on later 3.15 builds.</li>
<li>Fix the discrepancy in the way the two <code>getcurrent</code> APIs
behave
during greenlet teardown. One API (the C API used by, e.g., gevent)
raised a
<code>RuntimeError</code>; the other (the Python
<code>greenlet.getcurrent</code> API)
returned <code>None</code>. This second way is incompatible with
greenlet's type
annotations, so <code>greenlet.getcurrent</code> now raises a
<code>RuntimeError</code> as well.</li>
</ul>
<h1>3.5.0 (2026-04-27)</h1>
<ul>
<li>
<p>Remove the <code>atexit</code> callback. This callback caused
greenlet APIs
to become unavailable far too soon during interpreter shutdown. Now
they remain available while all <code>atexit</code> callbacks run.
Sometime
after <code>Py_IsFinalizing</code> becomes true, they may begin
misbehaving.
Because the order in which C extensions are finalized is undefined,
C extensions that are sensitive to this need to check the results of
that function before invoking greenlet APIs. As a convenience,
<code>PyGreenlet_GetCurrent</code> sets an exception and returns
<code>NULL</code>
when this happens (and <code>greenlet.getcurrent</code> begins returning
<code>None</code>); other greenlet C API functions have undefined
behaviour.
Methods invoked directly on pre-existing <code>greenlet.greenlet</code>
objects will continue to function at least until the greenlet C
extension has been garbage collected and finalized.</p>
<p>See <code>PR 508
&lt;https://github.com/python-greenlet/greenlet/pull/508&gt;</code>_.</p>
</li>
</ul>
<h1>3.4.0 (2026-04-08)</h1>
<ul>
<li>
<p>Publish binary wheels for RiscV 64.</p>
</li>
<li>
<p>Fix multiple rare crash paths during interpreter shutdown.</p>
<p>Note that this now relies on the <code>atexit</code> module, and
introduces
subtle API changes during interpreter shutdown (for example,
<code>getcurrent</code> is no longer available once the
<code>atexit</code> callback fires).</p>
<p>See <code>PR
[#499](python-greenlet/greenlet#499)
&lt;https://github.com/python-greenlet/greenlet/pull/499&gt;</code>_ by
Nicolas
Bouvrette.</p>
</li>
<li>
<p>Address the results of an automated code audit performed by
Daniel Diniz. This includes several minor correctness changes that</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/b5e5fc43a51c27ecffa1b1c7107c91464a6b26e2"><code>b5e5fc4</code></a>
Preparing release 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c8e177413d34bc36ed56d2c185c232ab0538be90"><code>c8e1774</code></a>
Tweak wording in CHANGES about greenlet.getcurrent.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/7fb10c570f37b3eb4c8909c6164fdfac3269ddb6"><code>7fb10c5</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/510">#510</a>
from python-greenlet/315</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/9718ce5a23ea3360232b78a806a837d6c3d6183d"><code>9718ce5</code></a>
Add Py 3.15; make both API versions of getcurrent() consistent in
raising Run...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/276e08afc4ddba87e4366390e3eeaecd61ccb3b8"><code>276e08a</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/509">#509</a>
from python-greenlet/dependabot/github_actions/github...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/32b0ad69828eb69d879c70dbee948e685268901b"><code>32b0ad6</code></a>
Bump pypa/gh-action-pypi-publish in the github-actions group</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/173b692dc84288ef41572612ac744754f98eaa90"><code>173b692</code></a>
Back to development: 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c7acc72000572811d6462ebe01733a974f194990"><code>c7acc72</code></a>
Preparing release 3.5.0</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/d08f99bf40801c5d57af6e13631c0ba68300ecf7"><code>d08f99b</code></a>
CHANGES: Update link from <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/507">#507</a>
to more full description in <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/fd3391e33cedc7a17a86059f18dfbec2b3a320bd"><code>fd3391e</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>
from python-greenlet/issue507-remove-atexit</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/3.1.1...3.5.1">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Masterplanner25 added a commit to Masterplanner25/aindy-runtime that referenced this pull request Jun 6, 2026
Bumps [greenlet](https://github.com/python-greenlet/greenlet) from 3.2.4
to 3.5.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>3.5.1 (2026-05-20)</h1>
<ul>
<li>Add preliminary support for Python 3.15b1. This has not been
reviewed by CPython core developers, but all tests pass. Binary
wheels of this version won't work on earlier Python 3.15 builds and
may not work on later 3.15 builds.</li>
<li>Fix the discrepancy in the way the two <code>getcurrent</code> APIs
behave
during greenlet teardown. One API (the C API used by, e.g., gevent)
raised a
<code>RuntimeError</code>; the other (the Python
<code>greenlet.getcurrent</code> API)
returned <code>None</code>. This second way is incompatible with
greenlet's type
annotations, so <code>greenlet.getcurrent</code> now raises a
<code>RuntimeError</code> as well.</li>
</ul>
<h1>3.5.0 (2026-04-27)</h1>
<ul>
<li>
<p>Remove the <code>atexit</code> callback. This callback caused
greenlet APIs
to become unavailable far too soon during interpreter shutdown. Now
they remain available while all <code>atexit</code> callbacks run.
Sometime
after <code>Py_IsFinalizing</code> becomes true, they may begin
misbehaving.
Because the order in which C extensions are finalized is undefined,
C extensions that are sensitive to this need to check the results of
that function before invoking greenlet APIs. As a convenience,
<code>PyGreenlet_GetCurrent</code> sets an exception and returns
<code>NULL</code>
when this happens (and <code>greenlet.getcurrent</code> begins returning
<code>None</code>); other greenlet C API functions have undefined
behaviour.
Methods invoked directly on pre-existing <code>greenlet.greenlet</code>
objects will continue to function at least until the greenlet C
extension has been garbage collected and finalized.</p>
<p>See <code>PR 508
&lt;https://github.com/python-greenlet/greenlet/pull/508&gt;</code>_.</p>
</li>
</ul>
<h1>3.4.0 (2026-04-08)</h1>
<ul>
<li>
<p>Publish binary wheels for RiscV 64.</p>
</li>
<li>
<p>Fix multiple rare crash paths during interpreter shutdown.</p>
<p>Note that this now relies on the <code>atexit</code> module, and
introduces
subtle API changes during interpreter shutdown (for example,
<code>getcurrent</code> is no longer available once the
<code>atexit</code> callback fires).</p>
<p>See <code>PR
[#499](python-greenlet/greenlet#499)
&lt;https://github.com/python-greenlet/greenlet/pull/499&gt;</code>_ by
Nicolas
Bouvrette.</p>
</li>
<li>
<p>Address the results of an automated code audit performed by
Daniel Diniz. This includes several minor correctness changes that</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/b5e5fc43a51c27ecffa1b1c7107c91464a6b26e2"><code>b5e5fc4</code></a>
Preparing release 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c8e177413d34bc36ed56d2c185c232ab0538be90"><code>c8e1774</code></a>
Tweak wording in CHANGES about greenlet.getcurrent.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/7fb10c570f37b3eb4c8909c6164fdfac3269ddb6"><code>7fb10c5</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/510">#510</a>
from python-greenlet/315</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/9718ce5a23ea3360232b78a806a837d6c3d6183d"><code>9718ce5</code></a>
Add Py 3.15; make both API versions of getcurrent() consistent in
raising Run...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/276e08afc4ddba87e4366390e3eeaecd61ccb3b8"><code>276e08a</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/509">#509</a>
from python-greenlet/dependabot/github_actions/github...</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/32b0ad69828eb69d879c70dbee948e685268901b"><code>32b0ad6</code></a>
Bump pypa/gh-action-pypi-publish in the github-actions group</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/173b692dc84288ef41572612ac744754f98eaa90"><code>173b692</code></a>
Back to development: 3.5.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/c7acc72000572811d6462ebe01733a974f194990"><code>c7acc72</code></a>
Preparing release 3.5.0</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/d08f99bf40801c5d57af6e13631c0ba68300ecf7"><code>d08f99b</code></a>
CHANGES: Update link from <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/507">#507</a>
to more full description in <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/fd3391e33cedc7a17a86059f18dfbec2b3a320bd"><code>fd3391e</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/508">#508</a>
from python-greenlet/issue507-remove-atexit</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/3.2.4...3.5.1">compare
view</a></li>
</ul>
</details>
<br />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants