Latest Results
fix(core): merge streamed `AIMessageChunk`s once instead of one at a time
`Runnable` adds up streamed chunks one at a time in several places: the
run callbacks' output and inputs in `_transform_stream_with_config` and
its async twin, the input buffer of the default `transform`, and
`RunnableLambda`'s input buffer and generator output. Every
`AIMessageChunk` addition re-parses the tool call arguments received so
far, so streaming a long tool call through a chain took quadratic time:
about 7.4 seconds for a 64,000-character tool call in 16-character
chunks through `prompt | model`, and 10.1 seconds with a `RunnableLambda`
after the model.
A shared accumulator now keeps leading `AIMessageChunk`s and merges them
in one addition, as `generate_from_stream` does for `invoke`. If that
addition raises, it adds them one at a time, as before. The same chains
now take 0.03 and 0.02 seconds.
`merge_content` also stops changing the content list of the first
message it merges. Merging the same chunks twice, as a model's own
stream and a step after it both do, added the text that follows a
list-content chunk, such as a reasoning block, twice: before this change
to the model's traced output, and with the single merge above to the
input of a `RunnableLambda` after the model.
Based on #40841 by @0xamlab; reported by @QHarshil in #40826.eliornl/core/linear-stream-chunk-merge chore(deps): bump the minor-and-patch group across 3 directories with 32 updates (#41465)
Bumps the minor-and-patch group with 12 updates in the /libs/core
directory:
| Package | From | To |
| --- | --- | --- |
| [langsmith](https://github.com/langchain-ai/langsmith-python) |
`0.14.9` | `0.14.12` |
| [tenacity](https://github.com/jd/tenacity) | `9.1.4` | `9.2.1` |
| [jsonpatch](https://github.com/stefankoegl/python-json-patch) | `1.33`
| `1.36` |
| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.14.1`
|
| [ruff](https://github.com/astral-sh/ruff) | `0.16.4` | `0.17.1` |
| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.4.0` |
| [setuptools](https://github.com/pypa/setuptools) | `84.1.0` | `84.2.1`
|
| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.15.1` |
`3.17.0` |
| [responses](https://github.com/getsentry/responses) | `0.26.2` |
`0.26.3` |
| [pytest-socket](https://github.com/miketheman/pytest-socket) | `0.7.0`
| `0.8.1` |
| [blockbuster](https://github.com/cbornet/blockbuster) | `1.5.27` |
`1.5.29` |
| [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark) |
`5.2.3` | `5.3.0` |
Bumps the minor-and-patch group with 24 updates in the /libs/langchain
directory:
| Package | From | To |
| --- | --- | --- |
| [langsmith](https://github.com/langchain-ai/langsmith-python) |
`0.14.9` | `0.14.12` |
| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.14.1`
|
| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.17.1` |
| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.4.0` |
| [setuptools](https://github.com/pypa/setuptools) | `84.1.0` | `84.2.1`
|
| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.15.1` |
`3.17.0` |
| [responses](https://github.com/getsentry/responses) | `0.26.2` |
`0.26.3` |
| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.52` |
`2.0.55` |
| [langchain-anthropic](https://github.com/langchain-ai/langchain) |
`1.6.1` | `1.7.6` |
| [langchain-azure-ai](https://github.com/langchain-ai/langchain-azure)
| `1.2.8` | `1.2.9` |
|
[langchain-google-genai](https://github.com/langchain-ai/langchain-google)
| `4.3.5` | `4.4.2` |
| [langchain-fireworks](https://github.com/langchain-ai/langchain) |
`1.6.0` | `1.7.1` |
| [langchain-huggingface](https://github.com/langchain-ai/langchain) |
`1.2.2` | `1.2.3` |
| [langchain-aws](https://github.com/langchain-ai/langchain-aws) |
`1.7.3` | `1.9.0` |
| [langchain-deepseek](https://github.com/langchain-ai/langchain) |
`1.1.0` | `1.1.1` |
| [langchain-perplexity](https://github.com/langchain-ai/langchain) |
`1.4.0` | `1.4.2` |
| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.3.0` | `2.5.1`
|
| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.3`
| `1.2.4` |
| [types-pytz](https://github.com/python/typeshed) | `2026.3.1.20260727`
| `2026.5.0.20261006` |
| [fastapi](https://github.com/fastapi/fastapi) | `0.141.1` | `0.159.1`
|
| [playwright](https://github.com/microsoft/playwright-python) |
`1.62.0` | `1.64.0` |
| [greenlet](https://github.com/python-greenlet/greenlet) | `3.2.4` |
`3.5.6` |
| [jsonschema](https://github.com/python-jsonschema/jsonschema) |
`4.25.1` | `4.26.0` |
| [numexpr](https://github.com/pydata/numexpr) | `2.13.0` | `2.14.1` |
Bumps the minor-and-patch group with 18 updates in the
/libs/langchain_v1 directory:
| Package | From | To |
| --- | --- | --- |
| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.14.1`
|
| [ruff](https://github.com/astral-sh/ruff) | `0.16.4` | `0.17.1` |
| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.4.0` |
| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.15.1` |
`3.17.0` |
| [blockbuster](https://github.com/cbornet/blockbuster) | `1.5.27` |
`1.5.29` |
| [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark) |
`5.2.3` | `5.3.0` |
| [langchain-azure-ai](https://github.com/langchain-ai/langchain-azure)
| `1.2.8` | `1.2.9` |
|
[langchain-google-genai](https://github.com/langchain-ai/langchain-google)
| `4.3.5` | `4.4.2` |
| [langchain-fireworks](https://github.com/langchain-ai/langchain) |
`1.6.0` | `1.7.1` |
| [langchain-huggingface](https://github.com/langchain-ai/langchain) |
`1.2.2` | `1.2.3` |
| [langchain-aws](https://github.com/langchain-ai/langchain-aws) |
`1.7.3` | `1.9.0` |
| [langchain-deepseek](https://github.com/langchain-ai/langchain) |
`1.1.0` | `1.1.1` |
| [langchain-perplexity](https://github.com/langchain-ai/langchain) |
`1.4.0` | `1.4.2` |
| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.3.0` | `2.5.1`
|
| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.3`
| `1.2.4` |
| [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.13` |
`1.2.16` |
| [langchain-baseten](https://github.com/basetenlabs/langchain-baseten)
| `0.2.3` | `0.2.5` |
| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `4.1.2` | `4.1.3` |
Updates `langsmith` from 0.14.9 to 0.14.12
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langsmith-python/releases">langsmith's
releases</a>.</em></p>
<blockquote>
<h2>v0.14.12</h2>
<h2><a
href="https://github.com/langchain-ai/langsmith-python/compare/v0.14.11...v0.14.12">0.14.12</a>
(2026-10-21)</h2>
<h3>Features</h3>
<ul>
<li><strong>agents:</strong> add agent registry CRUD to SDKs and CLI (<a
href="https://github.com/langchain-ai/langsmith-python/commit/d3de1d5e012e92e9f585e43c2ed6bb2bc05703bc">d3de1d5</a>)</li>
<li><strong>authz:</strong> add root_run_metadata policy conditions and
compiled trace_filters (<a
href="https://github.com/langchain-ai/langsmith-python/commit/64684e058ff7339501fb121920cb8d04a2517a43">64684e0</a>)</li>
<li><strong>cli:</strong> expose runs share and get-url to the CLI (<a
href="https://github.com/langchain-ai/langsmith-python/commit/fcfae7cde308b3962eb324bed7aa2772f116ea87">fcfae7c</a>)</li>
<li><strong>evaluators:</strong> add trajectory input type for code
evaluators (<a
href="https://github.com/langchain-ai/langsmith-python/commit/9b6f6e540ac7c2f6f9e96d26ab78c546cf15e6af">9b6f6e5</a>)</li>
<li><strong>sandboxes:</strong> let LangSmith login service URLs be
embedded by named origins (<a
href="https://github.com/langchain-ai/langsmith-python/commit/dcf7c3e1e2278756d4528a21ac279be2446db95f">dcf7c3e</a>)</li>
<li><strong>sdk-python:</strong> create enforced feedback configs (<a
href="https://github.com/langchain-ai/langsmith-python/commit/1e3cd1519115b805913c624239323c580fb14e2d">1e3cd15</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>sandboxes:</strong> add cursor pagination to registry
listing (<a
href="https://github.com/langchain-ai/langsmith-python/commit/1a444601f66ef1fe6ac53671b89177a8b2fc2992">1a44460</a>)</li>
<li><strong>sdk-python:</strong> use reference outputs for example
creation (<a
href="https://github.com/langchain-ai/langsmith-python/commit/f995f42b7e7d51ff8f0dcd1acc823573558a482f">f995f42</a>)</li>
<li><strong>sdk-python:</strong> use reference outputs for example
creation (<a
href="https://github.com/langchain-ai/langsmith-python/commit/7cbb5087ab823fd1f3e97601d76a237a8e09a00b">7cbb508</a>)</li>
<li><strong>sdk:</strong> keep wrap_openai Responses stream output when
it ends incomplete or failed (<a
href="https://github.com/langchain-ai/langsmith-python/commit/e88c57cd3f87ffec9dd6d46027026a6821ea8f03">e88c57c</a>)</li>
<li>support Standard Units in sandbox cost breakdowns (<a
href="https://github.com/langchain-ai/langsmith-python/commit/e9bee5c23eaf328998430a134318c5161dd02fcf">e9bee5c</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>remove langsmith-sdk and staging repo leftovers, update SDK docs (<a
href="https://github.com/langchain-ai/langsmith-python/commit/459d4bd46205d422b0466227cb431de73973c2ca">459d4bd</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>move sandbox auth options to the bottom of README.md (<a
href="https://redirect.github.com/langchain-ai/langsmith-python/issues/71">#71</a>)
(<a
href="https://github.com/langchain-ai/langsmith-python/commit/be8a4dbd51dab7866d9d7791ae31e8f4d51af400">be8a4db</a>)</li>
</ul>
<h2>v0.14.11</h2>
<blockquote>
<p>[!NOTE]
The LangSmith Python SDK now lives in <a
href="https://github.com/langchain-ai/langsmith-python">langchain-ai/langsmith-python</a>.
Releases ship from here starting with 0.14.10. <a
href="https://github.com/langchain-ai/langsmith-sdk">langchain-ai/langsmith-sdk</a>
is frozen for Python and JS.</p>
<p>Nothing changes for you:, same <code>langsmith</code> package on PyPI
and same imports. Open new issues and PRs here.</p>
</blockquote>
<h2><a
href="https://github.com/langchain-ai/langsmith-python/compare/v0.14.10...v0.14.11">0.14.11</a>
(2026-10-16)</h2>
<h3>Chores</h3>
<ul>
<li>drop the release-as pin now that 0.14.10 is out (<a
href="https://redirect.github.com/langchain-ai/langsmith-python/issues/68">#68</a>)
(<a
href="https://github.com/langchain-ai/langsmith-python/commit/1b41cc8fae1b23bc16f50cd0355dc53092803580">1b41cc8</a>)</li>
</ul>
<h2>v0.14.10</h2>
<h2><a
href="https://github.com/langchain-ai/langsmith-python/compare/v0.14.9-rc.1...v0.14.10">0.14.10</a>
(2026-10-15)</h2>
<h3>Chores</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langsmith-python/blob/main/CHANGELOG.md">langsmith's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/langchain-ai/langsmith-python/compare/v0.14.11...v0.14.12">0.14.12</a>
(2026-10-21)</h2>
<h3>Features</h3>
<ul>
<li><strong>agents:</strong> add agent registry CRUD to SDKs and CLI (<a
href="https://github.com/langchain-ai/langsmith-python/commit/d3de1d5e012e92e9f585e43c2ed6bb2bc05703bc">d3de1d5</a>)</li>
<li><strong>authz:</strong> add root_run_metadata policy conditions and
compiled trace_filters (<a
href="https://github.com/langchain-ai/langsmith-python/commit/64684e058ff7339501fb121920cb8d04a2517a43">64684e0</a>)</li>
<li><strong>cli:</strong> expose runs share and get-url to the CLI (<a
href="https://github.com/langchain-ai/langsmith-python/commit/fcfae7cde308b3962eb324bed7aa2772f116ea87">fcfae7c</a>)</li>
<li><strong>evaluators:</strong> add trajectory input type for code
evaluators (<a
href="https://github.com/langchain-ai/langsmith-python/commit/9b6f6e540ac7c2f6f9e96d26ab78c546cf15e6af">9b6f6e5</a>)</li>
<li><strong>sandboxes:</strong> let LangSmith login service URLs be
embedded by named origins (<a
href="https://github.com/langchain-ai/langsmith-python/commit/dcf7c3e1e2278756d4528a21ac279be2446db95f">dcf7c3e</a>)</li>
<li><strong>sdk-python:</strong> create enforced feedback configs (<a
href="https://github.com/langchain-ai/langsmith-python/commit/1e3cd1519115b805913c624239323c580fb14e2d">1e3cd15</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>sandboxes:</strong> add cursor pagination to registry
listing (<a
href="https://github.com/langchain-ai/langsmith-python/commit/1a444601f66ef1fe6ac53671b89177a8b2fc2992">1a44460</a>)</li>
<li><strong>sdk-python:</strong> use reference outputs for example
creation (<a
href="https://github.com/langchain-ai/langsmith-python/commit/f995f42b7e7d51ff8f0dcd1acc823573558a482f">f995f42</a>)</li>
<li><strong>sdk-python:</strong> use reference outputs for example
creation (<a
href="https://github.com/langchain-ai/langsmith-python/commit/7cbb5087ab823fd1f3e97601d76a237a8e09a00b">7cbb508</a>)</li>
<li><strong>sdk:</strong> keep wrap_openai Responses stream output when
it ends incomplete or failed (<a
href="https://github.com/langchain-ai/langsmith-python/commit/e88c57cd3f87ffec9dd6d46027026a6821ea8f03">e88c57c</a>)</li>
<li>support Standard Units in sandbox cost breakdowns (<a
href="https://github.com/langchain-ai/langsmith-python/commit/e9bee5c23eaf328998430a134318c5161dd02fcf">e9bee5c</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>remove langsmith-sdk and staging repo leftovers, update SDK docs (<a
href="https://github.com/langchain-ai/langsmith-python/commit/459d4bd46205d422b0466227cb431de73973c2ca">459d4bd</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>move sandbox auth options to the bottom of README.md (<a
href="https://redirect.github.com/langchain-ai/langsmith-python/issues/71">#71</a>)
(<a
href="https://github.com/langchain-ai/langsmith-python/commit/be8a4dbd51dab7866d9d7791ae31e8f4d51af400">be8a4db</a>)</li>
</ul>
<h2><a
href="https://github.com/langchain-ai/langsmith-python/compare/v0.14.10...v0.14.11">0.14.11</a>
(2026-10-16)</h2>
<h3>Chores</h3>
<ul>
<li>drop the release-as pin now that 0.14.10 is out (<a
href="https://redirect.github.com/langchain-ai/langsmith-python/issues/68">#68</a>)
(<a
href="https://github.com/langchain-ai/langsmith-python/commit/1b41cc8fae1b23bc16f50cd0355dc53092803580">1b41cc8</a>)</li>
</ul>
<h2><a
href="https://github.com/langchain-ai/langsmith-python/compare/v0.14.9-rc.1...v0.14.10">0.14.10</a>
(2026-10-15)</h2>
<h3>Chores</h3>
<ul>
<li>switch release-please to the stable channel, release 0.14.10 (<a
href="https://redirect.github.com/langchain-ai/langsmith-python/issues/52">#52</a>)
(<a
href="https://github.com/langchain-ai/langsmith-python/commit/9cbdb21b14c666279ae1465fe75b01cb5871a83b">9cbdb21</a>)</li>
</ul>
<h2><a
href="https://github.com/langchain-ai/langsmith-python/compare/v0.12.6...v0.14.9-rc.1">0.14.9-rc.1</a>
(2026-10-15)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/langchain-ai/langsmith-python/commits/v0.14.12">compare
view</a></li>
</ul>
</details>
<br />
Updates `tenacity` from 9.1.4 to 9.2.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jd/tenacity/releases">tenacity's
releases</a>.</em></p>
<blockquote>
<h2>9.2.1</h2>
<p>9.2.0 was tagged but never reached PyPI: the upload rejected its
package description (<a
href="https://redirect.github.com/jd/tenacity/issues/714">#714</a>).
9.2.1 is the first release on PyPI with everything in <a
href="https://github.com/jd/tenacity/releases/tag/9.2.0">9.2.0</a>, plus
the changes below.</p>
<h2>What's Changed</h2>
<ul>
<li>chore(mypy): drop vestigial tornado ignore_missing_imports override
by <a href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/676">jd/tenacity#676</a></li>
<li>fix: annotate wait_base.<strong>radd</strong> as taking the int seed
from sum() by <a href="https://github.com/jd"><code>@jd</code></a> in
<a
href="https://redirect.github.com/jd/tenacity/pull/677">jd/tenacity#677</a></li>
<li>chore(mypy): enable the strictness options <code>strict</code>
leaves off by <a href="https://github.com/jd"><code>@jd</code></a> in
<a
href="https://redirect.github.com/jd/tenacity/pull/678">jd/tenacity#678</a></li>
<li>refactor: drop always-true truthiness checks and enable truthy-bool
by <a href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/679">jd/tenacity#679</a></li>
<li>refactor: declare BaseAction's REPR_FIELDS and NAME as ClassVar by
<a href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/680">jd/tenacity#680</a></li>
<li>test: fix possibly-undefined and deprecated call sites by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/681">jd/tenacity#681</a></li>
<li>refactor: mark overridden methods with <a
href="https://github.com/override"><code>@override</code></a> by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/682">jd/tenacity#682</a></li>
<li>fix: restore support for falsy wait values and callable + strategy
by <a href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/694">jd/tenacity#694</a></li>
<li>fix: read the tornado global live instead of an import-time snapshot
by <a href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/696">jd/tenacity#696</a></li>
<li>Respect enabled=False on the direct-call path by <a
href="https://github.com/mahirhir"><code>@mahirhir</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/645">jd/tenacity#645</a></li>
<li>fix: only treat None and 0 as "no wait" by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/741">jd/tenacity#741</a></li>
<li>fix: restore PyPI-compatible package description by <a
href="https://github.com/arindamsikder"><code>@arindamsikder</code></a>
in <a
href="https://redirect.github.com/jd/tenacity/pull/725">jd/tenacity#725</a></li>
<li>ci: check built distributions with twine by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/742">jd/tenacity#742</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/mahirhir"><code>@mahirhir</code></a>
made their first contribution in <a
href="https://redirect.github.com/jd/tenacity/pull/645">jd/tenacity#645</a></li>
<li><a href="https://github.com/kozlek"><code>@kozlek</code></a> made
their first contribution in <a
href="https://redirect.github.com/jd/tenacity/pull/733">jd/tenacity#733</a></li>
<li><a
href="https://github.com/arindamsikder"><code>@arindamsikder</code></a>
made their first contribution in <a
href="https://redirect.github.com/jd/tenacity/pull/725">jd/tenacity#725</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jd/tenacity/compare/9.2.0...9.2.1">https://github.com/jd/tenacity/compare/9.2.0...9.2.1</a></p>
<h2>9.2.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix ordinal suffix generation for large numbers ending in 11, 12, 13
by <a
href="https://github.com/ArmaanjeetSandhu"><code>@ArmaanjeetSandhu</code></a>
in <a
href="https://redirect.github.com/jd/tenacity/pull/556">jd/tenacity#556</a></li>
<li>build: replace tox with poethepoet + uv by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/558">jd/tenacity#558</a></li>
<li>docs: fix README badges by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/559">jd/tenacity#559</a></li>
<li>docs: add project URLs to pyproject.toml by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/560">jd/tenacity#560</a></li>
<li>docs: add local dev commands to contribute section by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/561">jd/tenacity#561</a></li>
<li>docs: modernize async examples by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/562">jd/tenacity#562</a></li>
<li>docs: set version in sphinx conf by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/563">jd/tenacity#563</a></li>
<li>fix: resolve tornado mypy errors instead of suppressing them by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/568">jd/tenacity#568</a></li>
<li>feat: add poe fmt task for auto-formatting by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/569">jd/tenacity#569</a></li>
<li>docs: replace curio example with trio by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/570">jd/tenacity#570</a></li>
<li>chore: enable ruff I, UP, B rules and auto-fix codebase by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/571">jd/tenacity#571</a></li>
<li>ci: harden release workflow by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/575">jd/tenacity#575</a></li>
<li>fix: use typing.Self on Python 3.11+ instead of typing_extensions by
<a href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/576">jd/tenacity#576</a></li>
<li>chore: bump tornado version floor to >=6.0 by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/578">jd/tenacity#578</a></li>
<li>docs: clean up sphinx conf.py by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/579">jd/tenacity#579</a></li>
<li>refactor: remove stale noqa comments from <strong>init</strong>.py
by <a href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/577">jd/tenacity#577</a></li>
<li>refactor: enable additional ruff rules and fix violations by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/584">jd/tenacity#584</a></li>
<li>fix: enable mypy strict mode in all test files by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/585">jd/tenacity#585</a></li>
<li>fix: make LoggerProtocol compatible with logging.Logger by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/586">jd/tenacity#586</a></li>
<li>refactor: remove unused IterState.delay_since_first_attempt field by
<a href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/587">jd/tenacity#587</a></li>
<li>refactor: remove redundant raise before reraise() by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/588">jd/tenacity#588</a></li>
<li>refactor: replace deprecated typing.Pattern with re.Pattern by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/589">jd/tenacity#589</a></li>
<li>docs: fix typos in docstrings by <a
href="https://github.com/jd"><code>@jd</code></a> in <a
href="https://redirect.github.com/jd/tenacity/pull/590">jd/tenacity#590</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jd/tenacity/commit/4410996dd9a96864a2733ce0778bcaa112b72811"><code>4410996</code></a>
ci: check built distributions with twine (<a
href="https://redirect.github.com/jd/tenacity/issues/742">#742</a>)</li>
<li><a
href="https://github.com/jd/tenacity/commit/b23844175feb8c62f4ebb0ef0833d993f439fa1f"><code>b238441</code></a>
fix: restore PyPI-compatible package description (<a
href="https://redirect.github.com/jd/tenacity/issues/725">#725</a>)</li>
<li><a
href="https://github.com/jd/tenacity/commit/b6201eceedfc719e996dcbc3f6c17f21011fb236"><code>b6201ec</code></a>
fix: only treat None and 0 as "no wait" (<a
href="https://redirect.github.com/jd/tenacity/issues/741">#741</a>)</li>
<li><a
href="https://github.com/jd/tenacity/commit/4a74682e0186b5f2d25906aa190cd639c705a958"><code>4a74682</code></a>
ci: drop the Mergify queue rule (<a
href="https://redirect.github.com/jd/tenacity/issues/739">#739</a>)</li>
<li><a
href="https://github.com/jd/tenacity/commit/91169719f4fd127d680cafe026f1f95f04292094"><code>9116971</code></a>
ci: drop Mergify dismiss_reviews rule (<a
href="https://redirect.github.com/jd/tenacity/issues/737">#737</a>)</li>
<li><a
href="https://github.com/jd/tenacity/commit/2374b61424aab29769c3428b06d576ffc1a5a1d9"><code>2374b61</code></a>
ci: rely on the ruleset for the ci-gate check (<a
href="https://redirect.github.com/jd/tenacity/issues/736">#736</a>)</li>
<li><a
href="https://github.com/jd/tenacity/commit/6df1aab1a2df84f2779f5f308c6171df9d051a35"><code>6df1aab</code></a>
ci: gate merges on a single ci-gate job (<a
href="https://redirect.github.com/jd/tenacity/issues/734">#734</a>)</li>
<li><a
href="https://github.com/jd/tenacity/commit/5f540fad77cbd90b4bcb21a9b859d5b07c08ba54"><code>5f540fa</code></a>
chore(mergify): replace deprecated autoqueue with auto_merge_conditions
(<a
href="https://redirect.github.com/jd/tenacity/issues/733">#733</a>)</li>
<li><a
href="https://github.com/jd/tenacity/commit/8be01b1daf2010566fd936a5c2214efefa43edff"><code>8be01b1</code></a>
chore(deps-dev): bump ruff from 0.16.5 to 0.16.9 in the python group (<a
href="https://redirect.github.com/jd/tenacity/issues/726">#726</a>)</li>
<li><a
href="https://github.com/jd/tenacity/commit/3e58094d3bc414975aad9eadf343a32bdb3b89b3"><code>3e58094</code></a>
chore(deps-dev): bump the python group with 2 updates (<a
href="https://redirect.github.com/jd/tenacity/issues/707">#707</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/jd/tenacity/compare/9.1.4...9.2.1">compare
view</a></li>
</ul>
</details>
<br />
Updates `jsonpatch` from 1.33 to 1.36
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/stefankoegl/python-json-patch/releases">jsonpatch's
releases</a>.</em></p>
<blockquote>
<h2>1.36</h2>
<h2>What's Changed</h2>
<ul>
<li>Honor optimization=False when generating patches by <a
href="https://github.com/Apeksha9389"><code>@Apeksha9389</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/233">stefankoegl/python-json-patch#233</a></li>
<li>Preserve the original file when in-place CLI replacement fails by <a
href="https://github.com/xingzhao-ji"><code>@xingzhao-ji</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/232">stefankoegl/python-json-patch#232</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/Apeksha9389"><code>@Apeksha9389</code></a>
made their first contribution in <a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/233">stefankoegl/python-json-patch#233</a></li>
<li><a
href="https://github.com/xingzhao-ji"><code>@xingzhao-ji</code></a>
made their first contribution in <a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/232">stefankoegl/python-json-patch#232</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/stefankoegl/python-json-patch/compare/v1.35...v1.36">https://github.com/stefankoegl/python-json-patch/compare/v1.35...v1.36</a></p>
<h2>1.35</h2>
<h2>What's Changed</h2>
<ul>
<li>Refactor JsonPatch class and improve documentation by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/204">stefankoegl/python-json-patch#204</a></li>
<li>Add pytest configuration for non-standard test file naming by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/199">stefankoegl/python-json-patch#199</a></li>
<li>Document JSON Pointer escaping for special characters by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/203">stefankoegl/python-json-patch#203</a></li>
<li>Improve list diffing to avoid unnecessary item replacements by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/201">stefankoegl/python-json-patch#201</a></li>
<li>Use correct SPDX-Identifer by <a
href="https://github.com/Volker-Weissmann"><code>@Volker-Weissmann</code></a>
in <a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/209">stefankoegl/python-json-patch#209</a></li>
<li>Improve coverage reporting by combining test runs by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/210">stefankoegl/python-json-patch#210</a></li>
<li>ci: run tests on every PR and pushes to master by <a
href="https://github.com/hf-kklein"><code>@hf-kklein</code></a> in <a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/157">stefankoegl/python-json-patch#157</a></li>
<li>Add support for Python 3.13 and 3.14 by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/211">stefankoegl/python-json-patch#211</a></li>
<li>Improve list diffing with sequence alignment to avoid cascading
changes by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/206">stefankoegl/python-json-patch#206</a></li>
<li>Handle self-containing values in make_patch and add <a
href="https://redirect.github.com/stefankoegl/python-json-patch/issues/180">#180</a>
regression tests by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/200">stefankoegl/python-json-patch#200</a></li>
<li>Only reject '-' in replace when it refers to an array (<a
href="https://redirect.github.com/stefankoegl/python-json-patch/issues/212">#212</a>)
by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/223">stefankoegl/python-json-patch#223</a></li>
<li>Reject moving any location into its own children, fixes <a
href="https://redirect.github.com/stefankoegl/python-json-patch/issues/214">#214</a>
by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/222">stefankoegl/python-json-patch#222</a></li>
<li>Compare values in 'test' by JSON equality (<a
href="https://redirect.github.com/stefankoegl/python-json-patch/issues/216">#216</a>)
by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/221">stefankoegl/python-json-patch#221</a></li>
<li>Hash patch operations by their 'op' and 'path' (<a
href="https://redirect.github.com/stefankoegl/python-json-patch/issues/217">#217</a>)
by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/220">stefankoegl/python-json-patch#220</a></li>
<li>Require jsonpointer>=3.2 by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/218">stefankoegl/python-json-patch#218</a></li>
<li>Raise documented exceptions for malformed patches and
"from": "/-" by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/224">stefankoegl/python-json-patch#224</a></li>
<li>Support whole document operations on scalar documents (<a
href="https://redirect.github.com/stefankoegl/python-json-patch/issues/213">#213</a>)
by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/219">stefankoegl/python-json-patch#219</a></li>
<li>Housekeeping: stale links, packaging cleanup, CI action versions by
<a href="https://github.com/stefankoegl"><code>@stefankoegl</code></a>
in <a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/225">stefankoegl/python-json-patch#225</a></li>
<li>Find moves in make_patch without rewriting all later operations by
<a href="https://github.com/stefankoegl"><code>@stefankoegl</code></a>
in <a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/208">stefankoegl/python-json-patch#208</a></li>
<li>Close test coverage gaps by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/226">stefankoegl/python-json-patch#226</a></li>
<li>Remove unreachable code from make_patch and the jsonpointer < 3.2
shim by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/227">stefankoegl/python-json-patch#227</a></li>
<li>Test the index helpers of PatchOperation and MoveOperation by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/228">stefankoegl/python-json-patch#228</a></li>
<li>Upload coverage to Coveralls again by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/229">stefankoegl/python-json-patch#229</a></li>
<li>Close the original input before in-place replacement by <a
href="https://github.com/fhgffy"><code>@fhgffy</code></a> in <a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/230">stefankoegl/python-json-patch#230</a></li>
<li>Install the command line programs as console_scripts by <a
href="https://github.com/stefankoegl"><code>@stefankoegl</code></a> in
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/231">stefankoegl/python-json-patch#231</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/Volker-Weissmann"><code>@Volker-Weissmann</code></a>
made their first contribution in <a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/209">stefankoegl/python-json-patch#209</a></li>
<li><a href="https://github.com/fhgffy"><code>@fhgffy</code></a> made
their first contribution in <a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/230">stefankoegl/python-json-patch#230</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/stefankoegl/python-json-patch/compare/v1.34...v1.35">https://github.com/stefankoegl/python-json-patch/compare/v1.34...v1.35</a></p>
<h2>1.34</h2>
<h2>What's Changed</h2>
<ul>
<li>Update documentation to include a link to the GitHub repo and
installation instructions by <a
href="https://github.com/werdnum"><code>@werdnum</code></a> in <a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/147">stefankoegl/python-json-patch#147</a></li>
<li>Support only currently supported Python versions (by <a
href="https://github.com/hf-kklein"><code>@hf-kklein</code></a> in <a
href="https://redirect.github.com/stefankoegl/python-json-patch/issues/155">#155</a>,
<a
href="https://redirect.github.com/stefankoegl/python-json-patch/issues/156">#156</a>,
<a
href="https://github.com/CyrilRoelandteNovance"><code>@CyrilRoelandteNovance</code></a>
in <a
href="https://redirect.github.com/stefankoegl/python-json-patch/issues/162">#162</a>,
<a href="https://github.com/stefankoegl"><code>@stefankoegl</code></a>
in <a
href="https://redirect.github.com/stefankoegl/python-json-patch/issues/193">#193</a>)</li>
<li>fix: remove unused exception variables (F841) by <a
href="https://github.com/Mubashir78"><code>@Mubashir78</code></a> in <a
href="https://redirect.github.com/stefankoegl/python-json-patch/pull/186">stefankoegl/python-json-patch#186</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/stefankoegl/python-json-patch/commit/c39058eabd7e50e92e6a6fd7e915c0218c7284f3"><code>c39058e</code></a>
bump version to 1.36</li>
<li><a
href="https://github.com/stefankoegl/python-json-patch/commit/592fbe8dcee4117a0f810f0780fae1c0a1e14ef3"><code>592fbe8</code></a>
Merge pull request <a
href="https://redirect.github.com/stefankoegl/python-json-patch/issues/232">#232</a>
from xingzhao-ji/fix-cli-preserve-original-on-replace...</li>
<li><a
href="https://github.com/stefankoegl/python-json-patch/commit/dc04359a327ee8bf49e3392cd683177b52cc28ad"><code>dc04359</code></a>
Merge pull request <a
href="https://redirect.github.com/stefankoegl/python-json-patch/issues/233">#233</a>
from Apeksha9389/fix/honor-diff-optimization</li>
<li><a
href="https://github.com/stefankoegl/python-json-patch/commit/2294792469c9c5294c6e2385a95326b971a88b6b"><code>2294792</code></a>
fix: honor optimization=False when generating JSON patches</li>
<li><a
href="https://github.com/stefankoegl/python-json-patch/commit/2c8ccf25c423bce6d21ab8a4bb4d62b4a4b19a15"><code>2c8ccf2</code></a>
Preserve the original file when in-place CLI replacement fails</li>
<li><a
href="https://github.com/stefankoegl/python-json-patch/commit/7e00b23e7793ab6d0bfead6af61393b7327102e8"><code>7e00b23</code></a>
bump version to 1.35</li>
<li><a
href="https://github.com/stefankoegl/python-json-patch/commit/d38e01e5aa6a56d4d2133160dbd13b46914714e9"><code>d38e01e</code></a>
Merge pull request <a
href="https://redirect.github.com/stefankoegl/python-json-patch/issues/231">#231</a>
from stefankoegl/claude/epic-einstein-apfbsl</li>
<li><a
href="https://github.com/stefankoegl/python-json-patch/commit/cfbcbc86d453b8417b1638420907e94e15461814"><code>cfbcbc8</code></a>
Install the command line programs as console_scripts</li>
<li><a
href="https://github.com/stefankoegl/python-json-patch/commit/73be0bec6dbb1a8501fec52088b45582ba70c802"><code>73be0be</code></a>
Merge pull request <a
href="https://redirect.github.com/stefankoegl/python-json-patch/issues/230">#230</a>
from fhgffy/fix-cli-inplace-file-handle</li>
<li><a
href="https://github.com/stefankoegl/python-json-patch/commit/8b33b6eb9e03e64fd54416186d21bf08150283b5"><code>8b33b6e</code></a>
Close input handle before in-place CLI replacement</li>
<li>Additional commits viewable in <a
href="https://github.com/stefankoegl/python-json-patch/compare/v1.33...v1.36">compare
view</a></li>
</ul>
</details>
<br />
Updates `pydantic` from 2.13.4 to 2.14.1
<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.14.1 2026-10-11</h2>
<h3>What's Changed</h3>
<h4>Performance</h4>
<ul>
<li>Avoid Python tuple allocation during model fields validation by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13955">#13955</a></li>
<li>Avoid unnecessary extra dict allocation in model validation by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13956">#13956</a></li>
</ul>
<h4>Fixes</h4>
<ul>
<li>Fix <code>arguments-v3</code> schema with variadic keywords by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13954">#13954</a></li>
<li>Fix <code>TypeError</code> on <code>ForwardRef</code> on Python
3.10.0 by <a href="https://github.com/Viicos"><code>@Viicos</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13964">#13964</a></li>
<li>Support <code>closed</code> and <code>extra_items</code> via
inheritance in <code>TypedDict</code> by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13967">#13967</a></li>
<li>Enforce the <code>max_digits</code> whole-digits limit in the Python
<code>Decimal</code> validator by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13972">#13972</a></li>
<li>Reject out-of-range int inputs for <code>timedelta</code> by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13973">#13973</a></li>
<li>Support named tuples in <code>Sequence</code> validation by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13978">#13978</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1">https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1</a></p>
<h2>v2.14.0 2026-10-08</h2>
<h3>What's Changed</h3>
<p>The highlights of the v2.14 release are available in the <a
href="https://pydantic.dev/articles/pydantic-v2-14-release">blog
post</a>.
Several minor changes (considered non-breaking changes according to our
<a
href="https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2">versioning
policy</a>) are also included in this release. Make sure to look into
them before upgrading.</p>
<p>This release drops support for Python 3.9 and adds support for Python
3.15.</p>
<h4>New Features</h4>
<ul>
<li>Add support for <code>multiple_of</code> constraint in
<code>fraction</code> and <code>timedelta</code> core schemas by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13873">#13873</a></li>
<li>Add <code>__namespace__</code> parameter to
<code>create_model()</code> by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13895">#13895</a></li>
</ul>
<h4>Changes</h4>
<ul>
<li>Add an <code>ordered-dict</code> core schema by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13796">#13796</a></li>
<li>Add a <code>counter</code> core schema by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13824">#13824</a></li>
<li>Do not mutate <code>model_config</code> attribute by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13825">#13825</a></li>
<li>Reject newlines in <code>NameEmail</code> validation by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13897">#13897</a></li>
</ul>
<h4>Fixes</h4>
<ul>
<li>Call enum constructors in both validation modes by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13792">#13792</a></li>
<li>Fix documentation examples not raising and remove unused
<code>string_sub_type</code> unused error code by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13821">#13821</a></li>
<li>Catch <code>OverflowError</code> during <code>ByteSize</code>
validation by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13850">#13850</a></li>
<li>Require <code>multiple_of</code> constraints to be positive by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13862">#13862</a></li>
<li>Always pop field name and model type stacks during schema generation
by <a
href="https://github.com/saquibjawedbit"><code>@saquibjawedbit</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13859">#13859</a></li>
<li>Handle <code>TypeError</code> gracefully during docstring extraction
by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13874">#13874</a></li>
<li>Fix config propagation of stdlib dataclasses and
<code>TypedDict</code>s in JSON Schema by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13891">#13891</a></li>
<li>Don't apply <code>ser_json_timedelta</code> to all datetime types in
serialization inference by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13892">#13892</a></li>
<li>Encode JSON Schema defaults with a consistent configuration by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13893">#13893</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>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<h2>v2.14.0 (2026-10-08)</h2>
<p><a
href="https://github.com/pydantic/pydantic/releases/tag/v2.14.0">GitHub
release</a></p>
<h3>What's Changed</h3>
<p>The highlights of the v2.14 release are available in the <a
href="https://pydantic.dev/articles/pydantic-v2-14-release">blog
post</a>.
Several minor changes (considered non-breaking changes according to our
<a
href="https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2">versioning
policy</a>)
are also included in this release. Make sure to look into them before
upgrading.</p>
<p>This release drops support for Python 3.9 and adds support for Python
3.15.</p>
<h4>New Features</h4>
<ul>
<li>Add support for <code>multiple_of</code> constraint in
<code>fraction</code> and <code>timedelta</code> core schemas by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13873">#13873</a></li>
<li>Add <code>__namespace__</code> parameter to
<code>create_model()</code> by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13895">#13895</a></li>
</ul>
<h4>Changes</h4>
<ul>
<li>Add an <code>ordered-dict</code> core schema by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13796">#13796</a></li>
<li>Add a <code>counter</code> core schema by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13824">#13824</a></li>
<li>Do not mutate <code>model_config</code> attribute by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13825">#13825</a></li>
<li>Reject newlines in <code>NameEmail</code> validation by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13897">#13897</a></li>
</ul>
<h4>Fixes</h4>
<ul>
<li>Call enum constructors in both validation modes by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13792">#13792</a></li>
<li>Fix documentation examples not raising and remove unused
<code>string_sub_type</code> unused error code by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13821">#13821</a></li>
<li>Catch <code>OverflowError</code> during <code>ByteSize</code>
validation by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13850">#13850</a></li>
<li>Require <code>multiple_of</code> constraints to be positive by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13862">#13862</a></li>
<li>Always pop field name and model type stacks during schema generation
by <a
href="https://github.com/saquibjawedbit"><code>@saquibjawedbit</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13859">#13859</a></li>
<li>Handle <code>TypeError</code> gracefully during docstring extraction
by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13874">#13874</a></li>
<li>Fix config propagation of stdlib dataclasses and
<code>TypedDict</code>s in JSON Schema by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13891">#13891</a></li>
<li>Don't apply <code>ser_json_timedelta</code> to all datetime types in
serialization inference by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13892">#13892</a></li>
<li>Encode JSON Schema defaults with a consistent configuration by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13893">#13893</a></li>
<li>Propagate <code>init</code> and <code>kw_only=False</code> from
<code>Field()</code> to stdlib dataclass fields by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13898">#13898</a></li>
<li>Respect propagated extra config in the JSON Schema of stdlib
dataclasses by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13899">#13899</a></li>
<li>Handle OS errors during <code>ZoneInfo</code> validation by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13912">#13912</a></li>
<li>Handle exceptions during <code>Decimal</code> validation by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13940">#13940</a></li>
<li>Rebuild incomplete types during serialization inference by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13922">#13922</a></li>
<li>Reject large exponents in <code>Fraction</code> validation by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13944">#13944</a></li>
<li>Avoid validating URL prefix multiple times in multi host URLs by <a
href="https://github.com/Viicos"><code>@Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13945">#13945</a></li>
</ul>
<h3>New Contributors</h3>
<ul>
<li><a
href="https://github.com/saquibjawedbit"><code>@saquibjawedbit</code></a>
made their first contribution in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13859">#13859</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pydantic/pydantic/commit/b2212c787fb5c73386dc770681ec49cd09da8e73"><code>b2212c7</code></a>
Prepare release v2.14.1</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/968fb2b6eed196a3f17ca9a3aa4697b518614531"><code>968fb2b</code></a>
Fix docs conversion table</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/6adc8b3f6146cabf290bdefd51c87486dd659091"><code>6adc8b3</code></a>
Support named tuples in <code>Sequence</code> validation</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/7637fbc31c91f86870c3b34d220d5b7fd62c54db"><code>7637fbc</code></a>
Reject out-of-range int inputs for <code>timedelta</code></li>
<li><a
href="https://github.com/pydantic/pydantic/commit/dfdbfcb5fa6cf0ae291cb8aebc5bf2153670fe9c"><code>dfdbfcb</code></a>
Enforce the <code>max_digits</code> whole-digits limit in the Python
<code>Decimal</code> validator</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/e2456d3161d0969b917fc769b2e06b7e076cb886"><code>e2456d3</code></a>
Support <code>closed</code> and <code>extra_items</code> via inheritance
in <code>TypedDict</code></li>
<li><a
href="https://github.com/pydantic/pydantic/commit/317655dfe022ebfc818c8e8e744b671fe53d8c3f"><code>317655d</code></a>
Harden CI security</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/3ba1dd48939542a04748a9bcfd3248496fa0bcc5"><code>3ba1dd4</code></a>
Fix <code>TypeError</code> on <code>ForwardRef</code> on Python
3.10.0</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/43681abc488119808fcdae2f60cadd5520ceed26"><code>43681ab</code></a>
Bump <code>samuelcolvin/check-python-version</code> action to v5.1</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/d6bc53a8559d93814009eb2043db133a90f7f921"><code>d6bc53a</code></a>
Avoid unnecessary extra dict allocation in model validation</li>
<li>Additional commits viewable in <a
href="https://github.com/pydantic/pydantic/compare/v2.13.4...v2.14.1">compare
view</a></li>
</ul>
</details>
<br />
Updates `ruff` from 0.16.4 to 0.17.1
<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.17.1</h2>
<h2>Release Notes</h2>
<p>Released on 2026-10-15.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>pycodestyle</code>] Don't treat <code>None</code>,
<code>True</code>, or <code>False</code> as keywords
(<code>E271</code>-<code>E274</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/29322">#29322</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix dedent with multiple leading comments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/29382">#29382</a>)</li>
<li>[<code>flake8-pyi</code>] Detect legacy positional-only parameters
in <code>__new__</code> methods (<code>PYI063</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28502">#28502</a>)</li>
<li>[<code>flake8-pyi</code>] Fix false positives on quoted annotations
(<code>PYI036</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/29274">#29274</a>)</li>
<li>[<code>perflint</code>] Avoid invalid comprehension suggestions
(<code>PERF401</code>, <code>PERF403</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/29366">#29366</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>Treat more <code>collections</code> and <code>weakref</code>
containers as mutable (<a
href="https://redirect.github.com/astral-sh/ruff/pull/29213">#29213</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>[<code>flake8-import-conventions</code>] Update default and example
<code>aliases</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/29333">#29333</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/fixfon"><code>@fixfon</code></a></li>
<li><a href="https://github.com/mmaxjr"><code>@mmaxjr</code></a></li>
<li><a
href="https://github.com/joshuavetos"><code>@joshuavetos</code></a></li>
<li><a
href="https://github.com/nekomario28"><code>@nekomario28</code></a></li>
<li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li>
<li><a
href="https://github.com/shan3520"><code>@shan3520</code></a></li>
</ul>
<h2>Install ruff 0.17.1</h2>
<h3>Install prebuilt binaries via shell script</h3>
<pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf
https://releases.astral.sh/github/ruff/releases/download/0.17.1/ruff-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c "irm
https://releases.astral.sh/github/ruff/releases/download/0.17.1/ruff-installer.ps1
| iex"
</code></pre>
<h2>Download ruff 0.17.1</h2>
<p>| File | Platform | Checksum |</p>
<!-- 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.17.1</h2>
<p>Released on 2026-10-15.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>pycodestyle</code>] Don't treat <code>None</code>,
<code>True</code>, or <code>False</code> as keywords
(<code>E271</code>-<code>E274</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/29322">#29322</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix dedent with multiple leading comments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/29382">#29382</a>)</li>
<li>[<code>flake8-pyi</code>] Detect legacy positional-only parameters
in <code>__new__</code> methods (<code>PYI063</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28502">#28502</a>)</li>
<li>[<code>flake8-pyi</code>] Fix false positives on quoted annotations
(<code>PYI036</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/29274">#29274</a>)</li>
<li>[<code>perflint</code>] Avoid invalid comprehension suggestions
(<code>PERF401</code>, <code>PERF403</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/29366">#29366</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>Treat more <code>collections</code> and <code>weakref</code>
containers as mutable (<a
href="https://redirect.github.com/astral-sh/ruff/pull/29213">#29213</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>[<code>flake8-import-conventions</code>] Update default and example
<code>aliases</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/29333">#29333</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/fixfon"><code>@fixfon</code></a></li>
<li><a href="https://github.com/mmaxjr"><code>@mmaxjr</code></a></li>
<li><a
href="https://github.com/joshuavetos"><code>@joshuavetos</code></a></li>
<li><a
href="https://github.com/nekomario28"><code>@nekomario28</code></a></li>
<li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li>
<li><a
href="https://github.com/shan3520"><code>@shan3520</code></a></li>
</ul>
<h2>0.17.0</h2>
<p>Released on 2026-10-09.</p>
<p>The executables in our macOS and Windows release archives and
<code>ruff</code> wheels are now code-signed.
macOS executables are signed with an Apple Developer ID certificate and
notarized by Apple. Windows
executables have timestamped Authenticode signatures from Azure Artifact
Signing. This enables
verification of the release publisher and binary integrity, supports
publisher-based allowlisting,
and should reduce security warnings and antivirus false positives.</p>
<h3>Breaking changes</h3>
<ul>
<li>
<p>Update the default and latest Python versions for 3.15 (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28792">#28792</a>)</p>
<p>Ruff now defaults to Python 3.11 instead of 3.10 when no Python
version is configured through
<a
href="https://docs.astral.sh/ruff/settings/#target-version"><code>target-version</code></a>
or
<a
href="https://docs.astral.sh/ruff/configuration/#inferring-the-python-version"><code>requires-python</code></a>.
When
checking for syntax errors without a configured Python version, Ruff now
defaults to Python 3.15</p>
</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/4683270c69cbdaf6ad64d3f983fc458d5a43b41f"><code>4683270</code></a>
Bump version to 0.17.1 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/29420">#29420</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/3514027edb659bbc3c787d355be9d130e5587f15"><code>3514027</code></a>
[ty] Update typing conformance suite pin (<a
href="https://redirect.github.com/astral-sh/ruff/issues/29417">#29417</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/829455624d78f2e89669e4b4b14af2b96abdb1ae"><code>8294556</code></a>
Update referenced PR security-review workflow (<a
href="https://redirect.github.com/astral-sh/ruff/issues/29237">#29237</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d1e1b1f69b511df4385f64b510eeec4da01c1a0e"><code>d1e1b1f</code></a>
[ty] Preserve recursive aliases when rebuilding intersections (<a
href="https://redirect.github.com/astral-sh/ruff/issues/29057">#29057</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/93526150df078af7dd8fc4226cdcc469539d2001"><code>9352615</code></a>
[<code>perflint</code>] Avoid invalid comprehension suggestions
(<code>PERF401</code>, <code>PERF403</code>) (...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/83a3afc3156d73ae4296f3fa74ede28e4c72bfcd"><code>83a3afc</code></a>
Fix dedent with multiple leading comments (<a
href="https://redirect.github.com/astral-sh/ruff/issues/29382">#29382</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/b42a8734410230f4529151782cae951b99bed858"><code>b42a873</code></a>
[ty] Clarify object attribute write-contract rationale (<a
href="https://redirect.github.com/astral-sh/ruff/issues/29384">#29384</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d01678ebf594c97a7767d4372061c1f80ae5b5bb"><code>d01678e</code></a>
[ty] Clarify object attribute write-contract rationale (<a
href="https://redirect.github.com/astral-sh/ruff/issues/29384">#29384</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/355b42a7719d8a555e3ee50c89848b42d8a11eb5"><code>355b42a</code></a>
[ty] Avoid writable override contracts from object (<a
href="https://redirect.github.com/astral-sh/ruff/issues/29373">#29373</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e26e6d2a54ac2c5e1f5b1945042de3ff3885bf8e"><code>e26e6d2</code></a>
[ty] Collect intersection inference through constraint relations (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28677">#28677</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.16.4...0.17.1">compare
view</a></li>
</ul>
</details>
<br />
Updates `mypy` from 2.1.0 to 2.4.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.4</h2>
<p>We've just uploaded mypy 2.4.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>Python 3.15 Support</h3>
<p>Mypy 2.4 supports running on Python 3.15 and type checking most
Python
3.15 features. This includes the new builtin <code>sentinel</code> type
for
sentinel values (PEP 661), which mypy now supports (see below for
details). Lazy imports (PEP 810) and unpacking in comprehensions
(PEP 798) are also supported. Closed TypedDicts (PEP 728) have been
supported since mypy 2.2, but the <code>extra_items</code> TypedDict
argument,
also introduced in PEP 728, is still unsupported. Support for
<code>extra_items</code> will be added in a future mypy release.</p>
<h3>Native Parser Enabled by Default</h3>
<p>Mypy now uses the new native parser by default. It's based on the
Ruff
parser, and it's significantly faster than the legacy parser, which
uses the stdlib <code>ast</code> module. The native parser also has
other
benefits:</p>
<ul>
<li>You can target newer Python versions and use recent Python syntax
even when running mypy on an older Python version. For example, you
can use <code>--python-version 3.15</code> when running mypy on Python
3.14.</li>
<li>Stub files can use syntax that is newer than the target Python
version. For example, stubs can use the PEP 695 generic class syntax
(<code>class Box[T]: ...</code>) when running on or targeting Python
3.10.</li>
<li>Parallel type checking requires the native parser.</li>
</ul>
<p>The legacy parser is still available through
<code>--no-native-parser</code>, or
<code>native_parser = False</code> in the config file
(<code>native_parser = false</code>
under <code>[tool.mypy]</code> in pyproject.toml). We are planning to
remove the
legacy parser in early 2027. If you run into a problem with the native
parser, please report it on the
<a href="https://github.com/python/mypy/issues">issue tracker</a>.</p>
<p>Unlike the legacy parser, the native parser doesn't support type
comments for variables defined by <code>for</code> and <code>with</code>
statements. These
type comments are silently ignored, and the types of the variables
are</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/mypy/commit/935ba8afba7ceacca0651579450c74339f343016"><code>935ba8a</code></a>
Bump version to 2.4.0</li>
<li><a
href="https://github.com/python/mypy/commit/334a678967dc6bcda3d3f8cb82e253dd61fa2be9"><code>334a678</code></a>
Add link for PR 22066 in mypy 2.4 changelog (<a
href="https://redirect.github.com/python/mypy/issues/22082">#22082</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/fe69660bcdaa76cccb1aedbb4b9c1c7627215571"><code>fe69660</code></a>
Finalize mypy 2.4 changelog (<a
href="https://redirect.github.com/python/mypy/issues/22080">#22080</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/541fd87ac53581fb3c511b277fd780ec4e869c95"><code>541fd87</code></a>
Various mypy 2.4 changelog updates (<a
href="https://redirect.github.com/python/mypy/issues/22077">#22077</a>)</li>
<li><a
href="https://github.com/python/mypy/commit/b231182c0b2993918f74594236bda7d3ec6fcbe5"><code>b231182</code><… Latest Branches
+21%
sera-wi/core/mermaid-metadata-labels +22%
eliornl/core/linear-stream-chunk-merge +22%
eyurtsev/core/v3-gateway-tracing © 2026 CodSpeed Technology