Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes for Python 3.14 and PEP 649 #492

Merged
merged 12 commits into from
Jan 31, 2025
Merged

Conversation

JelleZijlstra
Copy link
Contributor

@JelleZijlstra JelleZijlstra commented Sep 23, 2024

I ran the typeguard test suite on the current CPython main branch to
look for possible breakage from PEP 649 and 749, which makes large
changes to how annotations work.

I found three problems:

  • DeprecationWarnings from uses of ForwardRef._evaluate, which we're
    deprecating. Made a change to use the new public API for ForwardRef.evaluate
    instead.
  • A test failure that showed "annotationlib" as the module name for a forward
    ref. I made it so that it doesn't use module for ForwardRef objects.
  • One remaining test failure that I haven't tracked down:
    tests/test_instrumentation.py::test_typevar_forwardref[importhook]
    It's apparently due to caching (it doesn't fail if I run only that one test),
    but I haven't tracked down the exact cause.

I also added some new tests relying on 3.14-only behavior (unquoted annotations containing forward references). Those mostly worked fine, but I had to make another tweak to how functions are wrapped.

Since the APIs in Python 3.14 may still change, I'll make this a draft
PR for now.

Checklist

If this is a user-facing code change, like a bugfix or a new feature, please ensure that
you've fulfilled the following conditions (where applicable):

  • You've added tests (in tests/) added which would fail without your patch
  • You've updated the documentation (in docs/, in case of behavior changes or new
    features)
  • You've added a new changelog entry (in docs/versionhistory.rst).

I ran the typeguard test suite on the current CPython main branch to
look for possible breakage from PEP 649 and 749, which makes large
changes to how annotations work.

I found three problems:

- DeprecationWarnings from uses of ForwardRef._evaluate, which we're
  deprecating. Made a change to use the new public API for ForwardRef.evaluate
  instead.
- A test failure that showed "annotationlib" as the module name for a forward
  ref. I made it so that it doesn't use __module__ for ForwardRef objects.
- One remaining test failure that I haven't tracked down:
  tests/test_instrumentation.py::test_typevar_forwardref[importhook]
  It's apparently due to caching (it doesn't fail if I run only that one test),
  but I haven't tracked down the exact cause.

Since the APIs in Python 3.14 may still change, I'll make this a draft
PR for now.
@coveralls
Copy link

coveralls commented Sep 23, 2024

Coverage Status

coverage: 94.593% (+0.09%) from 94.507%
when pulling 739ec42 on JelleZijlstra:fix314
into f282802 on agronholm:master.

@musicinmybrain
Copy link

Thanks for working on this! I just tested this branch with Python 3.14.0a1, and it looks like some further adjustments will be required:

========================================================================================== short test summary info ==========================================================================================
FAILED tests/test_instrumentation.py::test_typevar_forwardref[importhook] - typeguard.TypeCheckError: argument "x" (class dummymodule.DummyClass) is not a subclass of dummymodule.DummyClass
ERROR tests/test_instrumentation.py::TestUsesForwardRef::test_success[typechecked] - ModuleNotFoundError: No module named 'deferredannos'
ERROR tests/test_instrumentation.py::TestUsesForwardRef::test_failure[typechecked] - ModuleNotFoundError: No module named 'deferredannos'
ERROR tests/test_instrumentation.py::TestUsesForwardRef::test_success[importhook] - ModuleNotFoundError: No module named 'deferredannos'
ERROR tests/test_instrumentation.py::TestUsesForwardRef::test_failure[importhook] - ModuleNotFoundError: No module named 'deferredannos'
======================================================================= 1 failed, 474 passed, 4 skipped, 9 xfailed, 4 errors in 2.13s =======================================================================

@agronholm
Copy link
Owner

agronholm commented Jan 19, 2025

@JelleZijlstra it looks like the tests are passing, so is there any reason this shouldn't be merged?
Dang, I forgot we're not testing against 3.14 in CI.

@agronholm
Copy link
Owner

@JelleZijlstra did you forget to commit the deferredannos module in the test suite?

@agronholm
Copy link
Owner

I looked into the one remaining actual failure. The subclass check fails because the value and the class, albeit both classes from the same supposed origin, have different identities. I'm not sure yet why this happens only on 3.14.

@agronholm
Copy link
Owner

Interesting – on 3.13, the subclass check isn't happening at all. I'm continuing to investigate.

@agronholm
Copy link
Owner

As this clearly has something to do with the forwardref changes in 3.14, I decided to add some debug output which showed a key difference between 3.13 and 3.14.

Here's a test run of test_typevar_forwardref on 3.13:

checking value=<class 'dummymodule.DummyClass'> (id=5592c6224090)
evaluated ForwardRef('DummyClass') to <class 'dummymodule.DummyClass'> (id=5592c6224090)
evaluated ForwardRef('DummyClass') to <class 'dummymodule.DummyClass'> (id=5592c6224090)
checking value=<class 'dummymodule.DummyClass'> (id=5592c6232e20)
evaluated ForwardRef('DummyClass') to <class 'dummymodule.DummyClass'> (id=5592c6232e20)
evaluated ForwardRef('DummyClass') to <class 'dummymodule.DummyClass'> (id=5592c6232e20)

And on 3.14:

checking value=<class 'dummymodule.DummyClass'> (id=55d1660a5030)
evaluated ForwardRef('DummyClass') to <class 'dummymodule.DummyClass'> (id=55d1660a5030)
evaluated ForwardRef('DummyClass') to <class 'dummymodule.DummyClass'> (id=55d1660a5030)
checking value=<class 'dummymodule.DummyClass'> (id=55d1660a96d0)
evaluated ForwardRef('DummyClass') to <class 'dummymodule.DummyClass'> (id=55d1660a5030)

As you can see, the forwardref is evaluated to the same object at all times on v3.14, while on v3.13 it evaluates to a different object, as expected since dummymodule is reloaded.

@JelleZijlstra
Copy link
Contributor Author

I see, this is probably because I made ForwardRef cache its value more aggressively. On 3.13, it caches __forward_value__, but ignores the cache if localns is not globalns for some reason: https://github.com/python/cpython/blob/21200895478b8076fc0bda6ee2c26f0d87c9404b/Lib/typing.py#L1053

On 3.14 I instead made it always use the cached value: https://github.com/python/cpython/blob/bbeb219354764aef85e660be6570f0f329e7227e/Lib/annotationlib.py#L100

The old behavior wasn't documented and it feels inconsistent, but perhaps the new caching behavior is too aggressive. I wonder if it would make sense to not cache the values at all?

(Also, sorry for the missing file. I think I lost the local branch for this PR, I'll have to take a look and try to recreate it.)

@agronholm
Copy link
Owner

Something else bugs me: how can the ForwardRef object be the same object on py3.14 even after I've reloaded the module? I've confirmed that the ID of the function I'm calling is different, as is dummymodule.DummyClass.

id of imported module: 7f0620136f70
id of typevar_forwardref: 7f0620142770
checking value=<class 'dummymodule.DummyClass'> (id=564aadc496d0)
evaluated ForwardRef('DummyClass') (id=7f062004bda0) to <class 'dummymodule.DummyClass'> (id=564aadc496d0) with memo 7f061ffb73c0
evaluated ForwardRef('DummyClass') (id=7f062004bda0) to <class 'dummymodule.DummyClass'> (id=564aadc496d0) with memo 7f061ffb73c0
id of imported module: 7f0620136f70
id of typevar_forwardref: 7f0620142560
checking value=<class 'dummymodule.DummyClass'> (id=564aadc4f2f0)
evaluated ForwardRef('DummyClass') (id=7f062004bda0) to <class 'dummymodule.DummyClass'> (id=564aadc496d0) with memo 7f06202aec80

@JelleZijlstra
Copy link
Contributor Author

Where do you get the ForwardRef object from? There are various kinds of caching in typing.py. Maybe this is python/cpython#128593.

@agronholm
Copy link
Owner

I'll debug this further to answer that question.

@agronholm
Copy link
Owner

agronholm commented Jan 26, 2025

This took me way too long to figure out, but here's where it goes wrong:

        annotation = (
            Type[origin_type.__bound__] if subclass_check else origin_type.__bound__
        )

For some bizarre reason, the type parameter for the resulting Type[] is NOT always the same ForwardRef object as origin_type.__bound__! But if I use the built-in type instead of typing.Type, then it behaves as expected. This also fixes the test on Python 3.14.

Now I'll just need the deferredannos module to get the rest of the tests passing. @JelleZijlstra any progress on that?

EDIT: I forgot to mention that Type[...] seemed to dig up the old ForwardRef object from before the module was reloaded, and I have no clue where from, or why. I could not step into it with the debugger either as this was apparently C code.

@JelleZijlstra
Copy link
Contributor Author

For some bizarre reason, the type parameter for the resulting Type[] is NOT always the same ForwardRef object as origin_type.bound! But if I use the built-in type instead of typing.Type, then it behaves as expected. This also fixes the test on Python 3.14.

I think this is because there's a typing._tp_cache on Type.__getitem__, and ForwardRef has __hash__ and __eq__ that look at only some attributes (already on 3.13: https://github.com/python/cpython/blob/8b4a0d641cde667f94ce49f5e64da6bd9d6fbd9c/Lib/typing.py#L1096). I am going to open an issue on CPython to remove that behavior; I think it makes more sense to compare ForwardRefs by identity.

Now I'll just need the deferredannos module

Just pushed it, sorry for that!

@agronholm
Copy link
Owner

I've added 3.14 to the CI, and the tests seem to pass. Perhaps it's time to remove the draft status, unless you have something more to add?

@musicinmybrain
Copy link

I tried this as a patch for the 4.4.1 release in Fedora’s python-typeguard package – rebased on 4.4.1, and with documentation changes omitted to keep the patch clean – and it built with tests passing for Python 3.14.0a4. So you can consider that a vote of confidence.

@JelleZijlstra JelleZijlstra marked this pull request as ready for review January 30, 2025 16:02
@JelleZijlstra
Copy link
Contributor Author

Yes, taken out of draft!

One caveat: Python 3.14 is still in alpha, and PEP 749 has not yet been accepted, so some of the aspects of 3.14 might still change before the final release. Hopefully not too much!

@agronholm agronholm merged commit 95ef60d into agronholm:master Jan 31, 2025
11 checks passed
@agronholm
Copy link
Owner

Thanks!

@JelleZijlstra JelleZijlstra deleted the fix314 branch January 31, 2025 15:10
github-actions bot added a commit to Jij-Inc/Playground that referenced this pull request Feb 17, 2025
Bumps [typeguard](https://github.com/agronholm/typeguard) from 4.4.1 to
4.4.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/agronholm/typeguard/releases">typeguard's
releases</a>.</em></p>
<blockquote>
<h2>4.4.2</h2>
<ul>
<li>Fixed <code>TypeCheckError</code> in unpacking assignment involving
properties of a parameter of the function (<a
href="https://redirect.github.com/agronholm/typeguard/issues/506">#506</a>;
regression introduced in v4.4.1)</li>
<li>Fixed display of module name for forward references (<a
href="https://redirect.github.com/agronholm/typeguard/pull/492">#492</a>;
PR by <a
href="https://github.com/JelleZijlstra"><code>@​JelleZijlstra</code></a>)</li>
<li>Fixed <code>TypeError</code> when using an assignment expression (<a
href="https://redirect.github.com/agronholm/typeguard/issues/510">#510</a>;
PR by <a
href="https://github.com/JohannesK71083"><code>@​JohannesK71083</code></a>)</li>
<li>Fixed <code>ValueError: no signature found for builtin</code> when
checking against a protocol and a matching attribute in the subject is a
built-in function (<a
href="https://redirect.github.com/agronholm/typeguard/issues/504">#504</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/agronholm/typeguard/blob/master/docs/versionhistory.rst">typeguard's
changelog</a>.</em></p>
<blockquote>
<h1>Version history</h1>
<p>This library adheres to
<code>Semantic Versioning 2.0
&lt;https://semver.org/#semantic-versioning-200&gt;</code>_.</p>
<p><strong>4.4.2</strong> (2025-02-16)</p>
<ul>
<li>Fixed <code>TypeCheckError</code> in unpacking assignment involving
properties of a parameter
of the function
(<code>[#506](agronholm/typeguard#506)
&lt;https://github.com/agronholm/typeguard/issues/506&gt;</code>_;
regression introduced in v4.4.1)</li>
<li>Fixed display of module name for forward references
(<code>[#492](agronholm/typeguard#492)
&lt;https://github.com/agronholm/typeguard/pull/492&gt;</code>_; PR by
<a
href="https://github.com/JelleZijlstra"><code>@​JelleZijlstra</code></a>)</li>
<li>Fixed <code>TypeError</code> when using an assignment expression
(<code>[#510](agronholm/typeguard#510)
&lt;https://github.com/agronholm/typeguard/issues/510&gt;</code>_; PR by
<a
href="https://github.com/JohannesK71083"><code>@​JohannesK71083</code></a>)</li>
<li>Fixed <code>ValueError: no signature found for builtin</code> when
checking against a protocol
and a matching attribute in the subject is a built-in function
(<code>[#504](agronholm/typeguard#504)
&lt;https://github.com/agronholm/typeguard/issues/504&gt;</code>_)</li>
</ul>
<p><strong>4.4.1</strong> (2024-11-03)</p>
<ul>
<li>Dropped Python 3.8 support</li>
<li>Changed the signature of <code>typeguard_ignore()</code> to be
compatible with
<code>typing.no_type_check()</code> (PR by <a
href="https://github.com/jolaf"><code>@​jolaf</code></a>)</li>
<li>Avoid creating reference cycles when type checking uniontypes and
classes</li>
<li>Fixed checking of variable assignments involving tuple unpacking
(<code>[#486](agronholm/typeguard#486)
&lt;https://github.com/agronholm/typeguard/issues/486&gt;</code>_)</li>
<li>Fixed <code>TypeError</code> when checking a class against
<code>type[Self]</code>
(<code>[#481](agronholm/typeguard#481)
&lt;https://github.com/agronholm/typeguard/issues/481&gt;</code>_)</li>
<li>Fixed checking of protocols on the class level (against
<code>type[SomeProtocol]</code>)
(<code>[#498](agronholm/typeguard#498)
&lt;https://github.com/agronholm/typeguard/issues/498&gt;</code>_)</li>
<li>Fixed <code>Self</code> checks in instance/class methods that have
positional-only arguments</li>
<li>Fixed explicit checks of PEP 604 unions against
<code>types.UnionType</code>
(<code>[#467](agronholm/typeguard#467)
&lt;https://github.com/agronholm/typeguard/issues/467&gt;</code>_)</li>
<li>Fixed checks against annotations wrapped in <code>NotRequired</code>
not being run unless the
<code>NotRequired</code> is a forward reference
(<code>[#454](agronholm/typeguard#454)
&lt;https://github.com/agronholm/typeguard/issues/454&gt;</code>_)</li>
</ul>
<p><strong>4.4.0</strong> (2024-10-27)</p>
<ul>
<li>Added proper checking for method signatures in protocol checks
(<code>[#465](agronholm/typeguard#465)
&lt;https://github.com/agronholm/typeguard/pull/465&gt;</code>_)</li>
<li>Fixed basic support for intersection protocols
(<code>[#490](agronholm/typeguard#490)
&lt;https://github.com/agronholm/typeguard/pull/490&gt;</code>_; PR by
<a
href="https://github.com/antonagestam"><code>@​antonagestam</code></a>)</li>
</ul>
<p><strong>4.3.0</strong> (2024-05-27)</p>
<ul>
<li>Added support for checking against static protocols</li>
<li>Fixed some compatibility problems when running on Python 3.13
(<code>[#460](agronholm/typeguard#460)
&lt;https://github.com/agronholm/typeguard/issues/460&gt;</code>_; PR by
<a
href="https://github.com/JelleZijlstra"><code>@​JelleZijlstra</code></a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/agronholm/typeguard/commit/7f63619e75a2500fb150c12a75d7da1003acbf0e"><code>7f63619</code></a>
Added release date</li>
<li><a
href="https://github.com/agronholm/typeguard/commit/056a9a8f65620447c8cc76c67d87f7fad4a1a66f"><code>056a9a8</code></a>
Fixed signature check raising ValueError for a built-in function</li>
<li><a
href="https://github.com/agronholm/typeguard/commit/855991147c66437319b43048e207b70b13056005"><code>8559911</code></a>
Switched to JSON output when running mypy</li>
<li><a
href="https://github.com/agronholm/typeguard/commit/447ee40a1b35c1273f83e3c1ddf48c04745f021d"><code>447ee40</code></a>
Fixed checking of assignment expressions (<a
href="https://redirect.github.com/agronholm/typeguard/issues/511">#511</a>)</li>
<li><a
href="https://github.com/agronholm/typeguard/commit/95ef60d9f0d50c00a7027928d8ab0fd6170f0da3"><code>95ef60d</code></a>
Fixes for Python 3.14 and PEP 649 (<a
href="https://redirect.github.com/agronholm/typeguard/issues/492">#492</a>)</li>
<li><a
href="https://github.com/agronholm/typeguard/commit/f282802f7f1e3b8530df3104a15ae67838ad567e"><code>f282802</code></a>
Fixed TypeCheckError in unpacking assignment involving properties</li>
<li><a
href="https://github.com/agronholm/typeguard/commit/91b0cbd6b969689353f3345879ec28e64619ad72"><code>91b0cbd</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/agronholm/typeguard/issues/505">#505</a>)</li>
<li><a
href="https://github.com/agronholm/typeguard/commit/b6a7e4387c30a9f7d635712157c889eb073c1ea3"><code>b6a7e43</code></a>
Removed changelog entry that was in fact not a user-facing change</li>
<li>See full diff in <a
href="https://github.com/agronholm/typeguard/compare/4.4.1...4.4.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typeguard&package-manager=pip&previous-version=4.4.1&new-version=4.4.2)](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
dionhaefner added a commit to pasteurlabs/tesseract-core that referenced this pull request Feb 26, 2025
Bumps the deps group with 12 updates:

| Package | From | To |
| --- | --- | --- |
| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.5` |
| [typer](https://github.com/fastapi/typer) | `0.15.0` | `0.15.1` |
| [rich](https://github.com/Textualize/rich) | `13.9.1` | `13.9.4` |
| [pydantic](https://github.com/pydantic/pydantic) | `2.10.0` | `2.10.6`
|
| [numpy](https://github.com/numpy/numpy) | `2.2.0` | `2.2.3` |
| [fastapi](https://github.com/fastapi/fastapi) | `0.115.0` | `0.115.8`
|
| [click](https://github.com/pallets/click) | `8.1.7` | `8.1.8` |
| [httpx](https://github.com/encode/httpx) | `0.28.0` | `0.28.1` |
| [pytest](https://github.com/pytest-dev/pytest) | `8.3.1` | `8.3.4` |
| [typeguard](https://github.com/agronholm/typeguard) | `4.4.1` |
`4.4.2` |
| [sphinx](https://github.com/sphinx-doc/sphinx) | `8.2.0` | `8.2.1` |
| [myst-parser](https://github.com/executablebooks/MyST-Parser) |
`4.0.0` | `4.0.1` |

Updates `jinja2` from 3.1.4 to 3.1.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/jinja/releases">jinja2's
releases</a>.</em></p>
<blockquote>
<h2>3.1.5</h2>
<p>This is the Jinja 3.1.5 security fix release, which fixes security
issues and bugs but does not otherwise change behavior and should not
result in breaking changes compared to the latest feature release.</p>
<p>PyPI: <a
href="https://pypi.org/project/Jinja2/3.1.5/">https://pypi.org/project/Jinja2/3.1.5/</a>
Changes: <a
href="https://jinja.palletsprojects.com/changes/#version-3-1-5">https://jinja.palletsprojects.com/changes/#version-3-1-5</a>
Milestone: <a
href="https://github.com/pallets/jinja/milestone/16?closed=1">https://github.com/pallets/jinja/milestone/16?closed=1</a></p>
<ul>
<li>The sandboxed environment handles indirect calls to
<code>str.format</code>, such as by passing a stored reference to a
filter that calls its argument. <a
href="https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h">GHSA-q2x7-8rv6-6q7h</a></li>
<li>Escape template name before formatting it into error messages, to
avoid issues with names that contain f-string syntax. <a
href="https://redirect.github.com/pallets/jinja/issues/1792">#1792</a>,
<a
href="https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699">GHSA-gmj6-6f8f-6699</a></li>
<li>Sandbox does not allow <code>clear</code> and <code>pop</code> on
known mutable sequence types. <a
href="https://redirect.github.com/pallets/jinja/issues/2032">#2032</a></li>
<li>Calling sync <code>render</code> for an async template uses
<code>asyncio.run</code>. <a
href="https://redirect.github.com/pallets/jinja/issues/1952">#1952</a></li>
<li>Avoid unclosed <code>auto_aiter</code> warnings. <a
href="https://redirect.github.com/pallets/jinja/issues/1960">#1960</a></li>
<li>Return an <code>aclose</code>-able <code>AsyncGenerator</code> from
<code>Template.generate_async</code>. <a
href="https://redirect.github.com/pallets/jinja/issues/1960">#1960</a></li>
<li>Avoid leaving <code>root_render_func()</code> unclosed in
<code>Template.generate_async</code>. <a
href="https://redirect.github.com/pallets/jinja/issues/1960">#1960</a></li>
<li>Avoid leaving async generators unclosed in blocks, includes and
extends. <a
href="https://redirect.github.com/pallets/jinja/issues/1960">#1960</a></li>
<li>The runtime uses the correct <code>concat</code> function for the
current environment when calling block references. <a
href="https://redirect.github.com/pallets/jinja/issues/1701">#1701</a></li>
<li>Make <code>|unique</code> async-aware, allowing it to be used after
another async-aware filter. <a
href="https://redirect.github.com/pallets/jinja/issues/1781">#1781</a></li>
<li><code>|int</code> filter handles <code>OverflowError</code> from
scientific notation. <a
href="https://redirect.github.com/pallets/jinja/issues/1921">#1921</a></li>
<li>Make compiling deterministic for tuple unpacking in a <code>{% set
... %}</code> call. <a
href="https://redirect.github.com/pallets/jinja/issues/2021">#2021</a></li>
<li>Fix dunder protocol (<code>copy</code>/<code>pickle</code>/etc)
interaction with <code>Undefined</code> objects. <a
href="https://redirect.github.com/pallets/jinja/issues/2025">#2025</a></li>
<li>Fix <code>copy</code>/<code>pickle</code> support for the internal
<code>missing</code> object. <a
href="https://redirect.github.com/pallets/jinja/issues/2027">#2027</a></li>
<li><code>Environment.overlay(enable_async)</code> is applied correctly.
<a
href="https://redirect.github.com/pallets/jinja/issues/2061">#2061</a></li>
<li>The error message from <code>FileSystemLoader</code> includes the
paths that were searched. <a
href="https://redirect.github.com/pallets/jinja/issues/1661">#1661</a></li>
<li><code>PackageLoader</code> shows a clearer error message when the
package does not contain the templates directory. <a
href="https://redirect.github.com/pallets/jinja/issues/1705">#1705</a></li>
<li>Improve annotations for methods returning copies. <a
href="https://redirect.github.com/pallets/jinja/issues/1880">#1880</a></li>
<li><code>urlize</code> does not add <code>mailto:</code> to values like
<code>@a@b</code>. <a
href="https://redirect.github.com/pallets/jinja/issues/1870">#1870</a></li>
<li>Tests decorated with <code>@pass_context</code> can be used with the
<code>|select</code> filter. <a
href="https://redirect.github.com/pallets/jinja/issues/1624">#1624</a></li>
<li>Using <code>set</code> for multiple assignment (<code>a, b = 1,
2</code>) does not fail when the target is a namespace attribute. <a
href="https://redirect.github.com/pallets/jinja/issues/1413">#1413</a></li>
<li>Using <code>set</code> in all branches of <code>{% if %}{% elif %}{%
else %}</code> blocks does not cause the variable to be considered
initially undefined. <a
href="https://redirect.github.com/pallets/jinja/issues/1253">#1253</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/jinja/blob/main/CHANGES.rst">jinja2's
changelog</a>.</em></p>
<blockquote>
<h2>Version 3.1.5</h2>
<p>Released 2024-12-21</p>
<ul>
<li>The sandboxed environment handles indirect calls to
<code>str.format</code>, such as
by passing a stored reference to a filter that calls its argument.
:ghsa:<code>q2x7-8rv6-6q7h</code></li>
<li>Escape template name before formatting it into error messages, to
avoid
issues with names that contain f-string syntax.
:issue:<code>1792</code>, :ghsa:<code>gmj6-6f8f-6699</code></li>
<li>Sandbox does not allow <code>clear</code> and <code>pop</code> on
known mutable sequence
types. :issue:<code>2032</code></li>
<li>Calling sync <code>render</code> for an async template uses
<code>asyncio.run</code>.
:pr:<code>1952</code></li>
<li>Avoid unclosed <code>auto_aiter</code> warnings.
:pr:<code>1960</code></li>
<li>Return an <code>aclose</code>-able <code>AsyncGenerator</code> from
<code>Template.generate_async</code>. :pr:<code>1960</code></li>
<li>Avoid leaving <code>root_render_func()</code> unclosed in
<code>Template.generate_async</code>. :pr:<code>1960</code></li>
<li>Avoid leaving async generators unclosed in blocks, includes and
extends.
:pr:<code>1960</code></li>
<li>The runtime uses the correct <code>concat</code> function for the
current environment
when calling block references. :issue:<code>1701</code></li>
<li>Make <code>|unique</code> async-aware, allowing it to be used after
another
async-aware filter. :issue:<code>1781</code></li>
<li><code>|int</code> filter handles <code>OverflowError</code> from
scientific notation.
:issue:<code>1921</code></li>
<li>Make compiling deterministic for tuple unpacking in a <code>{% set
... %}</code>
call. :issue:<code>2021</code></li>
<li>Fix dunder protocol (<code>copy</code>/<code>pickle</code>/etc)
interaction with <code>Undefined</code>
objects. :issue:<code>2025</code></li>
<li>Fix <code>copy</code>/<code>pickle</code> support for the internal
<code>missing</code> object.
:issue:<code>2027</code></li>
<li><code>Environment.overlay(enable_async)</code> is applied correctly.
:pr:<code>2061</code></li>
<li>The error message from <code>FileSystemLoader</code> includes the
paths that were
searched. :issue:<code>1661</code></li>
<li><code>PackageLoader</code> shows a clearer error message when the
package does not
contain the templates directory. :issue:<code>1705</code></li>
<li>Improve annotations for methods returning copies.
:pr:<code>1880</code></li>
<li><code>urlize</code> does not add <code>mailto:</code> to values like
<code>@a@b</code>. :pr:<code>1870</code></li>
<li>Tests decorated with <code>@pass_context`` can be used with the
``|select`` filter. :issue:</code>1624`</li>
<li>Using <code>set</code> for multiple assignment (<code>a, b = 1,
2</code>) does not fail when the
target is a namespace attribute. :issue:<code>1413</code></li>
<li>Using <code>set</code> in all branches of <code>{% if %}{% elif %}{%
else %}</code> blocks
does not cause the variable to be considered initially undefined.
:issue:<code>1253</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1"><code>877f6e5</code></a>
release version 3.1.5</li>
<li><a
href="https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f"><code>8d58859</code></a>
remove test pypi</li>
<li><a
href="https://github.com/pallets/jinja/commit/eda8fe86fd716dfce24910294e9f1fc81fbc740c"><code>eda8fe8</code></a>
update dev dependencies</li>
<li><a
href="https://github.com/pallets/jinja/commit/c8fdce1e0333f1122b244b03a48535fdd7b03d91"><code>c8fdce1</code></a>
Fix bug involving calling set on a template parameter within all
branches of ...</li>
<li><a
href="https://github.com/pallets/jinja/commit/66587ce989e5a478e0bb165371fa2b9d42b7040f"><code>66587ce</code></a>
Fix bug where set would sometimes fail within if</li>
<li><a
href="https://github.com/pallets/jinja/commit/fbc3a696c729d177340cc089531de7e2e5b6f065"><code>fbc3a69</code></a>
Add support for namespaces in tuple parsing (<a
href="https://redirect.github.com/pallets/jinja/issues/1664">#1664</a>)</li>
<li><a
href="https://github.com/pallets/jinja/commit/b8f4831d41e6a7cb5c40d42f074ffd92d2daccfc"><code>b8f4831</code></a>
more comments about nsref assignment</li>
<li><a
href="https://github.com/pallets/jinja/commit/ee832194cd9f55f75e5a51359b709d535efe957f"><code>ee83219</code></a>
Add support for namespaces in tuple assignment</li>
<li><a
href="https://github.com/pallets/jinja/commit/1d55cddbb28e433779511f28f13a2d8c4ec45826"><code>1d55cdd</code></a>
Triple quotes in docs (<a
href="https://redirect.github.com/pallets/jinja/issues/2064">#2064</a>)</li>
<li><a
href="https://github.com/pallets/jinja/commit/8a8eafc6b992ba177f1d3dd483f8465f18a11116"><code>8a8eafc</code></a>
edit block assignment section</li>
<li>Additional commits viewable in <a
href="https://github.com/pallets/jinja/compare/3.1.4...3.1.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `typer` from 0.15.0 to 0.15.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/fastapi/typer/releases">typer's
releases</a>.</em></p>
<blockquote>
<h2>0.15.1</h2>
<h3>Features</h3>
<ul>
<li>🗑️ Deprecate <code>shell_complete</code> and continue to use
<code>autocompletion</code> for CLI parameters. PR <a
href="https://redirect.github.com/fastapi/typer/pull/974">#974</a> by <a
href="https://github.com/svlandeg"><code>@​svlandeg</code></a>.</li>
</ul>
<h3>Docs</h3>
<ul>
<li>✏️ Fix a few typos in the source and documentation. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1028">#1028</a> by
<a href="https://github.com/kkirsche"><code>@​kkirsche</code></a>.</li>
<li>📝 Fix minor inconsistencies and typos in tutorial. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1067">#1067</a> by
<a href="https://github.com/tvoirand"><code>@​tvoirand</code></a>.</li>
<li>✏️ Fix a few small typos in the documentation. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1077">#1077</a> by
<a href="https://github.com/svlandeg"><code>@​svlandeg</code></a>.</li>
</ul>
<h3>Internal</h3>
<ul>
<li>🔧 Update build-docs filter patterns. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1080">#1080</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🔨 Update deploy docs preview script. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1079">#1079</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🔧 Update members. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1078">#1078</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>⬆ [pre-commit.ci] pre-commit autoupdate. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1071">#1071</a> by
<a
href="https://github.com/apps/pre-commit-ci"><code>@​pre-commit-ci[bot]</code></a>.</li>
<li>⬆ Update httpx requirement from <!-- raw HTML omitted
-->=0.27.0,&lt;0.29.0. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1065">#1065</a> by
<a
href="https://github.com/apps/dependabot"><code>@​dependabot[bot]</code></a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/fastapi/typer/blob/master/docs/release-notes.md">typer's
changelog</a>.</em></p>
<blockquote>
<h2>0.15.1</h2>
<h3>Features</h3>
<ul>
<li>🗑️ Deprecate <code>shell_complete</code> and continue to use
<code>autocompletion</code> for CLI parameters. PR <a
href="https://redirect.github.com/fastapi/typer/pull/974">#974</a> by <a
href="https://github.com/svlandeg"><code>@​svlandeg</code></a>.</li>
</ul>
<h3>Docs</h3>
<ul>
<li>✏️ Fix a few typos in the source and documentation. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1028">#1028</a> by
<a href="https://github.com/kkirsche"><code>@​kkirsche</code></a>.</li>
<li>📝 Fix minor inconsistencies and typos in tutorial. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1067">#1067</a> by
<a href="https://github.com/tvoirand"><code>@​tvoirand</code></a>.</li>
<li>✏️ Fix a few small typos in the documentation. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1077">#1077</a> by
<a href="https://github.com/svlandeg"><code>@​svlandeg</code></a>.</li>
</ul>
<h3>Internal</h3>
<ul>
<li>🔧 Update build-docs filter patterns. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1080">#1080</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🔨 Update deploy docs preview script. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1079">#1079</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🔧 Update members. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1078">#1078</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>⬆ [pre-commit.ci] pre-commit autoupdate. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1071">#1071</a> by
<a
href="https://github.com/apps/pre-commit-ci"><code>@​pre-commit-ci[bot]</code></a>.</li>
<li>⬆ Update httpx requirement from <!-- raw HTML omitted
-->=0.27.0,&lt;0.29.0. PR <a
href="https://redirect.github.com/fastapi/typer/pull/1065">#1065</a> by
<a
href="https://github.com/apps/dependabot"><code>@​dependabot[bot]</code></a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fastapi/typer/commit/0b89650d1e694f5c936836c9b768d8c023413cf2"><code>0b89650</code></a>
🔖 Release version 0.15.1</li>
<li><a
href="https://github.com/fastapi/typer/commit/bd89bf62f2bfe0af8667e85db341db1f32db694d"><code>bd89bf6</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/typer/commit/3b9ce479086636280271d36e410dc5abdcf318d8"><code>3b9ce47</code></a>
✏️ Fix a few typos in the source and documentation (<a
href="https://redirect.github.com/fastapi/typer/issues/1028">#1028</a>)</li>
<li><a
href="https://github.com/fastapi/typer/commit/95ba85f5b3c8088733e22218d9c87eb38e03ab08"><code>95ba85f</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/typer/commit/dbc335b0824b952c70278cccb5dbcf774cdba9b5"><code>dbc335b</code></a>
📝 Fix minor inconsistencies and typos in tutorial (<a
href="https://redirect.github.com/fastapi/typer/issues/1067">#1067</a>)</li>
<li><a
href="https://github.com/fastapi/typer/commit/b88c327d1c3c94de53280130f787a320f3378f69"><code>b88c327</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/typer/commit/d8e56e275f63446e7d455efc83095ec4d711114d"><code>d8e56e2</code></a>
🗑️ Deprecate <code>shell_complete</code> and continue to use
<code>autocompletion</code> for CLI pa...</li>
<li><a
href="https://github.com/fastapi/typer/commit/5f378eec9d8400960e89a305763572f97237afe4"><code>5f378ee</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/typer/commit/b826dc445162af7d6edd1aebe173fa49c1d683ce"><code>b826dc4</code></a>
✏️ Fix a few small typos in the documentation (<a
href="https://redirect.github.com/fastapi/typer/issues/1077">#1077</a>)</li>
<li><a
href="https://github.com/fastapi/typer/commit/9be60da3aec1693ca787947f8c8154a9b6c9fc5b"><code>9be60da</code></a>
📝 Update release notes</li>
<li>Additional commits viewable in <a
href="https://github.com/fastapi/typer/compare/0.15.0...0.15.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `rich` from 13.9.1 to 13.9.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Textualize/rich/releases">rich's
releases</a>.</em></p>
<blockquote>
<h2>The Faster is Faster release</h2>
<h2>[13.9.4] - 2024-11-01</h2>
<h3>Changed</h3>
<ul>
<li>Optimizations to cell_len which may speed up Rich / Textual output
<a
href="https://redirect.github.com/Textualize/rich/pull/3546">Textualize/rich#3546</a></li>
</ul>
<h2>The irregular expression release</h2>
<p>Fix a broken regex that resulted in the slow path being chosen for
some operations. This fix should result in notable speedups for some
operations, such as wrapping text.</p>
<h2>[13.9.3] - 2024-10-22</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed broken regex that may have resulted in poor performance. <a
href="https://redirect.github.com/Textualize/rich/pull/3535">Textualize/rich#3535</a></li>
</ul>
<h2>The Splitting segments Release</h2>
<p>A hotfix for highlighting in the table, and a fix for
<code>Segment.split_cells</code></p>
<h2>[13.9.2] - 2024-10-04</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed <code>Table</code> columns not highlighting when added by
<code>add_row</code> <a
href="https://redirect.github.com/Textualize/rich/issues/3517">Textualize/rich#3517</a></li>
<li>Fixed an issue with Segment.split_cells reported in Textual <a
href="https://redirect.github.com/Textualize/textual/issues/5090">Textualize/textual#5090</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Textualize/rich/blob/master/CHANGELOG.md">rich's
changelog</a>.</em></p>
<blockquote>
<h2>[13.9.4] - 2024-11-01</h2>
<h3>Changed</h3>
<ul>
<li>Optimizations to cell_len which may speed up Rich / Textual output
<a
href="https://redirect.github.com/Textualize/rich/pull/3546">Textualize/rich#3546</a></li>
</ul>
<h2>[13.9.3] - 2024-10-22</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed broken regex that may have resulted in poor performance. <a
href="https://redirect.github.com/Textualize/rich/pull/3535">Textualize/rich#3535</a></li>
</ul>
<h2>[13.9.2] - 2024-10-04</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed <code>Table</code> columns not highlighting when added by
<code>add_row</code> <a
href="https://redirect.github.com/Textualize/rich/issues/3517">Textualize/rich#3517</a></li>
<li>Fixed an issue with Segment.split_cells reported in Textual <a
href="https://redirect.github.com/Textualize/textual/issues/5090">Textualize/textual#5090</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Textualize/rich/commit/43d3b04725ab9731727fb1126e35980c62f32377"><code>43d3b04</code></a>
Merge pull request <a
href="https://redirect.github.com/Textualize/rich/issues/3548">#3548</a>
from Textualize/bump1394</li>
<li><a
href="https://github.com/Textualize/rich/commit/e440ff23806372ec221fa8f22c57a9d31828de4b"><code>e440ff2</code></a>
bump</li>
<li><a
href="https://github.com/Textualize/rich/commit/12301e3041455cde59f463a8e1522070e16ceb28"><code>12301e3</code></a>
Merge pull request <a
href="https://redirect.github.com/Textualize/rich/issues/3546">#3546</a>
from Textualize/faster-cell-len</li>
<li><a
href="https://github.com/Textualize/rich/commit/02f3d148e8f7143519272ed6404cc6894dc13ec6"><code>02f3d14</code></a>
comment</li>
<li><a
href="https://github.com/Textualize/rich/commit/aaaef278be38ebadea3d6f47dedd89fd910078ca"><code>aaaef27</code></a>
leaner syntax</li>
<li><a
href="https://github.com/Textualize/rich/commit/6cef0bcb0e584eac1eb6021cc2202ecad70b6b11"><code>6cef0bc</code></a>
leaner cell_len</li>
<li><a
href="https://github.com/Textualize/rich/commit/46150cdbf61426c4683c59a0e4f45dca23d38202"><code>46150cd</code></a>
sum and map is faster</li>
<li><a
href="https://github.com/Textualize/rich/commit/9e7f363aebe01542210633dd4027ce777bf31e3c"><code>9e7f363</code></a>
use sets</li>
<li><a
href="https://github.com/Textualize/rich/commit/afcc5c5a957c75b325fd7cc45bd70b3ac6413ef4"><code>afcc5c5</code></a>
Merge pull request <a
href="https://redirect.github.com/Textualize/rich/issues/3535">#3535</a>
from Textualize/regex-error</li>
<li><a
href="https://github.com/Textualize/rich/commit/60f3b615a706949f6ae9734eeaea519573af4522"><code>60f3b61</code></a>
changelog</li>
<li>Additional commits viewable in <a
href="https://github.com/Textualize/rich/compare/v13.9.1...v13.9.4">compare
view</a></li>
</ul>
</details>
<br />

Updates `pydantic` from 2.10.0 to 2.10.6
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pydantic/pydantic/releases">pydantic's
releases</a>.</em></p>
<blockquote>
<h2>v2.10.6 2025-01-23</h2>
<h2>What's Changed</h2>
<h3>Fixes</h3>
<ul>
<li>Fix JSON Schema reference collection with <code>'examples'</code>
keys by <a href="https://github.com/Viicos"><code>@​Viicos</code></a> in
<a
href="https://redirect.github.com/pydantic/pydantic/pull/11325">#11325</a></li>
<li>Fix url python serialization by <a
href="https://github.com/sydney-runkle"><code>@​sydney-runkle</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11331">#11331</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pydantic/pydantic/compare/v2.10.5...v2.10.6">https://github.com/pydantic/pydantic/compare/v2.10.5...v2.10.6</a></p>
<h2>v2.10.5 2024-12-18</h2>
<h2>What's Changed</h2>
<h3>Fixes</h3>
<ul>
<li>Remove custom MRO implementation of Pydantic models by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11184">#11184</a></li>
<li>Fix URL serialization for unions by <a
href="https://github.com/sydney-runkle"><code>@​sydney-runkle</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11233">#11233</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pydantic/pydantic/compare/v2.10.4...v2.10.5">https://github.com/pydantic/pydantic/compare/v2.10.4...v2.10.5</a></p>
<h2>v2.10.4 2024-12-18</h2>
<h2>What's Changed</h2>
<h3>Packaging</h3>
<ul>
<li>Bump <code>pydantic-core</code> to v2.27.2 by <a
href="https://github.com/davidhewitt"><code>@​davidhewitt</code></a> in
<a
href="https://redirect.github.com/pydantic/pydantic/pull/11138">#11138</a></li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fix for comparison of <code>AnyUrl</code> objects by <a
href="https://github.com/alexprabhat99"><code>@​alexprabhat99</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11082">#11082</a></li>
<li>Properly fetch PEP 695 type params for functions, do not fetch
annotations from signature by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11093">#11093</a></li>
<li>Include JSON Schema input core schema in function schemas by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11085">#11085</a></li>
<li>Add <code>len</code> to <code>_BaseUrl</code> to avoid TypeError by
<a href="https://github.com/Kharianne"><code>@​Kharianne</code></a> in
<a
href="https://redirect.github.com/pydantic/pydantic/pull/11111">#11111</a></li>
<li>Make sure the type reference is removed from the seen references by
<a href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11143">#11143</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/alexprabhat99"><code>@​alexprabhat99</code></a>
made their first contribution in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11082">#11082</a></li>
<li><a href="https://github.com/Kharianne"><code>@​Kharianne</code></a>
made their first contribution in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11111">#11111</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pydantic/pydantic/compare/v2.10.3...v2.10.4">https://github.com/pydantic/pydantic/compare/v2.10.3...v2.10.4</a></p>
<h2>v2.10.3 2024-12-03</h2>
<h2>What's Changed</h2>
<h3>Fixes</h3>
<ul>
<li>Set fields when <code>defer_build</code> is set on Pydantic
dataclasses by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/10984">#10984</a></li>
<li>Do not resolve the JSON Schema reference for <code>dict</code> core
schema keys by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/10989">#10989</a></li>
<li>Use the globals of the function when evaluating the return type for
<code>PlainSerializer</code> and <code>WrapSerializer</code> functions
by <a href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11008">#11008</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pydantic/pydantic/blob/main/HISTORY.md">pydantic's
changelog</a>.</em></p>
<blockquote>
<h2>v2.10.6 (2025-01-23)</h2>
<p><a
href="https://github.com/pydantic/pydantic/releases/tag/v2.10.6">GitHub
release</a></p>
<h3>What's Changed</h3>
<h4>Fixes</h4>
<ul>
<li>Fix JSON Schema reference collection with <code>'examples'</code>
keys by <a href="https://github.com/Viicos"><code>@​Viicos</code></a> in
<a
href="https://redirect.github.com/pydantic/pydantic/pull/11325">#11325</a></li>
<li>Fix url python serialization by <a
href="https://github.com/sydney-runkle"><code>@​sydney-runkle</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11331">#11331</a></li>
</ul>
<h2>v2.10.5 (2025-01-08)</h2>
<p><a
href="https://github.com/pydantic/pydantic/releases/tag/v2.10.5">GitHub
release</a></p>
<h3>What's Changed</h3>
<h4>Fixes</h4>
<ul>
<li>Remove custom MRO implementation of Pydantic models by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11184">#11184</a></li>
<li>Fix URL serialization for unions by <a
href="https://github.com/sydney-runkle"><code>@​sydney-runkle</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11233">#11233</a></li>
</ul>
<h2>v2.10.4 (2024-12-18)</h2>
<p><a
href="https://github.com/pydantic/pydantic/releases/tag/v2.10.4">GitHub
release</a></p>
<h3>What's Changed</h3>
<h4>Packaging</h4>
<ul>
<li>Bump <code>pydantic-core</code> to v2.27.2 by <a
href="https://github.com/davidhewitt"><code>@​davidhewitt</code></a> in
<a
href="https://redirect.github.com/pydantic/pydantic/pull/11138">#11138</a></li>
</ul>
<h4>Fixes</h4>
<ul>
<li>Fix for comparison of <code>AnyUrl</code> objects by <a
href="https://github.com/alexprabhat99"><code>@​alexprabhat99</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11082">#11082</a></li>
<li>Properly fetch PEP 695 type params for functions, do not fetch
annotations from signature by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11093">#11093</a></li>
<li>Include JSON Schema input core schema in function schemas by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11085">#11085</a></li>
<li>Add <code>len</code> to <code>_BaseUrl</code> to avoid TypeError by
<a href="https://github.com/Kharianne"><code>@​Kharianne</code></a> in
<a
href="https://redirect.github.com/pydantic/pydantic/pull/11111">#11111</a></li>
<li>Make sure the type reference is removed from the seen references by
<a href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11143">#11143</a></li>
</ul>
<h3>New Contributors</h3>
<ul>
<li><a href="https://github.com/FyZzyss"><code>@​FyZzyss</code></a> made
their first contribution in <a
href="https://redirect.github.com/pydantic/pydantic/pull/10789">#10789</a></li>
<li><a href="https://github.com/tamird"><code>@​tamird</code></a> made
their first contribution in <a
href="https://redirect.github.com/pydantic/pydantic/pull/10948">#10948</a></li>
<li><a href="https://github.com/felixxm"><code>@​felixxm</code></a> made
their first contribution in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11077">#11077</a></li>
<li><a
href="https://github.com/alexprabhat99"><code>@​alexprabhat99</code></a>
made their first contribution in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11082">#11082</a></li>
<li><a href="https://github.com/Kharianne"><code>@​Kharianne</code></a>
made their first contribution in <a
href="https://redirect.github.com/pydantic/pydantic/pull/11111">#11111</a></li>
</ul>
<h2>v2.10.3 (2024-12-03)</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pydantic/pydantic/commit/df05e69a8a3fb37628a0e3a33518ca0425334bc9"><code>df05e69</code></a>
Bump version to v2.10.6 (<a
href="https://redirect.github.com/pydantic/pydantic/issues/11334">#11334</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/416082625aed40ce341faf4b13e366f1ef51838d"><code>4160826</code></a>
Fix url python serialization (<a
href="https://redirect.github.com/pydantic/pydantic/issues/11331">#11331</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/f94e842692969168ff8ea7ecefa6815fff2883d8"><code>f94e842</code></a>
Fix JSON Schema reference collection with
<code>&quot;examples&quot;</code> keys (<a
href="https://redirect.github.com/pydantic/pydantic/issues/11325">#11325</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/5d34efda82895b8697649e20616aea385d769eaf"><code>5d34efd</code></a>
Prepare release v2.10.5 (<a
href="https://redirect.github.com/pydantic/pydantic/issues/11237">#11237</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/6e585f925e25f91f365ae6ad6c910a667f9d78e9"><code>6e585f9</code></a>
Fix url serialization for unions (<a
href="https://redirect.github.com/pydantic/pydantic/issues/11233">#11233</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/5a22e026084044acbf6f24e0760d9903be0bfa5a"><code>5a22e02</code></a>
Remove custom MRO implementation of Pydantic models (<a
href="https://redirect.github.com/pydantic/pydantic/issues/11195">#11195</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/5bd3a6507b749fcd4833173fba88b3690ff77170"><code>5bd3a65</code></a>
fix history.md</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/46f094569a071a99b313ec21b36568ceb1615635"><code>46f0945</code></a>
Prepare for v2.10.4 (<a
href="https://redirect.github.com/pydantic/pydantic/issues/11144">#11144</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/ea69e695f27fc8d93934bd07b262189dd7987dd9"><code>ea69e69</code></a>
Make sure the type reference is removed from the seen references (<a
href="https://redirect.github.com/pydantic/pydantic/issues/11145">#11145</a>)</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/a07c31e4a49bd3a01485ed0aabf55c5e0ac83ca7"><code>a07c31e</code></a>
Include JSON Schema input core schema in function schemas (<a
href="https://redirect.github.com/pydantic/pydantic/issues/11142">#11142</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pydantic/pydantic/compare/v2.10.0...v2.10.6">compare
view</a></li>
</ul>
</details>
<br />

Updates `numpy` from 2.2.0 to 2.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/numpy/numpy/releases">numpy's
releases</a>.</em></p>
<blockquote>
<h2>2.2.3 (Feb 13, 2025)</h2>
<h1>NumPy 2.2.3 Release Notes</h1>
<p>NumPy 2.2.3 is a patch release that fixes bugs found after the 2.2.2
release. The majority of the changes are typing improvements and fixes
for free threaded Python. Both of those areas are still under
development, so if you discover new problems, please report them.</p>
<p>This release supports Python versions 3.10-3.13.</p>
<h2>Contributors</h2>
<p>A total of 9 people contributed to this release. People with a
&quot;+&quot; by
their names contributed a patch for the first time.</p>
<ul>
<li>!amotzop</li>
<li>Charles Harris</li>
<li>Chris Sidebottom</li>
<li>Joren Hammudoglu</li>
<li>Matthew Brett</li>
<li>Nathan Goldbaum</li>
<li>Raghuveer Devulapalli</li>
<li>Sebastian Berg</li>
<li>Yakov Danishevsky +</li>
</ul>
<h2>Pull requests merged</h2>
<p>A total of 21 pull requests were merged for this release.</p>
<ul>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28185">#28185</a>:
MAINT: Prepare 2.2.x for further development</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28201">#28201</a>:
BUG: fix data race in a more minimal way on stable branch</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28208">#28208</a>:
BUG: Fix <code>from_float_positional</code> errors for huge pads</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28209">#28209</a>:
BUG: fix data race in np.repeat</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28212">#28212</a>:
MAINT: Use VQSORT_COMPILER_COMPATIBLE to determine if we should...</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28224">#28224</a>:
MAINT: update highway to latest</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28236">#28236</a>:
BUG: Add cpp atomic support (<a
href="https://redirect.github.com/numpy/numpy/issues/28234">#28234</a>)</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28237">#28237</a>:
BLD: Compile fix for clang-cl on WoA</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28243">#28243</a>:
TYP: Avoid upcasting <code>float64</code> in the set-ops</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28249">#28249</a>:
BLD: better fix for clang / ARM compiles</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28266">#28266</a>:
TYP: Fix <code>timedelta64.__divmod__</code> and
<code>timedelta64.__mod__</code>...</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28274">#28274</a>:
TYP: Fixed missing typing information of set_printoptions</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28278">#28278</a>:
BUG: backport resource cleanup bugfix from <a
href="https://redirect.github.com/numpy/numpy/issues/28273">gh-28273</a></li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28282">#28282</a>:
BUG: fix incorrect bytes to stringdtype coercion</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28283">#28283</a>:
TYP: Fix scalar constructors</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28284">#28284</a>:
TYP: stub <code>numpy.matlib</code></li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28285">#28285</a>:
TYP: stub the missing <code>numpy.testing</code> modules</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28286">#28286</a>:
CI: Fix the github label for <code>TYP:</code> PR's and issues</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28305">#28305</a>:
TYP: Backport typing updates from main</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28321">#28321</a>:
BUG: fix race initializing legacy dtype casts</li>
<li><a
href="https://redirect.github.com/numpy/numpy/pull/28324">#28324</a>:
CI: update test_moderately_small_alpha</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/numpy/numpy/commit/a27456108104ac11e8564c2f18710997f3a55eb9"><code>a274561</code></a>
Merge pull request <a
href="https://redirect.github.com/numpy/numpy/issues/28322">#28322</a>
from charris/prepare-2.2.3</li>
<li><a
href="https://github.com/numpy/numpy/commit/5ab0f7140ffe48c4e424f13b0207c28dda974547"><code>5ab0f71</code></a>
REL: Prepare for the NumPy 2.2.3 release [wheel build]</li>
<li><a
href="https://github.com/numpy/numpy/commit/010ad9b59799f8d753564441bb53cc1249782168"><code>010ad9b</code></a>
Merge pull request <a
href="https://redirect.github.com/numpy/numpy/issues/28324">#28324</a>
from charris/update-test_dirichlet_moderately_small...</li>
<li><a
href="https://github.com/numpy/numpy/commit/633874632a26e0af9b225608eff7abec31c92a87"><code>6338746</code></a>
CI: update test_moderately_small_alpha [wheel build]</li>
<li><a
href="https://github.com/numpy/numpy/commit/56f8d5b6bef06a1cfbffe77c69ff56a906c938a3"><code>56f8d5b</code></a>
Merge pull request <a
href="https://redirect.github.com/numpy/numpy/issues/28321">#28321</a>
from charris/backport-28290</li>
<li><a
href="https://github.com/numpy/numpy/commit/48515a33c93234a50a5eaa13d8472e159a5d6fa0"><code>48515a3</code></a>
MAINT: Update some testing files from main</li>
<li><a
href="https://github.com/numpy/numpy/commit/96ca7e3b248878b16ad197da395099033d06ddf8"><code>96ca7e3</code></a>
MAINT: respond to code review</li>
<li><a
href="https://github.com/numpy/numpy/commit/c20ac888de1d45c44c8d3a0e972a23e781a322ec"><code>c20ac88</code></a>
MAINT: use a try/finally to make the deadlock protection more
robust</li>
<li><a
href="https://github.com/numpy/numpy/commit/d4946475127870237d692df15edabb27d8fb2ef8"><code>d494647</code></a>
MAINT: fix indentation and clarify comment</li>
<li><a
href="https://github.com/numpy/numpy/commit/3f8fbd6a7494078558897cafcd40c5288452fb72"><code>3f8fbd6</code></a>
MAINT: go back to try/except</li>
<li>Additional commits viewable in <a
href="https://github.com/numpy/numpy/compare/v2.2.0...v2.2.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `fastapi` from 0.115.0 to 0.115.8
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/fastapi/fastapi/releases">fastapi's
releases</a>.</em></p>
<blockquote>
<h2>0.115.8</h2>
<h3>Fixes</h3>
<ul>
<li>🐛 Fix <code>OAuth2PasswordRequestForm</code> and
<code>OAuth2PasswordRequestFormStrict</code> fixed
<code>grant_type</code> &quot;password&quot; RegEx. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/9783">#9783</a>
by <a
href="https://github.com/skarfie123"><code>@​skarfie123</code></a>.</li>
</ul>
<h3>Refactors</h3>
<ul>
<li>✅ Simplify tests for body_multiple_params . PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13237">#13237</a>
by <a
href="https://github.com/alejsdev"><code>@​alejsdev</code></a>.</li>
<li>♻️ Move duplicated code portion to a static method in the
<code>APIKeyBase</code> super class. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/3142">#3142</a>
by <a
href="https://github.com/ShahriyarR"><code>@​ShahriyarR</code></a>.</li>
<li>✅ Simplify tests for request_files. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13182">#13182</a>
by <a
href="https://github.com/alejsdev"><code>@​alejsdev</code></a>.</li>
</ul>
<h3>Docs</h3>
<ul>
<li>📝 Change the word &quot;unwrap&quot; to &quot;unpack&quot; in
<code>docs/en/docs/tutorial/extra-models.md</code>. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13061">#13061</a>
by <a
href="https://github.com/timothy-jeong"><code>@​timothy-jeong</code></a>.</li>
<li>📝 Update Request Body's <code>tutorial002</code> to deal with
<code>tax=0</code> case. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13230">#13230</a>
by <a href="https://github.com/togogh"><code>@​togogh</code></a>.</li>
<li>👥 Update FastAPI People - Experts. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13269">#13269</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
<h3>Translations</h3>
<ul>
<li>🌐 Add Japanese translation for
<code>docs/ja/docs/environment-variables.md</code>. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13226">#13226</a>
by <a
href="https://github.com/k94-ishi"><code>@​k94-ishi</code></a>.</li>
<li>🌐 Add Russian translation for
<code>docs/ru/docs/advanced/async-tests.md</code>. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13227">#13227</a>
by <a
href="https://github.com/Rishat-F"><code>@​Rishat-F</code></a>.</li>
<li>🌐 Update Russian translation for
<code>docs/ru/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md</code>.
PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13252">#13252</a>
by <a
href="https://github.com/Rishat-F"><code>@​Rishat-F</code></a>.</li>
<li>🌐 Add Russian translation for
<code>docs/ru/docs/tutorial/bigger-applications.md</code>. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13154">#13154</a>
by <a href="https://github.com/alv2017"><code>@​alv2017</code></a>.</li>
</ul>
<h3>Internal</h3>
<ul>
<li>⬆️ Add support for Python 3.13. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13274">#13274</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>⬆️ Upgrade AnyIO max version for tests, new range:
<code>&gt;=3.2.1,&lt;5.0.0</code>. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13273">#13273</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🔧 Update Sponsors badges. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13271">#13271</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>♻️ Fix <code>notify_translations.py</code> empty env var handling
for PR label events vs workflow_dispatch. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13272">#13272</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>♻️ Refactor and move <code>scripts/notify_translations.py</code>, no
need for a custom GitHub Action. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13270">#13270</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>🔨 Update FastAPI People Experts script, refactor and optimize data
fetching to handle rate limits. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13267">#13267</a>
by <a
href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>⬆ Bump pypa/gh-action-pypi-publish from 1.12.3 to 1.12.4. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13251">#13251</a>
by <a
href="https://github.com/apps/dependabot"><code>@​dependabot[bot]</code></a>.</li>
</ul>
<h2>0.115.7</h2>
<h3>Upgrades</h3>
<ul>
<li>⬆️ Upgrade <code>python-multipart</code> to &gt;=0.0.18. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13219">#13219</a>
by <a
href="https://github.com/DanielKusyDev"><code>@​DanielKusyDev</code></a>.</li>
<li>⬆️ Bump Starlette to allow up to 0.45.0:
<code>&gt;=0.40.0,&lt;0.46.0</code>. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13117">#13117</a>
by <a href="https://github.com/Kludex"><code>@​Kludex</code></a>.</li>
<li>⬆️ Upgrade <code>jinja2</code> to &gt;=3.1.5. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13194">#13194</a>
by <a
href="https://github.com/DanielKusyDev"><code>@​DanielKusyDev</code></a>.</li>
</ul>
<h3>Refactors</h3>
<ul>
<li>✅ Simplify tests for websockets. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13202">#13202</a>
by <a
href="https://github.com/alejsdev"><code>@​alejsdev</code></a>.</li>
<li>✅ Simplify tests for request_form_models . PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13183">#13183</a>
by <a
href="https://github.com/alejsdev"><code>@​alejsdev</code></a>.</li>
<li>✅ Simplify tests for separate_openapi_schemas. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13201">#13201</a>
by <a
href="https://github.com/alejsdev"><code>@​alejsdev</code></a>.</li>
<li>✅ Simplify tests for security. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13200">#13200</a>
by <a
href="https://github.com/alejsdev"><code>@​alejsdev</code></a>.</li>
<li>✅ Simplify tests for schema_extra_example. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13197">#13197</a>
by <a
href="https://github.com/alejsdev"><code>@​alejsdev</code></a>.</li>
<li>✅ Simplify tests for request_model. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13195">#13195</a>
by <a
href="https://github.com/alejsdev"><code>@​alejsdev</code></a>.</li>
<li>✅ Simplify tests for request_forms_and_files. PR <a
href="https://redirect.github.com/fastapi/fastapi/pull/13185">#13185</a>
by <a
href="https://github.com/alejsdev"><code>@​alejsdev</code></a>.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fastapi/fastapi/commit/7128971f1d61e2e1e6f220a5f66baa925b635278"><code>7128971</code></a>
🔖 Release version 0.115.8</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/55f8a446c7c02ac6bb26e7adcdeb5ade2408a0ba"><code>55f8a44</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/83ab6ac95797395b5664626b66d1c3f1f5b0e8dc"><code>83ab6ac</code></a>
📝 Change the word &quot;unwrap&quot; to &quot;unpack&quot; in
`docs/en/docs/tutorial/extra-models...</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/3d02a920ab7c4b2d26bab67b10e35fc90a923ce1"><code>3d02a92</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/1b00f8ae7821353cc9657797c475e2c0d9acd423"><code>1b00f8a</code></a>
✅ Simplify tests for body_multiple_params (<a
href="https://redirect.github.com/fastapi/fastapi/issues/13237">#13237</a>)</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/d97647fd572169cf0434919464de5406057e32f4"><code>d97647f</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/9667ce87a908eecc2be2a215adcb55c7e1b38040"><code>9667ce8</code></a>
📝 Update Request Body's <code>tutorial002</code> to deal with
<code>tax=0</code> case (<a
href="https://redirect.github.com/fastapi/fastapi/issues/13230">#13230</a>)</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/0541693bc7611da858f71d896a3b9780751c04f8"><code>0541693</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/041b2e1c4643c9837d2e7f8589351492cf76497a"><code>041b2e1</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/fastapi/fastapi/commit/30b270be9ac9cf931b0efaac549ba0ad8112f547"><code>30b270b</code></a>
♻️ Move duplicated code portion to a static method in the
<code>APIKeyBase</code> super ...</li>
<li>Additional commits viewable in <a
href="https://github.com/fastapi/fastapi/compare/0.115.0...0.115.8">compare
view</a></li>
</ul>
</details>
<br />

Updates `click` from 8.1.7 to 8.1.8
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/click/releases">click's
releases</a>.</em></p>
<blockquote>
<h2>8.1.8</h2>
<p>This is the Click 8.1.8 fix release, which fixes bugs but does not
otherwise change behavior and should not result in breaking changes
compared to the latest feature release.</p>
<p>PyPI: <a
href="https://pypi.org/project/click/8.1.8/">https://pypi.org/project/click/8.1.8/</a>
Changes: <a
href="https://click.palletsprojects.com/en/stable/changes/#version-8-1-8">https://click.palletsprojects.com/en/stable/changes/#version-8-1-8</a>
Milestone <a
href="https://github.com/pallets/click/milestones/23?closed=1">https://github.com/pallets/click/milestones/23?closed=1</a></p>
<ul>
<li>Fix an issue with type hints for <code>click.open_file()</code>. <a
href="https://redirect.github.com/pallets/click/issues/2717">#2717</a></li>
<li>Fix issue where error message for invalid <code>click.Path</code>
displays on
multiple lines. <a
href="https://redirect.github.com/pallets/click/issues/2697">#2697</a></li>
<li>Fixed issue that prevented a default value of
<code>&quot;&quot;</code> from being displayed in
the help for an option. <a
href="https://redirect.github.com/pallets/click/issues/2500">#2500</a></li>
<li>The test runner handles stripping color consistently on Windows. <a
href="https://redirect.github.com/pallets/click/issues/2705">#2705</a></li>
<li>Show correct value for flag default when using
<code>default_map</code>. <a
href="https://redirect.github.com/pallets/click/issues/2632">#2632</a></li>
<li>Fix <code>click.echo(color=...)</code> passing <code>color</code> to
coloroma so it can be
forced on Windows. <a
href="https://redirect.github.com/pallets/click/issues/2606">#2606</a>.</li>
<li>More robust bash version check, fixing problem on Windows with
git-bash. <a
href="https://redirect.github.com/pallets/click/issues/2638">#2638</a></li>
<li>Cache the help option generated by the
<code>help_option_names</code> setting to
respect its eagerness. <a
href="https://redirect.github.com/pallets/click/issues/2811">#2811</a></li>
<li>Replace uses of <code>os.system</code> with
<code>subprocess.Popen</code>. <a
href="https://redirect.github.com/pallets/click/issues/1476">#1476</a></li>
<li>Exceptions generated during a command will use the context's
<code>color</code>
setting when being displayed. <a
href="https://redirect.github.com/pallets/click/issues/2193">#2193</a></li>
<li>Error message when defining option with invalid name is more
descriptive. <a
href="https://redirect.github.com/pallets/click/issues/2452">#2452</a></li>
<li>Refactor code generating default <code>--help</code> option to
deduplicate code. <a
href="https://redirect.github.com/pallets/click/issues/2563">#2563</a></li>
<li>Test <code>CLIRunner</code> resets patched
<code>_compat.should_strip_ansi</code>. <a
href="https://redirect.github.com/pallets/click/issues/2732">#2732</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/click/blob/main/CHANGES.rst">click's
changelog</a>.</em></p>
<blockquote>
<h2>Version 8.1.8</h2>
<p>Unreleased</p>
<ul>
<li>Fix an issue with type hints for <code>click.open_file()</code>.
:issue:<code>2717</code></li>
<li>Fix issue where error message for invalid <code>click.Path</code>
displays on
multiple lines. :issue:<code>2697</code></li>
<li>Fixed issue that prevented a default value of
<code>&quot;&quot;</code> from being displayed in
the help for an option. :issue:<code>2500</code></li>
<li>The test runner handles stripping color consistently on Windows.
:issue:<code>2705</code></li>
<li>Show correct value for flag default when using
<code>default_map</code>.
:issue:<code>2632</code></li>
<li>Fix <code>click.echo(color=...)</code> passing <code>color</code> to
coloroma so it can be
forced on Windows. :issue:<code>2606</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pallets/click/commit/934813e4d421071a1b3db3973c02fe2721359a6e"><code>934813e</code></a>
release version 8.1.8</li>
<li><a
href="https://github.com/pallets/click/commit/c23223b13c847ae472faa258907ffb5c27b504fa"><code>c23223b</code></a>
Add links to third-party projects enhancing Click (<a
href="https://redirect.github.com/pallets/click/issues/2815">#2815</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/822d4fd0bcfcd0ab22c9eec550ee2dae2a3d260c"><code>822d4fd</code></a>
Add links to third-party projects</li>
<li><a
href="https://github.com/pallets/click/commit/8e7bed0466fd49acf8bcf1399f54d7dc783fd6a1"><code>8e7bed0</code></a>
Break up arguments section (<a
href="https://redirect.github.com/pallets/click/issues/2586">#2586</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/3241541fc89fe9c79908a6099fa2235dd20016e8"><code>3241541</code></a>
Remove some typing hints.</li>
<li><a
href="https://github.com/pallets/click/commit/bed037717d5f39cf875d83df4025e62beebc77f4"><code>bed0377</code></a>
remove test pypi</li>
<li><a
href="https://github.com/pallets/click/commit/653459007a15e4d75187acc5a1e1a08cbd787814"><code>6534590</code></a>
update dev dependencies</li>
<li><a
href="https://github.com/pallets/click/commit/b1e392e69b2a32566550aa41c38875e9cafe2456"><code>b1e392e</code></a>
fix typos</li>
<li><a
href="https://github.com/pallets/click/commit/fdc6b020465751d26f9e74a707f2c058b0dd251f"><code>fdc6b02</code></a>
Fix missing reset in isolation function (<a
href="https://redirect.github.com/pallets/click/issues/2733">#2733</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/ffd43e9dc3b90bd698088fc7ebac9dbc6a4444b2"><code>ffd43e9</code></a>
Fixed missing reset on _compat.should_strip_ansi.</li>
<li>Additional commits viewable in <a
href="https://github.com/pallets/click/compare/8.1.7...8.1.8">compare
view</a></li>
</ul>
</details>
<br />

Updates `httpx` from 0.28.0 to 0.28.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/encode/httpx/releases">httpx's
releases</a>.</em></p>
<blockquote>
<h2>Version 0.28.1</h2>
<h2>0.28.1 (6th December, 2024)</h2>
<ul>
<li>Fix SSL case where <code>verify=False</code> together with client
side certificates.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/encode/httpx/blob/master/CHANGELOG.md">httpx's
changelog</a>.</em></p>
<blockquote>
<h2>0.28.1 (6th December, 2024)</h2>
<ul>
<li>Fix SSL case where <code>verify=False</code> together with client
side certificates.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/encode/httpx/commit/26d48e0634e6ee9cdc0533996db289ce4b430177"><code>26d48e0</code></a>
Version 0.28.1 (<a
href="https://redirect.github.com/encode/httpx/issues/3445">#3445</a>)</li>
<li><a
href="https://github.com/encode/httpx/commit/89599a9541af14bcf906fc4ed58ccbdf403802ba"><code>89599a9</code></a>
Fix <code>verify=False</code>, <code>cert=...</code> case. (<a
href="https://redirect.github.com/encode/httpx/issues/3442">#3442</a>)</li>
<li><a
href="https://github.com/encode/httpx/commit/8ecb86f0d74ffc52d4663214fae9526bee89358d"><code>8ecb86f</code></a>
Add test for request params behavior changes (<a
href="https://redirect.github.com/encode/httpx/issues/3364">#3364</a>)
(<a
href="https://redirect.github.com/encode/httpx/issues/3440">#3440</a>)</li>
<li><a
href="https://github.com/encode/httpx/commit/0cb7e5a2e736628e2f506d259fcf0d48cd2bde82"><code>0cb7e5a</code></a>
Bump the python-packages group with 11 updates (<a
href="https://redirect.github.com/encode/httpx/issues/3434">#3434</a>)</li>
<li><a
href="https://github.com/encode/httpx/commit/15e21e9ea3cad4f06e22a7e704aabefdf43d2e29"><code>15e21e9</code></a>
Updating deprecated docstring Client() class (<a
href="https://redirect.github.com/encode/httpx/issues/3426">#3426</a>)</li>
<li>See full diff in <a
href="https://github.com/encode/httpx/compare/0.28.0...0.28.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `pytest` from 8.3.1 to 8.3.4
<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>8.3.4</h2>
<h1>pytest 8.3.4 (2024-12-01)</h1>
<h2>Bug fixes</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12592">#12592</a>:
Fixed <code>KeyError</code>{.interpreted-text role=&quot;class&quot;}
crash when using <code>--import-mode=importlib</code> in a directory
layout where a directory contains a child directory with the same
name.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12818">#12818</a>:
Assertion rewriting now preserves the source ranges of the original
instructions, making it play well with tools that deal with the
<code>AST</code>, like <a
href="https://github.com/alexmojaki/executing">executing</a>.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12849">#12849</a>:
ANSI escape codes for colored output now handled correctly in
<code>pytest.fail</code>{.interpreted-text role=&quot;func&quot;} with
[pytrace=False]{.title-ref}.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/9353">#9353</a>:
<code>pytest.approx</code>{.interpreted-text role=&quot;func&quot;} now
uses strict equality when given booleans.</p>
</li>
</ul>
<h2>Improved documentation</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/10558">#10558</a>:
Fix ambiguous docstring of
<code>pytest.Config.getoption</code>{.interpreted-text
role=&quot;func&quot;}.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/10829">#10829</a>:
Improve documentation on the current handling of the
<code>--basetemp</code> option and its lack of retention functionality
(<code>temporary directory location and
retention</code>{.interpreted-text role=&quot;ref&quot;}).</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12866">#12866</a>:
Improved cross-references concerning the
<code>recwarn</code>{.interpreted-text role=&quot;fixture&quot;}
fixture.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12966">#12966</a>:
Clarify <code>filterwarnings</code>{.interpreted-text
role=&quot;ref&quot;} docs on filter precedence/order when using
multiple <code>@pytest.mark.filterwarnings
&lt;pytest.mark.filterwarnings ref&gt;</code>{.interpreted-text
role=&quot;ref&quot;} marks.</p>
</li>
</ul>
<h2>Contributor-facing changes</h2>
<ul>
<li><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12497">#12497</a>:
Fixed two failing pdb-related tests on Python 3.13.</li>
</ul>
<h2>8.3.3</h2>
<h1>pytest 8.3.3 (2024-09-09)</h1>
<h2>Bug fixes</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12446">#12446</a>:
Avoid calling <code>@property</code> (and other instance descriptors)
during fixture discovery -- by <code>asottile</code>{.interpreted-text
role=&quot;user&quot;}</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12659">#12659</a>:
Fixed the issue of not displaying assertion failure differences when
using the parameter <code>--import-mode=importlib</code> in
pytest&gt;=8.1.</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/commit/53f8b4e634c5066c4f797a87b20060edbb086240"><code>53f8b4e</code></a>
Update pypa/gh-action-pypi-publish to v1.12.2</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/98dff36c9dc0a44881e9e90daf381f9079adf4cc"><code>98dff36</code></a>
Prepare release version 8.3.4</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/1b474e221d5ced2c8c73924a0087e6e24ab6cd61"><code>1b474e2</code></a>
approx: use exact comparison for bool (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/13013">#13013</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/b541721529feba7fcd0d069fa2437a817f340eba"><code>b541721</code></a>
docs: Fix wrong statement about sys.modules with importlib import mode
(<a
href="https://redirect.github.com/pytest-dev/pytest/issues/1298">#1298</a>...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/16cb87b65036300d74472cd55eebca8fc3f8e703"><code>16cb87b</code></a>
pytest.fail: fix ANSI escape codes for colored output (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/12959">#12959</a>)
(<a
href="https://redirect.github.com/pytest-dev/pytest/issues/12990">#12990</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/be6bc812b02454b2915755dd76ce74b877aeafad"><code>be6bc81</code></a>
Issue <a
href="https://redirect.github.com/pytest-dev/pytest/issues/12966">#12966</a>
Clarify filterwarnings docs on precedence when using multiple ma...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/7aeb72bbc67bd1b8271eee57caa0a4e9b07038fc"><code>7aeb72b</code></a>
Improve docs on basetemp and retention (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/12912">#12912</a>)
(<a
href="https://redirect.github.com/pytest-dev/pytest/issues/12928">#12928</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/c8758414cfd1646f273842e8f9292b2c15dcfcfb"><code>c875841</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/12917">#12917</a>
from pytest-dev/patchback/backports/8.3.x/ded1f44e5...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/6502816d977fcdbd65a3f4d8a63c0ce7c1f25649"><code>6502816</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/12913">#12913</a>
from jakkdl/dontfailonbadpath</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/52135b033fb949efbec6aed9dd9000275bb199fd"><code>52135b0</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/12885">#12885</a>
from The-Compiler/pdb-py311 (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/12887">#12887</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest/compare/8.3.1...8.3.4">compare
view</a></li>
</ul>
</details>
<br />

Updates `typeguard` from 4.4.1 to 4.4.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/agronholm/typeguard/releases">typeguard's
releases</a>.</em></p>
<blockquote>
<h2>4.4.2</h2>
<ul>
<li>Fixed <code>TypeCheckError</code> in unpacking assignment involving
properties of a parameter of the function (<a
href="https://redirect.github.com/agronholm/typeguard/issues/506">#506</a>;
regression introduced in v4.4.1)</li>
<li>Fixed display of module name for forward references (<a
href="https://redirect.github.com/agronholm/typeguard/pull/492">#492</a>;
PR by <a
href="https://github.com/JelleZijlstra"><code>@​JelleZijlstra</code></a>)</li>
<li>Fixed <code>TypeError</code> when using an assignment expression (<a
href="https://redirect.github.com/agronholm/typeguard/issues/510">#510</a>;
PR by <a
href="https://github.com/JohannesK71083"><code>@​JohannesK71083</code></a>)</li>
<li>Fixed <code>ValueError: no signature found for builtin</code> when
checking against a protocol and a matching attribute in the subject is a
built-in function (<a
href="https://redirect.github.com/agronholm/typeguard/issues/504">#504</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/agronholm/typeguard/blob/master/docs/versionhistory.rst">typeguard's
changelog</a>.</em></p>
<blockquote>
<h1>Version history</h1>
<p>This library adheres to
<code>Semantic Versioning 2.0
&lt;https://semver.org/#semantic-versioning-200&gt;</code>_.</p>
<p><strong>4.4.2</strong> (2025-02-16)</p>
<ul>
<li>Fixed <code>TypeCheckError</code> in unpacking assignment involving
properties of a parameter
of the function
(<code>[#506](https://github.com/agronholm/typeguard/issues/506)
&lt;https://github.com/agronholm/typeguard/issues/506&gt;</code>_;
regression introduced in v4.4.1)</li>
<li>Fixed display of module name for forward references
(<code>[#492](https://github.com/agronholm/typeguard/issues/492)
&lt;https://github.com/agronholm/typeguard/pull/492&gt;</code>_; PR by
<a
href="https://github.com/JelleZijlstra"><code>@​JelleZijlstra</code></a>)</li>
<li>Fixed <code>TypeError</code> when using an assignment expression
(<code>[#510](https://github.com/agronholm/typeguard/issues/510)
&lt;https://github.com/agronholm/typeguard/issues/510&gt;</code>_; PR by
<a
href="https://github.com/JohannesK71083"><code>@​JohannesK71083</code></a>)</li>
<li>Fixed <code>ValueError: no signature found for builtin</code> when
checking against a protocol
and a matching attribute in the subject is a built-in function
(<code>[#504](https://github.com/agronholm/typeguard/issues/504)
&lt;https://github.com/agronholm/typeguard/issues/504&gt;</code>_)</li>
</ul>
<p><strong>4.4.1</strong> (2024-11-03)</p>
<ul>
<li>Dropped Python 3.8 support</li>
<li>Changed the signature of <code>…
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.

4 participants