Compare commits

...
Author SHA1 Message Date
sydney-runkleandgithub-actions[bot] 9681ecef12 chore(deps): upgrade dependencies with uv lock --upgrade 2026-09-06 00:55:45 +00:00
Nick HollonandGitHub 81bf17b231 fix(langgraph): type undeclared v3 stream projections (#8596) 2026-09-03 11:23:25 -04:00
John KennedyGitHublangsmith-fleet[bot] <langsmith-fleet[bot]@users.noreply.github.com>
11738d83db chore(langgraph): bump mistune to 3.3.4 (#8804)
Updates the `libs/langgraph/uv.lock` development dependency from Mistune
3.3.0 to 3.3.4, resolving GHSA-6m44-fpc8-c3rq (Dependabot #389). The
change is scoped to the affected lockfile.

Validation: `uv lock --project libs/langgraph --locked`.

Co-authored-by: langsmith-fleet[bot] <langsmith-fleet[bot]@users.noreply.github.com>
2026-09-02 17:38:30 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1983e60971 chore(deps): bump browserslist from 4.28.1 to 4.28.8 in /libs/cli/js-examples (#8797)
Bumps [browserslist](https://github.com/browserslist/browserslist) from
4.28.1 to 4.28.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/browserslist/browserslist/releases">browserslist's
releases</a>.</em></p>
<blockquote>
<h2>4.28.8</h2>
<ul>
<li>Fixed <code>including kaios</code> in baseline queries (by <a
href="https://github.com/Jaybhade"><code>@​Jaybhade</code></a>).</li>
</ul>
<h2>4.28.7</h2>
<ul>
<li>Improved parsing performance.</li>
<li>Fixed unbounded memory growth (by <a
href="https://github.com/alanturing881"><code>@​alanturing881</code></a>).</li>
<li>Fixed prototype write issue (by <a
href="https://github.com/alanturing881"><code>@​alanturing881</code></a>).</li>
</ul>
<h2>4.28.6</h2>
<ul>
<li>Fixed Electron version queries (by <a
href="https://github.com/spokodev"><code>@​spokodev</code></a>).</li>
</ul>
<h2>4.28.5</h2>
<ul>
<li>Fixed <code>&gt;</code> and <code>&gt;=</code> queries (by <a
href="https://github.com/spokodev"><code>@​spokodev</code></a>).</li>
</ul>
<h2>4.28.4</h2>
<ul>
<li>Fixed <code>SyntaxError</code> regression of 4.28.3.</li>
</ul>
<h2>4.28.3</h2>
<ul>
<li>Fixed baseline query case-insensitivity (by <a
href="https://github.com/swwind"><code>@​swwind</code></a>).</li>
</ul>
<h2>4.28.2</h2>
<ul>
<li>Fix prototype pollution (by <a
href="https://github.com/chluo1997"><code>@​chluo1997</code></a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md">browserslist's
changelog</a>.</em></p>
<blockquote>
<h2>4.28.8</h2>
<ul>
<li>Fixed <code>including kaios</code> in baseline queries (by <a
href="https://github.com/Jaybhade"><code>@​Jaybhade</code></a>).</li>
</ul>
<h2>4.28.7</h2>
<ul>
<li>Improved parsing performance.</li>
<li>Fixed unbounded memory growth (by <a
href="https://github.com/alanturing881"><code>@​alanturing881</code></a>).</li>
<li>Fixed prototype write issue (by <a
href="https://github.com/alanturing881"><code>@​alanturing881</code></a>).</li>
</ul>
<h2>4.28.6</h2>
<ul>
<li>Fixed Electron version queries (by <a
href="https://github.com/spokodev"><code>@​spokodev</code></a>).</li>
</ul>
<h2>4.28.5</h2>
<ul>
<li>Fixed <code>&gt;</code> and <code>&gt;=</code> queries (by <a
href="https://github.com/spokodev"><code>@​spokodev</code></a>).</li>
</ul>
<h2>4.28.4</h2>
<ul>
<li>Fixed <code>SyntaxError</code> regression of 4.28.3.</li>
</ul>
<h2>4.28.3</h2>
<ul>
<li>Fixed baseline query case-insensitivity (by <a
href="https://github.com/swwind"><code>@​swwind</code></a>).</li>
</ul>
<h2>4.28.2</h2>
<ul>
<li>Fix prototype pollution (by <a
href="https://github.com/chluo1997"><code>@​chluo1997</code></a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/browserslist/browserslist/commit/f2f2e6cfb01bb4942941d328737546f4e2ae41ad"><code>f2f2e6c</code></a>
Release 4.28.8 version</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/d0787c88fa29ba895fea51cfe921232c7b5d1377"><code>d0787c8</code></a>
Update dependencies</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/fcf8fa9857b30ccdf801a548f5d09d3c4ff0d43f"><code>fcf8fa9</code></a>
Merge pull request <a
href="https://redirect.github.com/browserslist/browserslist/issues/939">#939</a>
from Jaybhade/fix/baseline-kaios-without-downstream</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/57ecd64454e9252afdd6a7e76926e13dda48a38c"><code>57ecd64</code></a>
fix: support &quot;including kaios&quot; without downstream</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/093a0f67bb0becda55235d767b134df3197c54a1"><code>093a0f6</code></a>
Update EM banner</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/b637868045806d2fba4c24eb0060e4cc8b1db276"><code>b637868</code></a>
Release 4.28.7 version</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/313f4659b9f985ade89d1d6a54a860371c41cc46"><code>313f465</code></a>
Update dependencies</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/c935c5a206f8b13db8846818bc03643e147dcbdf"><code>c935c5a</code></a>
Fix regexp performance</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/d7e9e653cb53399065943f59f0b3063987b0a008"><code>d7e9e65</code></a>
Rewrite structure parsing to make it always fast</li>
<li><a
href="https://github.com/browserslist/browserslist/commit/ec4a55efd76bdfa506ec7ce4fea1691559e9ca8f"><code>ec4a55e</code></a>
Fix import order</li>
<li>Additional commits viewable in <a
href="https://github.com/browserslist/browserslist/compare/4.28.1...4.28.8">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new
releaser for browserslist since your current version.</p>
</details>
<br />


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

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/langchain-ai/langgraph/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 13:27:41 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d07198a53c chore(deps): bump @humanfs/node from 0.16.7 to 0.16.8 in /libs/cli/js-examples (#8798)
Bumps
[@humanfs/node](https://github.com/humanwhocodes/humanfs/tree/HEAD/packages/node)
from 0.16.7 to 0.16.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/humanwhocodes/humanfs/releases">@​humanfs/node's
releases</a>.</em></p>
<blockquote>
<h2>node: v0.16.8</h2>
<h2><a
href="https://github.com/humanwhocodes/humanfs/compare/node-v0.16.7...node-v0.16.8">0.16.8</a>
(2026-04-17)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Include type dependencies at runtime (<a
href="https://github.com/humanwhocodes/humanfs/commit/956ce7aac2a998d0af23b7cb08e7630b69693138">956ce7a</a>),
closes <a
href="https://redirect.github.com/humanwhocodes/humanfs/issues/145">#145</a></li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​humanfs/core</code> bumped from ^0.19.1 to ^0.19.2</li>
</ul>
</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/humanwhocodes/humanfs/blob/main/packages/node/CHANGELOG.md">@​humanfs/node's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/humanwhocodes/humanfs/compare/node-v0.16.7...node-v0.16.8">0.16.8</a>
(2026-04-17)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Ensure symlinks are copied as symlinks in <code>copy()</code> and
<code>copyAll()</code> (<a
href="https://github.com/humanwhocodes/humanfs/commit/22bbaa4487a3e6c1197ca619840de4615d0c3404">22bbaa44</a>)</li>
<li>Include type dependencies at runtime (<a
href="https://github.com/humanwhocodes/humanfs/commit/956ce7aac2a998d0af23b7cb08e7630b69693138">956ce7a</a>),
closes <a
href="https://redirect.github.com/humanwhocodes/humanfs/issues/145">#145</a></li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​humanfs/core</code> bumped from ^0.19.1 to ^0.19.2</li>
</ul>
</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/humanwhocodes/humanfs/commit/e96070e897f017ae8abd2b0676d98d14e49665cc"><code>e96070e</code></a>
chore: release main (<a
href="https://github.com/humanwhocodes/humanfs/tree/HEAD/packages/node/issues/146">#146</a>)</li>
<li><a
href="https://github.com/humanwhocodes/humanfs/commit/22bbaa4487a3e6c1197ca619840de4615d0c3404"><code>22bbaa4</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/humanwhocodes/humanfs/commit/956ce7aac2a998d0af23b7cb08e7630b69693138"><code>956ce7a</code></a>
fix: Include type dependencies at runtime</li>
<li>See full diff in <a
href="https://github.com/humanwhocodes/humanfs/commits/node-v0.16.8/packages/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@humanfs/node&package-manager=npm_and_yarn&previous-version=0.16.7&new-version=0.16.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/langchain-ai/langgraph/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 13:27:21 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>John Kennedyopen-swe[bot] <open-swe@users.noreply.github.com>
c0a13bb22d chore(deps): bump the minor-and-patch group across 1 directory with 7 updates (#8779)
Bumps the minor-and-patch group with 7 updates in the /libs/sdk-py
directory:

| Package | From | To |
| --- | --- | --- |
| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |
| [langchain-protocol](https://github.com/langchain-ai/agent-protocol) |
`0.0.18` | `0.0.19` |
| [langchain-core](https://github.com/langchain-ai/langchain) | `1.5.3`
| `1.6.1` |
| [ruff](https://github.com/astral-sh/ruff) | `0.16.1` | `0.16.5` |
| [ty](https://github.com/astral-sh/ty) | `0.0.66` | `0.0.75` |
| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |
| [pydantic](https://github.com/pydantic/pydantic) | `2.13.4` | `2.13.5`
|


Updates `orjson` from 3.11.9 to 3.12.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ijl/orjson/releases">orjson's
releases</a>.</em></p>
<blockquote>
<h2>3.12.0</h2>
<h3>Changed</h3>
<ul>
<li>Serialization implementation substantially rewritten.</li>
<li>Publish PyPI wheels for Python 3.15. For Python 3.15 and later,
<code>manylinux_2_39</code> (2024) is targeted instead of
<code>manylinux_2_17</code> (2012).</li>
<li>No longer publish PyPI wheels for ppc64le and s390x.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ijl/orjson/blob/master/CHANGELOG.md">orjson's
changelog</a>.</em></p>
<blockquote>
<h2>3.12.0 - 2026-08-14</h2>
<h3>Changed</h3>
<ul>
<li>Serialization implementation substantially rewritten.</li>
<li>Publish PyPI wheels for Python 3.15. For Python 3.15 and later,
<code>manylinux_2_39</code> (2024) is targeted instead of
<code>manylinux_2_17</code> (2012).</li>
<li>No longer publish PyPI wheels for ppc64le and s390x.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ijl/orjson/commit/6737895a1a4e3e26df0569a40147893a786f9a58"><code>6737895</code></a>
3.12.0</li>
<li><a
href="https://github.com/ijl/orjson/commit/c2a6e8ff7b898635fb68a85bd5a62df1edf61cfc"><code>c2a6e8f</code></a>
JsonWriter, iterators</li>
<li><a
href="https://github.com/ijl/orjson/commit/6a2d7a7d66dc3c5698625a7b334c40db459e46ae"><code>6a2d7a7</code></a>
yyjson 1ea2fb0</li>
<li><a
href="https://github.com/ijl/orjson/commit/97bf170d9726e91c891f35eae4892801520b9dce"><code>97bf170</code></a>
build update</li>
<li>See full diff in <a
href="https://github.com/ijl/orjson/compare/3.11.9...3.12.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `langchain-protocol` from 0.0.18 to 0.0.19
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/agent-protocol/releases">langchain-protocol's
releases</a>.</em></p>
<blockquote>
<h2>langchain-protocol==0.0.19</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(tooling): resolve datamodel-code-generator alerts by <a
href="https://github.com/jkennedyvz"><code>@​jkennedyvz</code></a> in <a
href="https://redirect.github.com/langchain-ai/agent-protocol/pull/93">langchain-ai/agent-protocol#93</a></li>
<li>feat: add LangSmith routing to run start by <a
href="https://github.com/mdrxy"><code>@​mdrxy</code></a> in <a
href="https://redirect.github.com/langchain-ai/agent-protocol/pull/95">langchain-ai/agent-protocol#95</a></li>
<li>release: v0.19.0 by <a
href="https://github.com/christian-bromann"><code>@​christian-bromann</code></a>
in <a
href="https://redirect.github.com/langchain-ai/agent-protocol/pull/96">langchain-ai/agent-protocol#96</a></li>
<li>fix(py): pin hatchling to avoid metadata 2.5 publish failure by <a
href="https://github.com/christian-bromann"><code>@​christian-bromann</code></a>
in <a
href="https://redirect.github.com/langchain-ai/agent-protocol/pull/97">langchain-ai/agent-protocol#97</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/langchain-ai/agent-protocol/compare/langchain-protocol==0.0.18...langchain-protocol==0.0.19">https://github.com/langchain-ai/agent-protocol/compare/langchain-protocol==0.0.18...langchain-protocol==0.0.19</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/agent-protocol/commit/59c02be488eb7adb98ae3450983fff293294e67a"><code>59c02be</code></a>
fix(py): pin hatchling to avoid metadata 2.5 publish failure (<a
href="https://redirect.github.com/langchain-ai/agent-protocol/issues/97">#97</a>)</li>
<li><a
href="https://github.com/langchain-ai/agent-protocol/commit/c59077b743fd3dd0b86f048a2b59128de413663d"><code>c59077b</code></a>
release: v0.19.0 (<a
href="https://redirect.github.com/langchain-ai/agent-protocol/issues/96">#96</a>)</li>
<li><a
href="https://github.com/langchain-ai/agent-protocol/commit/870ef9560fab320236d6e24770e8950c5a9be63d"><code>870ef95</code></a>
Merge pull request <a
href="https://redirect.github.com/langchain-ai/agent-protocol/issues/95">#95</a>
from langchain-ai/open-swe/v3-replica-routing</li>
<li><a
href="https://github.com/langchain-ai/agent-protocol/commit/175a1b8f2ac974e9b5097de90a51f1bc7ade73e0"><code>175a1b8</code></a>
feat(protocol): add LangSmith routing to run start</li>
<li><a
href="https://github.com/langchain-ai/agent-protocol/commit/d9fd23d762bf4cffe876890a854fb79bcdd14f1a"><code>d9fd23d</code></a>
Merge pull request <a
href="https://redirect.github.com/langchain-ai/agent-protocol/issues/93">#93</a>
from langchain-ai/langster/fix-datamodel-code-generato...</li>
<li><a
href="https://github.com/langchain-ai/agent-protocol/commit/9476948ab0ce1027131b58b9813f6bd3ba238ef8"><code>9476948</code></a>
fix(tooling): update code generator dependencies</li>
<li>See full diff in <a
href="https://github.com/langchain-ai/agent-protocol/compare/langchain-protocol==0.0.18...langchain-protocol==0.0.19">compare
view</a></li>
</ul>
</details>
<br />

Updates `langchain-core` from 1.5.3 to 1.6.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langchain/releases">langchain-core's
releases</a>.</em></p>
<blockquote>
<h2>langchain-core==1.6.1</h2>
<p>Changes since langchain-core==1.6.0</p>
<p>revert: release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39971">#39971</a>)
release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39967">#39967</a>)
fix(core): shore up indexing in genai v1 streaming content (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39964">#39964</a>)
fix(core): make <code>StructuredTool</code> JSON-serializable (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39631">#39631</a>)
chore(deps): bump minor and patch dependencies (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39869">#39869</a>)
release(core): 1.6.1 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39832">#39832</a>)
feat(core): propagate gateway information on error path (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39829">#39829</a>)</p>
<h2>langchain-core==1.6.0</h2>
<p>Changes since langchain-core==1.5.6</p>
<p>release(core): 1.6.0 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39760">#39760</a>)
fix(core): resolve postponed annotations in
<code>StructuredTool._injected_args_keys</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39602">#39602</a>)
feat(core): add standard model exception types (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39538">#39538</a>)
fix(core): allow deserializing <code>RunnablePick</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39753">#39753</a>)
fix(core): make <code>convert_to_openai_function</code> handle callables
and non-dict mappings (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39750">#39750</a>)
fix(core): make subprocess and temporary file tests portable on Windows
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39664">#39664</a>)
fix(core): fail fast when tool schemas can't resolve forward refs during
serialization (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39570">#39570</a>)
test(core): avoid version-dependent runnable snapshots (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39705">#39705</a>)
fix(core): require all nested properties for strict tool schemas (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39306">#39306</a>)
fix(core): remove stale sync-stream <code>xfail</code> [closes <a
href="https://redirect.github.com/langchain-ai/langchain/issues/39720">#39720</a>]
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39723">#39723</a>)
perf(core): Lazily import transformers (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38037">#38037</a>)
fix(core): accept non-dict Mapping values in mustache templates (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39680">#39680</a>)
docs(core): clarify <code>Runnable</code> pipe coercion [closes <a
href="https://redirect.github.com/langchain-ai/langchain/issues/39075">#39075</a>]
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39707">#39707</a>)
fix(core): finalize chain-group runs on <code>BaseException</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39699">#39699</a>)</p>
<h2>langchain-core==1.5.6</h2>
<p>Changes since langchain-core==1.5.5</p>
<p>chore(core): release 1.5.6 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39704">#39704</a>)
feat(core): incorporate gateway metadata to traces (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39703">#39703</a>)</p>
<h2>langchain-core==1.5.5</h2>
<p>Changes since langchain-core==1.5.4</p>
<p>release(core): 1.5.5 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39655">#39655</a>)
fix(core): make abatch_iterate consistent with batch_iterate for None
and zero size (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39367">#39367</a>)
fix(core): respect pydantic aliases when validating tool inputs (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39572">#39572</a>)
fix(core): issues in merging chunks (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39535">#39535</a>)
fix(core): handle v1 base model validation in async path (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39576">#39576</a>)
fix(core): handle tool descriptions for infer_schema=False (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39573">#39573</a>)
fix(core): clear usage metadata callback on exceptions in context
manager (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39616">#39616</a>)
fix(core): handle falsy LLM and chat model caches (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39283">#39283</a>)
chore(core): add httpx as an explicit dep (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39612">#39612</a>)
fix(core): preserve non-str/non-dict items in
<code>DictPromptTemplate</code> list values (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39588">#39588</a>)
fix(core): raise ValueError when explicit tool_outputs length mismatches
tool_calls in tool_example_to_messages (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39142">#39142</a>)
fix(core): guard malformed Anthropic content blocks (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38670">#38670</a>)</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langchain/commit/4fe9d3062f4b68e2e472eb92decf369c93aebb46"><code>4fe9d30</code></a>
chore(openai): fix tests (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39972">#39972</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/8fa38dc143faecec0287395bce4484af4b82254c"><code>8fa38dc</code></a>
revert: release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39971">#39971</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/122030d79e944a5b55c33847d29bcfbe64488372"><code>122030d</code></a>
release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39967">#39967</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/7d4b42b57235020e6f496fdfebab44c3ca1b1f5b"><code>7d4b42b</code></a>
release(langchain): 1.3.18 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39966">#39966</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/4a66e355da07b8fad7d6cb8db99287fb4d7e6d83"><code>4a66e35</code></a>
fix(langchain): preserve content-block shape in PIIMiddleware redaction
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39894">#39894</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/38e211359f0b65b480d9ee4c53f2385f8c249bb3"><code>38e2113</code></a>
fix(core): shore up indexing in genai v1 streaming content (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39964">#39964</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/13b1b2feae476fdcebc0a285a723d5cbfed9df2e"><code>13b1b2f</code></a>
fix(core): make <code>StructuredTool</code> JSON-serializable (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39631">#39631</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/3b3b308e6d956c9a670e41e66a468466fe6f8c26"><code>3b3b308</code></a>
release(anthropic): 1.7.0 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39963">#39963</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/e3f6adfe1976a773704a20fef7bb03ac0309e0e4"><code>e3f6adf</code></a>
feat(anthropic): support top-level param for skills via
<code>container</code>; `updates...</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/c253f54b905f9648c50b723f01945f39a256d8aa"><code>c253f54</code></a>
fix(openai): correct <code>reasoning_effort_levels</code> for gpt-5 and
gpt-5.1 profiles...</li>
<li>Additional commits viewable in <a
href="https://github.com/langchain-ai/langchain/compare/langchain-core==1.5.3...langchain-core==1.6.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.16.1 to 0.16.5
<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.16.5</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>Install ruff 0.16.5</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.16.5/ruff-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c &quot;irm
https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1
| iex&quot;
</code></pre>
<h2>Download ruff 0.16.5</h2>
<!-- 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.16.5</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>0.16.4</h2>
<p>Released on 2026-08-20.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>flake8-use-pathlib</code>] Add autofix for
<code>PTH116</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26460">#26460</a>)</li>
<li>[<code>refurb</code>] Restrict <code>delete-full-slice</code> to
lists (<code>FURB131</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27711">#27711</a>)</li>
<li>[<code>refurb</code>] Skip <code>FURB101</code> and
<code>FURB103</code> when the <code>open</code> argument is a file
descriptor (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27643">#27643</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix <code>InvalidInstruction</code> on Windows CPUs that do not
support <code>POPCNT</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27803">#27803</a>)</li>
<li>[<code>pyflakes</code>] Emit semantic syntax errors in string type
definitions as <code>F722</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27835">#27835</a>)</li>
<li>[<code>pylint</code>] Allow <code>os._exit</code> imports in
<code>import-private-name</code> (<code>PLC2701</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27738">#27738</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a"><code>9e4938c</code></a>
Bump 0.16.5 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28110">#28110</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd"><code>aad0e90</code></a>
Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28049">#28049</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4"><code>5fdab73</code></a>
Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27877">#27877</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4"><code>29c8e5b</code></a>
Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27910">#27910</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f"><code>50a4d7f</code></a>
Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27906">#27906</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2"><code>ada8795</code></a>
Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27666">#27666</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0"><code>d894723</code></a>
[ty] Infer lambda parameters through callable type aliases (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28109">#28109</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06"><code>2685fde</code></a>
[ty] Narrow functional enum members in <code>==</code> and
<code>match</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28103">#28103</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec"><code>efcffd2</code></a>
[ty] Intersection simplifications with subtype-related generic
specialization...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b"><code>eb78048</code></a>
[ty] Bump ecosystem-analyzer for HTML escaping (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28104">#28104</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.16.1...0.16.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `ty` from 0.0.66 to 0.0.75
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/releases">ty's
releases</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/blob/main/CHANGELOG.md">ty's
changelog</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
<li>Preserve invariant materialization constraints (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28047">#28047</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ty/commit/a553dcc1a4c464b22d6fff8c46d444e326e0ae2d"><code>a553dcc</code></a>
Bump version to 0.0.75 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4396">#4396</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/26b1b50998e92a5f50c342dc4a1fed84db2f8ee4"><code>26b1b50</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4392">#4392</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/73d226ee4d5a9274bc559c50a244159b61dfa315"><code>73d226e</code></a>
Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/issues/4384">#4384</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5e264dac66970648d461a3fc8f2ebebd30a44dc9"><code>5e264da</code></a>
Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/issues/4382">#4382</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/00199f0aaa6a8cd264fea08eae4f3c3fe4451c17"><code>00199f0</code></a>
Bump version to 0.0.74 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4351">#4351</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5769062fa10db84f6c03145bdf42d0b8da9aeb63"><code>5769062</code></a>
Update mypy/pyright comparison table (<a
href="https://redirect.github.com/astral-sh/ty/issues/4165">#4165</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/4fcb06010f2219b80adf3e688964abd9b0d72866"><code>4fcb060</code></a>
Remove Zulip from the PGO training (<a
href="https://redirect.github.com/astral-sh/ty/issues/4336">#4336</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/a7a706442a710db4a93c1a79779dff5ec5824cf6"><code>a7a7064</code></a>
Use the versions bot's ruleset bypass when merging (<a
href="https://redirect.github.com/astral-sh/ty/issues/4333">#4333</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/01b0fab0093c64535a401bc2731f80d7f5b6a7a8"><code>01b0fab</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4325">#4325</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/deef42f517bfbacb2ffe673046bef1e206c6b8ab"><code>deef42f</code></a>
Update dependency python to 3.14 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4326">#4326</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ty/compare/0.0.66...0.0.75">compare
view</a></li>
</ul>
</details>
<br />

Updates `starlette` from 1.3.1 to 1.6.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Kludex/starlette/releases">starlette's
releases</a>.</em></p>
<blockquote>
<h2>Version 1.6.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add <code>max_body_size</code> to <code>Starlette</code> and route
classes by <a href="https://github.com/Kludex"><code>@​Kludex</code></a>
in <a
href="https://redirect.github.com/Kludex/starlette/pull/3431">Kludex/starlette#3431</a></li>
<li>Expose <code>http.response.debug</code> info via response extensions
by <a href="https://github.com/y2kbugger"><code>@​y2kbugger</code></a>
in <a
href="https://redirect.github.com/Kludex/starlette/pull/3130">Kludex/starlette#3130</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/y2kbugger"><code>@​y2kbugger</code></a>
made their first contribution in <a
href="https://redirect.github.com/Kludex/starlette/pull/3130">Kludex/starlette#3130</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/starlette/compare/1.5.1...1.6.0">https://github.com/Kludex/starlette/compare/1.5.1...1.6.0</a></p>
<h2>Version 1.5.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Reject inverted single-byte Range like <code>bytes=5-4</code> by <a
href="https://github.com/nikolauspschuetz"><code>@​nikolauspschuetz</code></a>
in <a
href="https://redirect.github.com/encode/starlette/pull/3389">encode/starlette#3389</a></li>
<li>Limit <code>FileResponse</code> to 100 ranges by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/encode/starlette/pull/3430">encode/starlette#3430</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/encode/starlette/compare/1.5.0...1.5.1">https://github.com/encode/starlette/compare/1.5.0...1.5.1</a></p>
<h2>Version 1.5.0</h2>
<p>This release is all about giving <code>GZipMiddleware</code> some
love. 🗜️</p>
<h2>What's Changed</h2>
<ul>
<li>Add <code>exclude_content_types</code> parameter to
<code>GZipMiddleware</code> by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/encode/starlette/pull/3418">encode/starlette#3418</a></li>
<li>Flush GZip output for each streamed chunk by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/encode/starlette/pull/3419">encode/starlette#3419</a></li>
<li>Skip compression of partial responses in <code>GZipMiddleware</code>
by <a href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/encode/starlette/pull/3420">encode/starlette#3420</a></li>
<li>Expand default excluded content types in <code>GZipMiddleware</code>
by <a href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/encode/starlette/pull/3421">encode/starlette#3421</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/encode/starlette/compare/1.4.1...1.5.0">https://github.com/encode/starlette/compare/1.4.1...1.5.0</a></p>
<h2>Version 1.4.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Default <code>thread_minimum_size</code> in
<code>GZipResponder</code> by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/starlette/pull/3415">Kludex/starlette#3415</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/starlette/compare/1.4.0...1.4.1">https://github.com/Kludex/starlette/compare/1.4.0...1.4.1</a></p>
<h2>Version 1.4.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Lazily allocate GZipMiddleware compression resources by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/starlette/pull/3407">Kludex/starlette#3407</a></li>
<li>Use <code>zlib.compressobj</code> instead of <code>GzipFile</code>
in <code>GZipMiddleware</code> by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/starlette/pull/3411">Kludex/starlette#3411</a></li>
<li>Offload large GZip compression by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/starlette/pull/3410">Kludex/starlette#3410</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/benberryallwood"><code>@​benberryallwood</code></a>
made their first contribution in <a
href="https://redirect.github.com/Kludex/starlette/pull/3334">Kludex/starlette#3334</a></li>
<li><a href="https://github.com/lkk7"><code>@​lkk7</code></a> made their
first contribution in <a
href="https://redirect.github.com/Kludex/starlette/pull/3359">Kludex/starlette#3359</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/starlette/compare/1.3.1...1.4.0">https://github.com/Kludex/starlette/compare/1.3.1...1.4.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Kludex/starlette/blob/main/docs/release-notes.md">starlette's
changelog</a>.</em></p>
<blockquote>
<h2>1.6.0 (August 8, 2026)</h2>
<h4>Added</h4>
<ul>
<li>Add <code>max_body_size</code> to <code>Starlette</code> and route
classes <a
href="https://redirect.github.com/encode/starlette/pull/3431">#3431</a>.</li>
<li>Expose <code>http.response.debug</code> information via response
extensions <a
href="https://redirect.github.com/encode/starlette/pull/3130">#3130</a>.</li>
</ul>
<h2>1.5.1 (August 8, 2026)</h2>
<h4>Fixed</h4>
<ul>
<li>Reject inverted single-byte ranges in <code>FileResponse</code> <a
href="https://redirect.github.com/encode/starlette/pull/3389">#3389</a>.</li>
<li>Limit <code>FileResponse</code> to 100 ranges <a
href="https://redirect.github.com/encode/starlette/pull/3430">#3430</a>.</li>
</ul>
<h2>1.5.0 (August 8, 2026)</h2>
<h4>Added</h4>
<ul>
<li>Add <code>exclude_content_types</code> parameter to
<code>GZipMiddleware</code> <a
href="https://redirect.github.com/encode/starlette/pull/3418">#3418</a>.</li>
</ul>
<h4>Changed</h4>
<ul>
<li>Expand default excluded content types in <code>GZipMiddleware</code>
<a
href="https://redirect.github.com/encode/starlette/pull/3421">#3421</a>.</li>
</ul>
<h4>Fixed</h4>
<ul>
<li>Flush GZip output for each streamed chunk <a
href="https://redirect.github.com/encode/starlette/pull/3419">#3419</a>.</li>
<li>Skip compression of partial responses in <code>GZipMiddleware</code>
<a
href="https://redirect.github.com/encode/starlette/pull/3420">#3420</a>.</li>
</ul>
<h2>1.4.1 (August 5, 2026)</h2>
<h4>Fixed</h4>
<ul>
<li>Default <code>thread_minimum_size</code> to 128 KiB in
<code>GZipResponder</code>, keeping it usable without the new keyword
argument <a
href="https://redirect.github.com/encode/starlette/pull/3415">#3415</a>.</li>
</ul>
<h2>1.4.0 (August 5, 2026)</h2>
<h4>Added</h4>
<ul>
<li>Offload large GZip compression to a worker thread, keeping the event
loop responsive. <code>GZipMiddleware</code> accepts a new
<code>thread_minimum_size</code> parameter (default 128 KiB) controlling
the minimum body chunk size compressed in a thread <a
href="https://redirect.github.com/encode/starlette/pull/3410">#3410</a>.</li>
</ul>
<h4>Changed</h4>
<ul>
<li>Use <code>zlib.compressobj</code> instead of <code>GzipFile</code>
in <code>GZipMiddleware</code>, reducing memory usage during compression
<a
href="https://redirect.github.com/encode/starlette/pull/3411">#3411</a>.</li>
<li>Lazily allocate <code>GZipMiddleware</code> compression resources,
avoiding compressor allocation for responses that are never compressed
<a
href="https://redirect.github.com/encode/starlette/pull/3407">#3407</a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Kludex/starlette/commit/4f250d6b814587e20c5365f0a5f0c4d42bcb929f"><code>4f250d6</code></a>
Version 1.6.0 (<a
href="https://redirect.github.com/Kludex/starlette/issues/3434">#3434</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/9eea41ad3c26ad21b9bdfe4578c1cdad6c9b9ac2"><code>9eea41a</code></a>
Expose <code>http.response.debug</code> info via response extensions (<a
href="https://redirect.github.com/Kludex/starlette/issues/3130">#3130</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/38f8999a229610b36f39d11f67d80515a15c6330"><code>38f8999</code></a>
Add <code>max_body_size</code> to <code>Starlette</code> and route
classes (<a
href="https://redirect.github.com/Kludex/starlette/issues/3431">#3431</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/c41236c03868fb3779a64101f4ea88cd47877e23"><code>c41236c</code></a>
Version 1.5.1 (<a
href="https://redirect.github.com/Kludex/starlette/issues/3432">#3432</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/9c500db197859dba4a8db13fa8e7d2c55de8152c"><code>9c500db</code></a>
Limit <code>FileResponse</code> to 100 ranges (<a
href="https://redirect.github.com/Kludex/starlette/issues/3430">#3430</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/78ae82cad482fe66a73fb1217f0a6609b3f998f6"><code>78ae82c</code></a>
Reject inverted single-byte Range like bytes=5-4 (<a
href="https://redirect.github.com/Kludex/starlette/issues/3389">#3389</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/c1d6edaf43920104d4389e983c3e0314f6af14cf"><code>c1d6eda</code></a>
chore(deps): bump pymdown-extensions from 11.0 to 11.0.1 (<a
href="https://redirect.github.com/Kludex/starlette/issues/3429">#3429</a>)</li>
<li><a
href="https://github.com/Kludex/starlette/commit/ee66ca48418780d6415d231851b31464febc32de"><code>ee66ca4</code></a>
chore(deps): bump the python-packages group across 1 directory with 8
updates...</li>
<li><a
href="https://github.com/Kludex/starlette/commit/00d10167523f819d39d5ca36732348d58645a447"><code>00d1016</code></a>
fix(tests): skip test_staticfiles_filename_too_long on Windows where
os.pathc...</li>
<li><a
href="https://github.com/Kludex/starlette/commit/d96887ea7b49db3d1d15994be6438c7fe99936f4"><code>d96887e</code></a>
Add Pydantic Logfire banner to the docs (<a
href="https://redirect.github.com/Kludex/starlette/issues/3428">#3428</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/Kludex/starlette/compare/1.3.1...1.6.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `pydantic` from 2.13.4 to 2.13.5
<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.13.5 (2026-08-28)</h2>
<h3>What's Changed</h3>
<h4>Fixes</h4>
<ul>
<li>Allow reuse of validators when plugins are set by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13535">#13535</a></li>
<li>Fix missing GC traversal on some <code>pydantic-core</code> struct
fields by <a href="https://github.com/Viicos"><code>@​Viicos</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13624">#13624</a></li>
<li>Fix missing GC traversal in <code>pydantic-core</code> for
<code>GeneralFieldsSerializer</code> by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13629">#13629</a></li>
<li>Count validated model fields once in smart unions by <a
href="https://github.com/tamird"><code>@​tamird</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13731">#13731</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pydantic/pydantic/blob/v2.13.5/HISTORY.md">pydantic's
changelog</a>.</em></p>
<blockquote>
<h2>v2.13.5 (2026-08-28)</h2>
<p><a
href="https://github.com/pydantic/pydantic/releases/tag/v2.13.5">GitHub
release</a></p>
<h3>What's Changed</h3>
<h4>Fixes</h4>
<ul>
<li>Allow reuse of validators when plugins are set by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13535">#13535</a></li>
<li>Fix missing GC traversal on some <code>pydantic-core</code> struct
fields by <a href="https://github.com/Viicos"><code>@​Viicos</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13624">#13624</a></li>
<li>Fix missing GC traversal in <code>pydantic-core</code> for
<code>GeneralFieldsSerializer</code> by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13629">#13629</a></li>
<li>Count validated model fields once in smart unions by <a
href="https://github.com/tamird"><code>@​tamird</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13731">#13731</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pydantic/pydantic/commit/001dea020e0809844e5b17666432c9135a976f46"><code>001dea0</code></a>
Bump <code>pypa/gh-action-pypi-publish</code> action to v1.14.2</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843"><code>558379f</code></a>
Bump twine to v7.0.0</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01"><code>2cfd5d3</code></a>
Do not check for docs build</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/a735bee5c64e1fe50785c376adaf1275e752b8ac"><code>a735bee</code></a>
Fix more Clippy lints</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/7eed4a16b87afaced4d0eafae230453de3410d64"><code>7eed4a1</code></a>
Fix Clippy 0.1.95 warnings</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/b353bbb20a4989b4c033e2be2b4a40d36178b16a"><code>b353bbb</code></a>
Prepare release v2.13.5</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/63d2cccd6e760da6bbc7fe81a53cb2bde3768f5e"><code>63d2ccc</code></a>
Count validated model fields once in smart unions</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/a53ec2ed342fda4e6aa3684399d04ea57be9a6e4"><code>a53ec2e</code></a>
Speed up PyPy CI tests</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/d65e0f96e890ca82f4b66a15d5b3bd65af2c661c"><code>d65e0f9</code></a>
Workaround circular import error in Mypy</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/47a6dbf8ad6216211bd0df6ec5c2c6c6ed905b72"><code>47a6dbf</code></a>
Fix missing GC traversal in <code>pydantic-core</code> for
<code>GeneralFieldsSerializer</code></li>
<li>Additional commits viewable in <a
href="https://github.com/pydantic/pydantic/compare/v2.13.4...v2.13.5">compare
view</a></li>
</ul>
</details>
<br />

Made by [Open
SWE](https://openswe.vercel.app/agents/0758e158-6746-5095-b8a0-7f69acf36b73)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: John Kennedy <65985482+jkennedyvz@users.noreply.github.com>
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-09-02 09:52:39 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>John Kennedyopen-swe[bot] <open-swe@users.noreply.github.com>
7bfee11ad5 chore(deps): bump the minor-and-patch group across 1 directory with 4 updates (#8782)
Bumps the minor-and-patch group with 4 updates in the /libs/langgraph
directory: [langchain-core](https://github.com/langchain-ai/langchain),
[pydantic](https://github.com/pydantic/pydantic),
[ruff](https://github.com/astral-sh/ruff) and
[ty](https://github.com/astral-sh/ty).

Updates `langchain-core` from 1.5.3 to 1.6.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langchain/releases">langchain-core's
releases</a>.</em></p>
<blockquote>
<h2>langchain-core==1.6.1</h2>
<p>Changes since langchain-core==1.6.0</p>
<p>revert: release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39971">#39971</a>)
release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39967">#39967</a>)
fix(core): shore up indexing in genai v1 streaming content (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39964">#39964</a>)
fix(core): make <code>StructuredTool</code> JSON-serializable (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39631">#39631</a>)
chore(deps): bump minor and patch dependencies (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39869">#39869</a>)
release(core): 1.6.1 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39832">#39832</a>)
feat(core): propagate gateway information on error path (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39829">#39829</a>)</p>
<h2>langchain-core==1.6.0</h2>
<p>Changes since langchain-core==1.5.6</p>
<p>release(core): 1.6.0 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39760">#39760</a>)
fix(core): resolve postponed annotations in
<code>StructuredTool._injected_args_keys</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39602">#39602</a>)
feat(core): add standard model exception types (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39538">#39538</a>)
fix(core): allow deserializing <code>RunnablePick</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39753">#39753</a>)
fix(core): make <code>convert_to_openai_function</code> handle callables
and non-dict mappings (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39750">#39750</a>)
fix(core): make subprocess and temporary file tests portable on Windows
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39664">#39664</a>)
fix(core): fail fast when tool schemas can't resolve forward refs during
serialization (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39570">#39570</a>)
test(core): avoid version-dependent runnable snapshots (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39705">#39705</a>)
fix(core): require all nested properties for strict tool schemas (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39306">#39306</a>)
fix(core): remove stale sync-stream <code>xfail</code> [closes <a
href="https://redirect.github.com/langchain-ai/langchain/issues/39720">#39720</a>]
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39723">#39723</a>)
perf(core): Lazily import transformers (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38037">#38037</a>)
fix(core): accept non-dict Mapping values in mustache templates (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39680">#39680</a>)
docs(core): clarify <code>Runnable</code> pipe coercion [closes <a
href="https://redirect.github.com/langchain-ai/langchain/issues/39075">#39075</a>]
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39707">#39707</a>)
fix(core): finalize chain-group runs on <code>BaseException</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39699">#39699</a>)</p>
<h2>langchain-core==1.5.6</h2>
<p>Changes since langchain-core==1.5.5</p>
<p>chore(core): release 1.5.6 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39704">#39704</a>)
feat(core): incorporate gateway metadata to traces (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39703">#39703</a>)</p>
<h2>langchain-core==1.5.5</h2>
<p>Changes since langchain-core==1.5.4</p>
<p>release(core): 1.5.5 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39655">#39655</a>)
fix(core): make abatch_iterate consistent with batch_iterate for None
and zero size (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39367">#39367</a>)
fix(core): respect pydantic aliases when validating tool inputs (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39572">#39572</a>)
fix(core): issues in merging chunks (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39535">#39535</a>)
fix(core): handle v1 base model validation in async path (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39576">#39576</a>)
fix(core): handle tool descriptions for infer_schema=False (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39573">#39573</a>)
fix(core): clear usage metadata callback on exceptions in context
manager (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39616">#39616</a>)
fix(core): handle falsy LLM and chat model caches (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39283">#39283</a>)
chore(core): add httpx as an explicit dep (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39612">#39612</a>)
fix(core): preserve non-str/non-dict items in
<code>DictPromptTemplate</code> list values (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39588">#39588</a>)
fix(core): raise ValueError when explicit tool_outputs length mismatches
tool_calls in tool_example_to_messages (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39142">#39142</a>)
fix(core): guard malformed Anthropic content blocks (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38670">#38670</a>)</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langchain/commit/4fe9d3062f4b68e2e472eb92decf369c93aebb46"><code>4fe9d30</code></a>
chore(openai): fix tests (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39972">#39972</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/8fa38dc143faecec0287395bce4484af4b82254c"><code>8fa38dc</code></a>
revert: release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39971">#39971</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/122030d79e944a5b55c33847d29bcfbe64488372"><code>122030d</code></a>
release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39967">#39967</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/7d4b42b57235020e6f496fdfebab44c3ca1b1f5b"><code>7d4b42b</code></a>
release(langchain): 1.3.18 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39966">#39966</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/4a66e355da07b8fad7d6cb8db99287fb4d7e6d83"><code>4a66e35</code></a>
fix(langchain): preserve content-block shape in PIIMiddleware redaction
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39894">#39894</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/38e211359f0b65b480d9ee4c53f2385f8c249bb3"><code>38e2113</code></a>
fix(core): shore up indexing in genai v1 streaming content (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39964">#39964</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/13b1b2feae476fdcebc0a285a723d5cbfed9df2e"><code>13b1b2f</code></a>
fix(core): make <code>StructuredTool</code> JSON-serializable (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39631">#39631</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/3b3b308e6d956c9a670e41e66a468466fe6f8c26"><code>3b3b308</code></a>
release(anthropic): 1.7.0 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39963">#39963</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/e3f6adfe1976a773704a20fef7bb03ac0309e0e4"><code>e3f6adf</code></a>
feat(anthropic): support top-level param for skills via
<code>container</code>; `updates...</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/c253f54b905f9648c50b723f01945f39a256d8aa"><code>c253f54</code></a>
fix(openai): correct <code>reasoning_effort_levels</code> for gpt-5 and
gpt-5.1 profiles...</li>
<li>Additional commits viewable in <a
href="https://github.com/langchain-ai/langchain/compare/langchain-core==1.5.3...langchain-core==1.6.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `pydantic` from 2.13.4 to 2.13.5
<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.13.5 (2026-08-28)</h2>
<h3>What's Changed</h3>
<h4>Fixes</h4>
<ul>
<li>Allow reuse of validators when plugins are set by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13535">#13535</a></li>
<li>Fix missing GC traversal on some <code>pydantic-core</code> struct
fields by <a href="https://github.com/Viicos"><code>@​Viicos</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13624">#13624</a></li>
<li>Fix missing GC traversal in <code>pydantic-core</code> for
<code>GeneralFieldsSerializer</code> by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13629">#13629</a></li>
<li>Count validated model fields once in smart unions by <a
href="https://github.com/tamird"><code>@​tamird</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13731">#13731</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pydantic/pydantic/blob/v2.13.5/HISTORY.md">pydantic's
changelog</a>.</em></p>
<blockquote>
<h2>v2.13.5 (2026-08-28)</h2>
<p><a
href="https://github.com/pydantic/pydantic/releases/tag/v2.13.5">GitHub
release</a></p>
<h3>What's Changed</h3>
<h4>Fixes</h4>
<ul>
<li>Allow reuse of validators when plugins are set by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13535">#13535</a></li>
<li>Fix missing GC traversal on some <code>pydantic-core</code> struct
fields by <a href="https://github.com/Viicos"><code>@​Viicos</code></a>
in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13624">#13624</a></li>
<li>Fix missing GC traversal in <code>pydantic-core</code> for
<code>GeneralFieldsSerializer</code> by <a
href="https://github.com/Viicos"><code>@​Viicos</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13629">#13629</a></li>
<li>Count validated model fields once in smart unions by <a
href="https://github.com/tamird"><code>@​tamird</code></a> in <a
href="https://redirect.github.com/pydantic/pydantic/pull/13731">#13731</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pydantic/pydantic/commit/001dea020e0809844e5b17666432c9135a976f46"><code>001dea0</code></a>
Bump <code>pypa/gh-action-pypi-publish</code> action to v1.14.2</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843"><code>558379f</code></a>
Bump twine to v7.0.0</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01"><code>2cfd5d3</code></a>
Do not check for docs build</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/a735bee5c64e1fe50785c376adaf1275e752b8ac"><code>a735bee</code></a>
Fix more Clippy lints</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/7eed4a16b87afaced4d0eafae230453de3410d64"><code>7eed4a1</code></a>
Fix Clippy 0.1.95 warnings</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/b353bbb20a4989b4c033e2be2b4a40d36178b16a"><code>b353bbb</code></a>
Prepare release v2.13.5</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/63d2cccd6e760da6bbc7fe81a53cb2bde3768f5e"><code>63d2ccc</code></a>
Count validated model fields once in smart unions</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/a53ec2ed342fda4e6aa3684399d04ea57be9a6e4"><code>a53ec2e</code></a>
Speed up PyPy CI tests</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/d65e0f96e890ca82f4b66a15d5b3bd65af2c661c"><code>d65e0f9</code></a>
Workaround circular import error in Mypy</li>
<li><a
href="https://github.com/pydantic/pydantic/commit/47a6dbf8ad6216211bd0df6ec5c2c6c6ed905b72"><code>47a6dbf</code></a>
Fix missing GC traversal in <code>pydantic-core</code> for
<code>GeneralFieldsSerializer</code></li>
<li>Additional commits viewable in <a
href="https://github.com/pydantic/pydantic/compare/v2.13.4...v2.13.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.16.1 to 0.16.5
<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.16.5</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>Install ruff 0.16.5</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.16.5/ruff-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c &quot;irm
https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1
| iex&quot;
</code></pre>
<h2>Download ruff 0.16.5</h2>
<!-- 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.16.5</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>0.16.4</h2>
<p>Released on 2026-08-20.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>flake8-use-pathlib</code>] Add autofix for
<code>PTH116</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26460">#26460</a>)</li>
<li>[<code>refurb</code>] Restrict <code>delete-full-slice</code> to
lists (<code>FURB131</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27711">#27711</a>)</li>
<li>[<code>refurb</code>] Skip <code>FURB101</code> and
<code>FURB103</code> when the <code>open</code> argument is a file
descriptor (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27643">#27643</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix <code>InvalidInstruction</code> on Windows CPUs that do not
support <code>POPCNT</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27803">#27803</a>)</li>
<li>[<code>pyflakes</code>] Emit semantic syntax errors in string type
definitions as <code>F722</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27835">#27835</a>)</li>
<li>[<code>pylint</code>] Allow <code>os._exit</code> imports in
<code>import-private-name</code> (<code>PLC2701</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27738">#27738</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a"><code>9e4938c</code></a>
Bump 0.16.5 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28110">#28110</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd"><code>aad0e90</code></a>
Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28049">#28049</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4"><code>5fdab73</code></a>
Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27877">#27877</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4"><code>29c8e5b</code></a>
Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27910">#27910</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f"><code>50a4d7f</code></a>
Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27906">#27906</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2"><code>ada8795</code></a>
Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27666">#27666</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0"><code>d894723</code></a>
[ty] Infer lambda parameters through callable type aliases (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28109">#28109</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06"><code>2685fde</code></a>
[ty] Narrow functional enum members in <code>==</code> and
<code>match</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28103">#28103</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec"><code>efcffd2</code></a>
[ty] Intersection simplifications with subtype-related generic
specialization...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b"><code>eb78048</code></a>
[ty] Bump ecosystem-analyzer for HTML escaping (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28104">#28104</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.16.1...0.16.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `ty` from 0.0.66 to 0.0.75
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/releases">ty's
releases</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/blob/main/CHANGELOG.md">ty's
changelog</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
<li>Preserve invariant materialization constraints (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28047">#28047</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ty/commit/a553dcc1a4c464b22d6fff8c46d444e326e0ae2d"><code>a553dcc</code></a>
Bump version to 0.0.75 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4396">#4396</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/26b1b50998e92a5f50c342dc4a1fed84db2f8ee4"><code>26b1b50</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4392">#4392</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/73d226ee4d5a9274bc559c50a244159b61dfa315"><code>73d226e</code></a>
Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/issues/4384">#4384</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5e264dac66970648d461a3fc8f2ebebd30a44dc9"><code>5e264da</code></a>
Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/issues/4382">#4382</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/00199f0aaa6a8cd264fea08eae4f3c3fe4451c17"><code>00199f0</code></a>
Bump version to 0.0.74 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4351">#4351</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5769062fa10db84f6c03145bdf42d0b8da9aeb63"><code>5769062</code></a>
Update mypy/pyright comparison table (<a
href="https://redirect.github.com/astral-sh/ty/issues/4165">#4165</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/4fcb06010f2219b80adf3e688964abd9b0d72866"><code>4fcb060</code></a>
Remove Zulip from the PGO training (<a
href="https://redirect.github.com/astral-sh/ty/issues/4336">#4336</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/a7a706442a710db4a93c1a79779dff5ec5824cf6"><code>a7a7064</code></a>
Use the versions bot's ruleset bypass when merging (<a
href="https://redirect.github.com/astral-sh/ty/issues/4333">#4333</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/01b0fab0093c64535a401bc2731f80d7f5b6a7a8"><code>01b0fab</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4325">#4325</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/deef42f517bfbacb2ffe673046bef1e206c6b8ab"><code>deef42f</code></a>
Update dependency python to 3.14 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4326">#4326</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ty/compare/0.0.66...0.0.75">compare
view</a></li>
</ul>
</details>
<br />

Made by [Open
SWE](https://openswe.vercel.app/agents/0758e158-6746-5095-b8a0-7f69acf36b73)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: John Kennedy <65985482+jkennedyvz@users.noreply.github.com>
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-09-02 09:46:26 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>John Kennedyopen-swe[bot] <open-swe@users.noreply.github.com>
eae02c622d chore(deps): bump the minor-and-patch group in /libs/checkpoint with 4 updates (#8777)
Bumps the minor-and-patch group in /libs/checkpoint with 4 updates:
[langchain-core](https://github.com/langchain-ai/langchain),
[redis](https://github.com/redis/redis-py),
[ruff](https://github.com/astral-sh/ruff) and
[ty](https://github.com/astral-sh/ty).

Updates `langchain-core` from 1.5.2 to 1.6.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langchain/releases">langchain-core's
releases</a>.</em></p>
<blockquote>
<h2>langchain-core==1.6.1</h2>
<p>Changes since langchain-core==1.6.0</p>
<p>revert: release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39971">#39971</a>)
release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39967">#39967</a>)
fix(core): shore up indexing in genai v1 streaming content (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39964">#39964</a>)
fix(core): make <code>StructuredTool</code> JSON-serializable (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39631">#39631</a>)
chore(deps): bump minor and patch dependencies (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39869">#39869</a>)
release(core): 1.6.1 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39832">#39832</a>)
feat(core): propagate gateway information on error path (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39829">#39829</a>)</p>
<h2>langchain-core==1.6.0</h2>
<p>Changes since langchain-core==1.5.6</p>
<p>release(core): 1.6.0 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39760">#39760</a>)
fix(core): resolve postponed annotations in
<code>StructuredTool._injected_args_keys</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39602">#39602</a>)
feat(core): add standard model exception types (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39538">#39538</a>)
fix(core): allow deserializing <code>RunnablePick</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39753">#39753</a>)
fix(core): make <code>convert_to_openai_function</code> handle callables
and non-dict mappings (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39750">#39750</a>)
fix(core): make subprocess and temporary file tests portable on Windows
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39664">#39664</a>)
fix(core): fail fast when tool schemas can't resolve forward refs during
serialization (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39570">#39570</a>)
test(core): avoid version-dependent runnable snapshots (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39705">#39705</a>)
fix(core): require all nested properties for strict tool schemas (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39306">#39306</a>)
fix(core): remove stale sync-stream <code>xfail</code> [closes <a
href="https://redirect.github.com/langchain-ai/langchain/issues/39720">#39720</a>]
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39723">#39723</a>)
perf(core): Lazily import transformers (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38037">#38037</a>)
fix(core): accept non-dict Mapping values in mustache templates (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39680">#39680</a>)
docs(core): clarify <code>Runnable</code> pipe coercion [closes <a
href="https://redirect.github.com/langchain-ai/langchain/issues/39075">#39075</a>]
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39707">#39707</a>)
fix(core): finalize chain-group runs on <code>BaseException</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39699">#39699</a>)</p>
<h2>langchain-core==1.5.6</h2>
<p>Changes since langchain-core==1.5.5</p>
<p>chore(core): release 1.5.6 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39704">#39704</a>)
feat(core): incorporate gateway metadata to traces (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39703">#39703</a>)</p>
<h2>langchain-core==1.5.5</h2>
<p>Changes since langchain-core==1.5.4</p>
<p>release(core): 1.5.5 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39655">#39655</a>)
fix(core): make abatch_iterate consistent with batch_iterate for None
and zero size (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39367">#39367</a>)
fix(core): respect pydantic aliases when validating tool inputs (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39572">#39572</a>)
fix(core): issues in merging chunks (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39535">#39535</a>)
fix(core): handle v1 base model validation in async path (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39576">#39576</a>)
fix(core): handle tool descriptions for infer_schema=False (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39573">#39573</a>)
fix(core): clear usage metadata callback on exceptions in context
manager (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39616">#39616</a>)
fix(core): handle falsy LLM and chat model caches (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39283">#39283</a>)
chore(core): add httpx as an explicit dep (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39612">#39612</a>)
fix(core): preserve non-str/non-dict items in
<code>DictPromptTemplate</code> list values (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39588">#39588</a>)
fix(core): raise ValueError when explicit tool_outputs length mismatches
tool_calls in tool_example_to_messages (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39142">#39142</a>)
fix(core): guard malformed Anthropic content blocks (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38670">#38670</a>)</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langchain/commit/4fe9d3062f4b68e2e472eb92decf369c93aebb46"><code>4fe9d30</code></a>
chore(openai): fix tests (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39972">#39972</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/8fa38dc143faecec0287395bce4484af4b82254c"><code>8fa38dc</code></a>
revert: release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39971">#39971</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/122030d79e944a5b55c33847d29bcfbe64488372"><code>122030d</code></a>
release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39967">#39967</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/7d4b42b57235020e6f496fdfebab44c3ca1b1f5b"><code>7d4b42b</code></a>
release(langchain): 1.3.18 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39966">#39966</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/4a66e355da07b8fad7d6cb8db99287fb4d7e6d83"><code>4a66e35</code></a>
fix(langchain): preserve content-block shape in PIIMiddleware redaction
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39894">#39894</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/38e211359f0b65b480d9ee4c53f2385f8c249bb3"><code>38e2113</code></a>
fix(core): shore up indexing in genai v1 streaming content (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39964">#39964</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/13b1b2feae476fdcebc0a285a723d5cbfed9df2e"><code>13b1b2f</code></a>
fix(core): make <code>StructuredTool</code> JSON-serializable (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39631">#39631</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/3b3b308e6d956c9a670e41e66a468466fe6f8c26"><code>3b3b308</code></a>
release(anthropic): 1.7.0 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39963">#39963</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/e3f6adfe1976a773704a20fef7bb03ac0309e0e4"><code>e3f6adf</code></a>
feat(anthropic): support top-level param for skills via
<code>container</code>; `updates...</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/c253f54b905f9648c50b723f01945f39a256d8aa"><code>c253f54</code></a>
fix(openai): correct <code>reasoning_effort_levels</code> for gpt-5 and
gpt-5.1 profiles...</li>
<li>Additional commits viewable in <a
href="https://github.com/langchain-ai/langchain/compare/langchain-core==1.5.2...langchain-core==1.6.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `redis` from 8.0.1 to 8.1.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/redis/redis-py/releases">redis's
releases</a>.</em></p>
<blockquote>
<h2>8.1.0</h2>
<h1>Changes</h1>
<h2> Highlights</h2>
<h3>Async maintenance notifications</h3>
<p>redis-py now supports server-pushed <strong>maintenance
notifications</strong> in the asyncio stack for both
standalone and cluster clients, bringing the async client to parity with
the sync implementation.
When a Redis deployment signals maintenance events (such as node
migration or failover windows), the
async client reacts through the maintenance-notifications handler
(<code>redis/maint_notifications.py</code> and
its async integration under <code>redis/asyncio/</code>), allowing
applications to adapt connection handling
during maintenance without downtime. (<a
href="https://redirect.github.com/redis/redis-py/issues/4177">#4177</a>)</p>
<h3>Expanded command coverage</h3>
<p>This release adds a batch of new command surfaces across core data
types and modules:</p>
<ul>
<li><strong>Lists</strong> — <code>LMOVEM</code> / <code>BLMOVEM</code>
for moving multiple elements between lists (<a
href="https://redirect.github.com/redis/redis-py/issues/4174">#4174</a>).</li>
<li><strong>Sets</strong> — <code>SDIFFCARD</code> and
<code>SUNIONCARD</code> cardinality commands (<a
href="https://redirect.github.com/redis/redis-py/issues/4171">#4171</a>).</li>
<li><strong>Streams</strong> — <code>MAXCOUNT</code> /
<code>MAXSIZE</code> options for <code>XREAD</code> and
<code>XREADGROUP</code> (<a
href="https://redirect.github.com/redis/redis-py/issues/4173">#4173</a>).</li>
<li><strong>Time Series</strong> — <code>TS.READ</code> (<a
href="https://redirect.github.com/redis/redis-py/issues/4170">#4170</a>),
<code>TS.QUERYLABELS</code> (<a
href="https://redirect.github.com/redis/redis-py/issues/4197">#4197</a>),
<code>TS.NRANGE</code> / <code>TS.NREVRANGE</code> (<a
href="https://redirect.github.com/redis/redis-py/issues/4163">#4163</a>),
and an <code>exclude_empty</code> (<code>EXCLUDEEMPTY</code>) option for
<code>TS.MRANGE</code> / <code>TS.MREVRANGE</code> (<a
href="https://redirect.github.com/redis/redis-py/issues/4188">#4188</a>).</li>
<li><strong>Search</strong> — <code>FT.ALIASLIST</code> (<a
href="https://redirect.github.com/redis/redis-py/issues/4198">#4198</a>)
and a <code>COLLECT</code> reducer for aggregations (<a
href="https://redirect.github.com/redis/redis-py/issues/4179">#4179</a>).</li>
<li><strong>Sentinel</strong> — replica sentinel aliases (<a
href="https://redirect.github.com/redis/redis-py/issues/4127">#4127</a>).</li>
</ul>
<h2>🚀 New Features</h2>
<ul>
<li>Add replica sentinel aliases (<a
href="https://redirect.github.com/redis/redis-py/issues/4127">#4127</a>)</li>
<li>Add TS.NRANGE and TS.NREVRANGE support to the timeseries command
surface (<a
href="https://redirect.github.com/redis/redis-py/issues/4163">#4163</a>)</li>
<li>feat: add TS.READ command support to the timeseries module (<a
href="https://redirect.github.com/redis/redis-py/issues/4170">#4170</a>)</li>
<li>feat: add SDIFFCARD and SUNIONCARD command support (<a
href="https://redirect.github.com/redis/redis-py/issues/4171">#4171</a>)</li>
<li>feat: add MAXCOUNT/MAXSIZE support to XREAD and XREADGROUP (<a
href="https://redirect.github.com/redis/redis-py/issues/4173">#4173</a>)</li>
<li>feat: add LMOVEM and BLMOVEM commands for moving multiple list
elements (<a
href="https://redirect.github.com/redis/redis-py/issues/4174">#4174</a>)</li>
<li>feat: add async maintenance-notifications support for standalone and
cluster clients (<a
href="https://redirect.github.com/redis/redis-py/issues/4177">#4177</a>)</li>
<li>feat: add COLLECT reducer support to search aggregations (<a
href="https://redirect.github.com/redis/redis-py/issues/4179">#4179</a>)</li>
<li>feat: add exclude_empty (EXCLUDEEMPTY) option to TS.MRANGE and
TS.MREVRANGE (<a
href="https://redirect.github.com/redis/redis-py/issues/4188">#4188</a>)</li>
<li>feat: add TS.QUERYLABELS support to the timeseries command surface
(<a
href="https://redirect.github.com/redis/redis-py/issues/4197">#4197</a>)</li>
<li>feat: add FT.ALIASLIST support (<a
href="https://redirect.github.com/redis/redis-py/issues/4198">#4198</a>)</li>
</ul>
<h2>⚠️ Experimental</h2>
<ul>
<li>feat: add client-side HIMPORT fieldset support for standalone and
cluster clients (<a
href="https://redirect.github.com/redis/redis-py/issues/4205">#4205</a>)</li>
</ul>
<p>The feature considered unstable and <strong>public API might be
changed in the future minor version</strong></p>
<h2>🐛 Bug Fixes</h2>
<ul>
<li>fix: detect closed pooled connection without consuming pending push
data (RESP3 + hiredis) (<a
href="https://redirect.github.com/redis/redis-py/issues/4156">#4156</a>)</li>
<li>Fix Sentinel pool capacity loss after failover (<a
href="https://redirect.github.com/redis/redis-py/issues/4193">#4193</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/redis/redis-py/commit/e013126df18e476fbb8b8215f040f39bd3242683"><code>e013126</code></a>
Testing with 8.10 GA (<a
href="https://redirect.github.com/redis/redis-py/issues/4227">#4227</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/059d1e97d88dd7ed516628e0a9765ab8e0e299f1"><code>059d1e9</code></a>
Fixed TS.NRANGE commands to correctly apply aggregators (<a
href="https://redirect.github.com/redis/redis-py/issues/4225">#4225</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/d486a0a982dcdf316006474dc286ca65cbec5a9f"><code>d486a0a</code></a>
Fix FIELDNAME alias dropping first character of un-prefixed fields (<a
href="https://redirect.github.com/redis/redis-py/issues/4224">#4224</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/fb931042420baaa5fbb9021955e444f7afa66dc2"><code>fb93104</code></a>
feat: add client-side HIMPORT fieldset support for standalone and
cluster cli...</li>
<li><a
href="https://github.com/redis/redis-py/commit/9197609f48eb9713411a50534ca48210486a4bf9"><code>9197609</code></a>
Fix lat/lon swap in search querystring geo() helper (<a
href="https://redirect.github.com/redis/redis-py/issues/4223">#4223</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/14714a0812d3ff03ad34c89ce6f79e287a04e9fb"><code>14714a0</code></a>
fix: Fixed double decoding issue with unquote() (<a
href="https://redirect.github.com/redis/redis-py/issues/4222">#4222</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/227280a939718d09ff9d7c41f9785ffdc21bdc2a"><code>227280a</code></a>
Update lib version to 8.1.0</li>
<li><a
href="https://github.com/redis/redis-py/commit/88d16d0db10c852d1d292628b2c832f1ed117056"><code>88d16d0</code></a>
Decode ACL LOG string values on the default RESP3 legacy callback (<a
href="https://redirect.github.com/redis/redis-py/issues/4201">#4201</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/599fd75ca7d0745928280ff3a64ccd224dbf2b76"><code>599fd75</code></a>
feat: add FT.ALIASLIST support (<a
href="https://redirect.github.com/redis/redis-py/issues/4198">#4198</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/71e275e6eae94d202b49bccce10ef0d2a59050e7"><code>71e275e</code></a>
test: add VectorField RERANK serialization tests for sync and async
search (#...</li>
<li>Additional commits viewable in <a
href="https://github.com/redis/redis-py/compare/v8.0.1...v8.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.16.0 to 0.16.5
<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.16.5</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>Install ruff 0.16.5</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.16.5/ruff-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c &quot;irm
https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1
| iex&quot;
</code></pre>
<h2>Download ruff 0.16.5</h2>
<!-- 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.16.5</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>0.16.4</h2>
<p>Released on 2026-08-20.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>flake8-use-pathlib</code>] Add autofix for
<code>PTH116</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26460">#26460</a>)</li>
<li>[<code>refurb</code>] Restrict <code>delete-full-slice</code> to
lists (<code>FURB131</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27711">#27711</a>)</li>
<li>[<code>refurb</code>] Skip <code>FURB101</code> and
<code>FURB103</code> when the <code>open</code> argument is a file
descriptor (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27643">#27643</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix <code>InvalidInstruction</code> on Windows CPUs that do not
support <code>POPCNT</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27803">#27803</a>)</li>
<li>[<code>pyflakes</code>] Emit semantic syntax errors in string type
definitions as <code>F722</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27835">#27835</a>)</li>
<li>[<code>pylint</code>] Allow <code>os._exit</code> imports in
<code>import-private-name</code> (<code>PLC2701</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27738">#27738</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a"><code>9e4938c</code></a>
Bump 0.16.5 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28110">#28110</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd"><code>aad0e90</code></a>
Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28049">#28049</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4"><code>5fdab73</code></a>
Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27877">#27877</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4"><code>29c8e5b</code></a>
Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27910">#27910</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f"><code>50a4d7f</code></a>
Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27906">#27906</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2"><code>ada8795</code></a>
Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27666">#27666</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0"><code>d894723</code></a>
[ty] Infer lambda parameters through callable type aliases (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28109">#28109</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06"><code>2685fde</code></a>
[ty] Narrow functional enum members in <code>==</code> and
<code>match</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28103">#28103</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec"><code>efcffd2</code></a>
[ty] Intersection simplifications with subtype-related generic
specialization...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b"><code>eb78048</code></a>
[ty] Bump ecosystem-analyzer for HTML escaping (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28104">#28104</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.16.0...0.16.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `ty` from 0.0.64 to 0.0.75
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/releases">ty's
releases</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/blob/main/CHANGELOG.md">ty's
changelog</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
<li>Preserve invariant materialization constraints (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28047">#28047</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ty/commit/a553dcc1a4c464b22d6fff8c46d444e326e0ae2d"><code>a553dcc</code></a>
Bump version to 0.0.75 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4396">#4396</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/26b1b50998e92a5f50c342dc4a1fed84db2f8ee4"><code>26b1b50</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4392">#4392</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/73d226ee4d5a9274bc559c50a244159b61dfa315"><code>73d226e</code></a>
Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/issues/4384">#4384</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5e264dac66970648d461a3fc8f2ebebd30a44dc9"><code>5e264da</code></a>
Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/issues/4382">#4382</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/00199f0aaa6a8cd264fea08eae4f3c3fe4451c17"><code>00199f0</code></a>
Bump version to 0.0.74 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4351">#4351</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5769062fa10db84f6c03145bdf42d0b8da9aeb63"><code>5769062</code></a>
Update mypy/pyright comparison table (<a
href="https://redirect.github.com/astral-sh/ty/issues/4165">#4165</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/4fcb06010f2219b80adf3e688964abd9b0d72866"><code>4fcb060</code></a>
Remove Zulip from the PGO training (<a
href="https://redirect.github.com/astral-sh/ty/issues/4336">#4336</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/a7a706442a710db4a93c1a79779dff5ec5824cf6"><code>a7a7064</code></a>
Use the versions bot's ruleset bypass when merging (<a
href="https://redirect.github.com/astral-sh/ty/issues/4333">#4333</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/01b0fab0093c64535a401bc2731f80d7f5b6a7a8"><code>01b0fab</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4325">#4325</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/deef42f517bfbacb2ffe673046bef1e206c6b8ab"><code>deef42f</code></a>
Update dependency python to 3.14 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4326">#4326</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ty/compare/0.0.64...0.0.75">compare
view</a></li>
</ul>
</details>
<br />


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

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

---

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

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


</details>

Made by [Open
SWE](https://openswe.vercel.app/agents/0758e158-6746-5095-b8a0-7f69acf36b73)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: John Kennedy <65985482+jkennedyvz@users.noreply.github.com>
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-09-02 09:45:10 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>John Kennedyopen-swe[bot] <open-swe@users.noreply.github.com>
bbd6e2da0b chore(deps-dev): bump syrupy from 5.5.3 to 6.0.0 in /libs/prebuilt in the major group (#8780)
Bumps the major group in /libs/prebuilt with 1 update:
[syrupy](https://github.com/syrupy-project/syrupy).

Updates `syrupy` from 5.5.3 to 6.0.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/syrupy-project/syrupy/releases">syrupy's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h1>Syrupy 6.0.0</h1>
<p><em>(2026-08-22)</em></p>
<p>Syrupy 6 focuses on better built-in serialization, clearer snapshot
workflows, and large-suite performance. Please review the
<strong>breaking changes</strong> before upgrading.</p>
<p>Most suites should not need significant snapshot updates on upgrade —
the main exception is <strong>dataclass</strong> usage (see below).
Syrupy v6 does <strong>not</strong> change the required Python version
or other package dependencies. Support for Python 3.10 will instead be
dropped in the next Syrupy major version (v7).</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/syrupy-project/syrupy/compare/v5.5.3...v6.0.0">https://github.com/syrupy-project/syrupy/compare/v5.5.3...v6.0.0</a></p>
<hr />
<h2>Breaking Changes</h2>
<h3>Built-in dataclass serialization (removed
<code>DataclassPlugin</code>)</h3>
<p>stdlib dataclasses are now serialized natively by the Amber
serializer. The separate <code>DataclassPlugin</code> has been
<strong>removed</strong>.</p>
<ul>
<li><strong>If you used <code>DataclassPlugin</code>:</strong> remove
imports and plugin wiring. Behavior should match what the plugin
produced; no snapshot rewrite should be needed for the dataclass shape
itself.</li>
<li><strong>If you did <em>not</em> use the plugin:</strong> dataclass
snapshots may change from a <code>repr</code>-style string to structured
Amber form (field-by-field). Re-run with <code>--snapshot-update</code>
where those assertions fail.</li>
</ul>
<p>Example of what to remove:</p>
<pre lang="python"><code># Before (v5)
from syrupy.extensions.amber.dataclasses_plugin import DataclassPlugin
<p>class MySerializer(AmberDataSerializer):
serializer_plugins = [DataclassPlugin, ...]
</code></pre></p>
<pre lang="python"><code># After (v6) — dataclasses work with the
default Amber extension
assert MyDataclass(...) == snapshot
</code></pre>
<p>Attrs and Pydantic models are unchanged and still need their
serializer plugins. See the <a
href="https://github.com/syrupy-project/syrupy/blob/main/tests/syrupy/extensions/amber/test_amber_serializer_plugins.py">serializer
plugins example</a>.</p>
<p>(<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1220">#1220</a>,
closes <a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1048">#1048</a>)</p>
<h3>JSON <code>datetime.date</code> snapshots</h3>
<p>The JSON extension now serializes <code>datetime.date</code> as
<code>YYYY-MM-DD</code> instead of a <code>repr</code> string. Existing
JSON snapshots that contain dates will need an update.</p>
<p>(<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1216">#1216</a>,
closes <a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1058">#1058</a>)</p>
<h3><code>path_value</code> nested path replacement in default (literal)
mode</h3>
<p><code>path_value(..., regex=False)</code> now correctly replaces
values at nested paths such as <code>user.token</code>. Previously, the
default-mode lookup missed escaped path keys, so nested values were left
unchanged (and could leak into committed snapshots).</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/syrupy-project/syrupy/blob/main/CHANGELOG.md">syrupy's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0">v6.0.0</a>
(2026-08-22)</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): bump pygments from 2.19.2 to 2.20.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1151">syrupy-project/syrupy#1151</a></li>
<li>chore(deps): update dependency hypothesis to v6.156.5 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1152">syrupy-project/syrupy#1152</a></li>
<li>chore(deps): update dependency ruff to v0.15.21 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1153">syrupy-project/syrupy#1153</a></li>
<li>chore(deps): update dependency hypothesis to v6.156.6 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1154">syrupy-project/syrupy#1154</a></li>
<li>chore(deps): update dependency coverage to v7.15.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1157">syrupy-project/syrupy#1157</a></li>
<li>chore(deps): update dependency mypy to v2.3.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1158">syrupy-project/syrupy#1158</a></li>
<li>fix: make set/dict serialization deterministic for partial-order
elements by <a
href="https://github.com/chuenchen309"><code>@​chuenchen309</code></a>
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1159">syrupy-project/syrupy#1159</a></li>
<li>docs: add chuenchen309 as a contributor for bug by <a
href="https://github.com/allcontributors"><code>@​allcontributors</code></a>[bot]
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1160">syrupy-project/syrupy#1160</a></li>
<li>chore(deps): update dependency coverage to v7.15.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1163">syrupy-project/syrupy#1163</a></li>
<li>chore(deps): update dependency ruff to v0.15.22 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1164">syrupy-project/syrupy#1164</a></li>
<li>chore(deps): update dependency hypothesis to v6.156.7 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1165">syrupy-project/syrupy#1165</a></li>
<li>chore(deps): update dependency hypothesis to v6.156.9 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1166">syrupy-project/syrupy#1166</a></li>
<li>chore(deps): update dependency hypothesis to v6.157.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1167">syrupy-project/syrupy#1167</a></li>
<li>fix(matchers): replace values at nested paths in path_value default
mode by <a
href="https://github.com/chuenchen309"><code>@​chuenchen309</code></a>
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1162">syrupy-project/syrupy#1162</a></li>
<li>fix: preserve skipped single-file snapshots by <a
href="https://github.com/KSmanis"><code>@​KSmanis</code></a> in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1161">syrupy-project/syrupy#1161</a></li>
<li>docs: add KSmanis as a contributor for bug by <a
href="https://github.com/allcontributors"><code>@​allcontributors</code></a>[bot]
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1168">syrupy-project/syrupy#1168</a></li>
<li>chore(deps): update pypa/gh-action-pypi-publish action to v1.14.1 by
<a href="https://github.com/renovate"><code>@​renovate</code></a>[bot]
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1169">syrupy-project/syrupy#1169</a></li>
<li>chore(deps): update dependency hypothesis to v6.157.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1171">syrupy-project/syrupy#1171</a></li>
<li>chore(deps): update actions/checkout action to v7.0.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1170">syrupy-project/syrupy#1170</a></li>
<li>chore(deps): update dependency hypothesis to v6.158.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1172">syrupy-project/syrupy#1172</a></li>
<li>chore(deps): update astral-sh/setup-uv action to v9 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1174">syrupy-project/syrupy#1174</a></li>
<li>chore(deps): update dependency hypothesis to v6.158.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1173">syrupy-project/syrupy#1173</a></li>
<li>chore(deps): update dependency hypothesis to v6.160.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1176">syrupy-project/syrupy#1176</a></li>
<li>feat: support in-memory snapshot diff data by <a
href="https://github.com/yangfan-yf-yf"><code>@​yangfan-yf-yf</code></a>
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1175">syrupy-project/syrupy#1175</a></li>
<li>docs: add yangfan-yf-yf as a contributor for code by <a
href="https://github.com/allcontributors"><code>@​allcontributors</code></a>[bot]
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1178">syrupy-project/syrupy#1178</a></li>
<li>chore(deps): update dependency hypothesis to v6.161.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1177">syrupy-project/syrupy#1177</a></li>
<li>chore(deps): update dependency hypothesis to v6.161.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1180">syrupy-project/syrupy#1180</a></li>
<li>chore(deps): update dependency hypothesis to v6.161.4 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1182">syrupy-project/syrupy#1182</a></li>
<li>chore(deps): update dependency hypothesis to v6.161.6 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1183">syrupy-project/syrupy#1183</a></li>
<li>chore(deps): update dependency ruff to &gt;=0.16,&lt;0.17 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1179">syrupy-project/syrupy#1179</a></li>
<li>chore(deps): update dependency hypothesis to v6.161.7 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1184">syrupy-project/syrupy#1184</a></li>
<li>chore(deps): update pypa/gh-action-pypi-publish action to v1.14.2 by
<a href="https://github.com/renovate"><code>@​renovate</code></a>[bot]
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1186">syrupy-project/syrupy#1186</a></li>
<li>perf: compress xdist snapshot reports by <a
href="https://github.com/w3lld1"><code>@​w3lld1</code></a> in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1188">syrupy-project/syrupy#1188</a></li>
<li>docs: add w3lld1 as a contributor for code by <a
href="https://github.com/allcontributors"><code>@​allcontributors</code></a>[bot]
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1190">syrupy-project/syrupy#1190</a></li>
<li>chore(deps): update dependency ruff to v0.16.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1189">syrupy-project/syrupy#1189</a></li>
<li>chore(deps): update dependency hypothesis to v6.164.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1187">syrupy-project/syrupy#1187</a></li>
<li>chore(deps): update dependency hypothesis to v6.165.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1191">syrupy-project/syrupy#1191</a></li>
<li>chore(deps): update dependency coverage to v7.15.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1192">syrupy-project/syrupy#1192</a></li>
<li>chore(deps): update python docker tag to v3.14.7 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1195">syrupy-project/syrupy#1195</a></li>
<li>chore(deps): update dependency coverage to v7.15.4 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1197">syrupy-project/syrupy#1197</a></li>
<li>chore(deps): update dependency hypothesis to v6.165.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1194">syrupy-project/syrupy#1194</a></li>
<li>chore(deps): update dependency ruff to v0.16.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1198">syrupy-project/syrupy#1198</a></li>
<li>chore(deps): update dependency hypothesis to v6.165.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1199">syrupy-project/syrupy#1199</a></li>
<li>chore(deps): update astral-sh/setup-uv action to v10 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1200">syrupy-project/syrupy#1200</a></li>
<li>chore(deps): update dependency hypothesis to v6.165.5 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1201">syrupy-project/syrupy#1201</a></li>
<li>chore(deps): update dependency ruff to v0.16.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1202">syrupy-project/syrupy#1202</a></li>
<li>chore(deps): update astral-sh/setup-uv action to v10.0.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1205">syrupy-project/syrupy#1205</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/621af75dd8dfa3301b503099b204a3d874e787d7"><code>621af75</code></a>
chore(release): 6.0.0 [skip ci]</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/3a9f69182366401c372dd0a1690177e70e994fec"><code>3a9f691</code></a>
fix: single file snapshot no longer buffers in memory (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1223">#1223</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/ab13f8d4a9eeba10572a6a12f485f79a6e0a1b23"><code>ab13f8d</code></a>
chore: sponsorship (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1224">#1224</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/98f989c42a7c1c9cf49e031e9b97374bf97a6b6d"><code>98f989c</code></a>
feat: add --snapshot-declaration-order for respecting declaration order
(<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1222">#1222</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/b549b4b6329cca03f871162748b3ea8597add1a3"><code>b549b4b</code></a>
feat: built-in support for Dataclasses (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1220">#1220</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/d34933fce2d8eb65c24a89f29f5900b413775b5e"><code>d34933f</code></a>
chore: use the benchmarks git branch (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1221">#1221</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/f6eda020d8671fc1648c0d94ed436805d5548978"><code>f6eda02</code></a>
chore(ci): permissions for gh-pages</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/a5ce0492e68525f499f5cb395e273d3ac5a1f8e3"><code>a5ce049</code></a>
chore(deps): update actions/configure-pages action to v6 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1219">#1219</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/c0cb162f5fbaca6eeda43937152db314e0313c82"><code>c0cb162</code></a>
chore: update github pages</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/4d59bde91c87f6a2fb3b476ea995246a43449bc2"><code>4d59bde</code></a>
chore: update docs for v6 release (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1218">#1218</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/syrupy-project/syrupy/compare/v5.5.3...v6.0.0">compare
view</a></li>
</ul>
</details>
<br />


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

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

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

---

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

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


</details>

Made by [Open
SWE](https://openswe.vercel.app/agents/0758e158-6746-5095-b8a0-7f69acf36b73)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: John Kennedy <65985482+jkennedyvz@users.noreply.github.com>
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-09-02 09:40:09 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
b7bcf0083c chore(deps): bump tornado from 6.5.7 to 6.5.8 in /libs/langgraph (#8792)
Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.5.7 to
6.5.8.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst">tornado's
changelog</a>.</em></p>
<blockquote>
<h1>Release notes</h1>
<p>.. toctree::
:maxdepth: 2</p>
<p>releases/v6.5.8
releases/v6.5.7
releases/v6.5.6
releases/v6.5.5
releases/v6.5.4
releases/v6.5.3
releases/v6.5.2
releases/v6.5.1
releases/v6.5.0
releases/v6.4.2
releases/v6.4.1
releases/v6.4.0
releases/v6.3.3
releases/v6.3.2
releases/v6.3.1
releases/v6.3.0
releases/v6.2.0
releases/v6.1.0
releases/v6.0.4
releases/v6.0.3
releases/v6.0.2
releases/v6.0.1
releases/v6.0.0
releases/v5.1.1
releases/v5.1.0
releases/v5.0.2
releases/v5.0.1
releases/v5.0.0
releases/v4.5.3
releases/v4.5.2
releases/v4.5.1
releases/v4.5.0
releases/v4.4.3
releases/v4.4.2
releases/v4.4.1
releases/v4.4.0
releases/v4.3.0
releases/v4.2.1
releases/v4.2.0
releases/v4.1.0
releases/v4.0.2
releases/v4.0.1
releases/v4.0.0
releases/v3.2.2</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tornadoweb/tornado/commit/a55abe3e3bf59994f29b2f7084c46341f0d4f6a7"><code>a55abe3</code></a>
Merge pull request <a
href="https://redirect.github.com/tornadoweb/tornado/issues/3704">#3704</a>
from bdarnell/security-6.5.8</li>
<li><a
href="https://github.com/tornadoweb/tornado/commit/fc794885f0ccf9c33f3a66d890abcc237dd50b3c"><code>fc79488</code></a>
docs: add additional credit to release notes</li>
<li><a
href="https://github.com/tornadoweb/tornado/commit/7b017630d3139ca0d1ebdf6ac3b3ffe7725a7129"><code>7b01763</code></a>
Fix test_strip_headers_on_redirect's URL-embedded-credentials cases</li>
<li><a
href="https://github.com/tornadoweb/tornado/commit/d72fff8d7b9b8f6aa68505847e5483d600e3184c"><code>d72fff8</code></a>
release notes and version bump for 6.5.8</li>
<li><a
href="https://github.com/tornadoweb/tornado/commit/b168818f8aae39808b981878fb358cbe02a6238e"><code>b168818</code></a>
auth: Formally deprecated OpenIDMixin</li>
<li><a
href="https://github.com/tornadoweb/tornado/commit/da284767eae8e1f0484f123b8c3225f6465b09c7"><code>da28476</code></a>
web: Also check for semicolons in deprecated mixed-case cookie args</li>
<li><a
href="https://github.com/tornadoweb/tornado/commit/8d6363ed7b69d5f0da806efe34d256627a2191de"><code>8d6363e</code></a>
httputil: Enforce a new limit on the number of arguments in a
request</li>
<li><a
href="https://github.com/tornadoweb/tornado/commit/de85b3f87446e323e881bbaa3d5a74f4b76e5f05"><code>de85b3f</code></a>
httputil: Apply multipart max_parts limit earlier</li>
<li>See full diff in <a
href="https://github.com/tornadoweb/tornado/compare/v6.5.7...v6.5.8">compare
view</a></li>
</ul>
</details>
<br />


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

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/langchain-ai/langgraph/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 01:13:17 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7815573c76 chore(deps): bump the major group in /libs/langgraph with 2 updates (#8783)
Bumps the major group in /libs/langgraph with 2 updates:
[xxhash](https://github.com/ifduyue/python-xxhash) and
[syrupy](https://github.com/syrupy-project/syrupy).

Updates `xxhash` from 3.8.1 to 4.0.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ifduyue/python-xxhash/releases">xxhash's
releases</a>.</em></p>
<blockquote>
<h2>v4.0.1</h2>
<ul>
<li>Clean up <code>_parse_init_args</code> keyword handling so the
defensive check
for a duplicate <code>data</code> keyword raises a proper error
message</li>
<li>Add <code>_xxhash</code> module docstring</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ifduyue/python-xxhash/compare/v4.0.0...v4.0.1">https://github.com/ifduyue/python-xxhash/compare/v4.0.0...v4.0.1</a></p>
<h2>v4.0.0</h2>
<ul>
<li><strong>Breaking change</strong>: Drop support for Python 3.8,
require Python &gt;= 3.9</li>
<li><strong>Breaking change</strong>: Remove deprecated
<code>xxhash.VERSION_TUPLE</code></li>
<li><strong>Breaking change</strong>: The <code>input</code> keyword
argument is renamed to <code>data</code>
across constructors, <code>update()</code>, and one-shot functions</li>
<li><strong>Breaking change</strong>: <code>str</code> input is no
longer accepted and raises
<code>TypeError: Strings must be encoded before hashing</code>; encode
to
<code>bytes</code> before hashing</li>
<li>Upgrade xxHash from v0.8.2 to v0.8.3. Note: on GCC/Clang source
builds
that target AVX2 (e.g. <code>-march=x86-64-v3</code>), upstream v0.8.3
autovectorizes <code>XXH64_update()</code> and makes the xxh64 streaming
path
about 2x slower. The shipped wheels are built for baseline x86-64 and
are unaffected. Source builds can work around it by adding
<code>-fno-tree-vectorize</code> to the compiler flags.</li>
<li>Add per-object locking for thread safety, with sub-interpreter and
free-threaded (no-GIL) Python support</li>
<li>Speed up hash constructors by switching them to
<code>tp_vectorcall</code>.</li>
<li>Build pyodide wasm32 wheels</li>
<li>Add s390x big-endian test job</li>
<li>Add Python 3.15 classifier</li>
<li>CI: shard the PyPI upload into parallel groups and create the GitHub
Release automatically</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ifduyue/python-xxhash/blob/master/CHANGELOG.rst">xxhash's
changelog</a>.</em></p>
<blockquote>
<p>v4.0.1 2026-08-17</p>
<pre><code>
- Clean up ``_parse_init_args`` keyword handling so the defensive check
  for a duplicate ``data`` keyword raises a proper error message
- Add ``_xxhash`` module docstring
<p>v4.0.0 2026-08-12<br />
</code></pre></p>
<ul>
<li><strong>Breaking change</strong>: Drop support for Python 3.8,
require Python &gt;= 3.9</li>
<li><strong>Breaking change</strong>: Remove deprecated
<code>xxhash.VERSION_TUPLE</code></li>
<li><strong>Breaking change</strong>: The <code>input</code> keyword
argument is renamed to <code>data</code>
in constructors and one-shot functions. <code>update()</code>
additionally gains a
<code>data</code> keyword argument (it accepted no keyword arguments
before).</li>
<li><strong>Breaking change</strong>: <code>str</code> input is no
longer accepted and raises
<code>TypeError: Strings must be encoded before hashing</code>; encode
to
<code>bytes</code> before hashing</li>
<li>Upgrade xxHash from v0.8.2 to v0.8.3. Note: on GCC/Clang source
builds
that target AVX2 (e.g. <code>-march=x86-64-v3</code>), upstream v0.8.3
autovectorizes <code>XXH64_update()</code> and makes the xxh64 streaming
path
about 2x slower. The shipped wheels are built for baseline x86-64 and
are unaffected. Source builds can work around it by adding
<code>-fno-tree-vectorize</code> to the compiler flags.</li>
<li>Add per-object locking for thread safety, with sub-interpreter and
free-threaded (no-GIL) Python support. The GIL is now released only
while hashing inputs larger than 64 KiB; previously
<code>update()</code>
released it unconditionally and one-shot functions always held it.</li>
<li>Speed up hash constructors by switching them to
<code>tp_vectorcall</code>.</li>
<li>Build pyodide wasm32 wheels</li>
<li>Add s390x big-endian test job</li>
<li>Add Python 3.15 classifier</li>
<li>CI: shard the PyPI upload into parallel groups and create the GitHub
Release automatically</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/e2c1bcf1e1d86c4e3d43e4d412dccb521498ea88"><code>e2c1bcf</code></a>
Release v4.0.1</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/669a69c0d367a93f2305b45d407d89e8cad7c319"><code>669a69c</code></a>
Clean up _parse_init_args keyword handling</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/4a6136daf73f3363ff82e50efd93e8c9c225c153"><code>4a6136d</code></a>
build(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.1</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/aa26ed65c95eed5606082994ed5a05856cac3e51"><code>aa26ed6</code></a>
Bump version to 4.0.1.dev0</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/d774e2a1bb561fa9de58b6c7127f58e075da4e4a"><code>d774e2a</code></a>
Add _xxhash module docstring</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/c8d9a0e11758ed89a5eadd5c6c24eca269dfe56c"><code>c8d9a0e</code></a>
Clarify changelog: update() keyword and GIL release threshold</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/80d42d28d66cdd5626d50d267a998885611e2956"><code>80d42d2</code></a>
Mention exact str rejection error in changelog</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/befdf3b7ff0e7c9acff660f2069a7065363ce7e5"><code>befdf3b</code></a>
Update changelog: note str input rejection</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/5c5e42fee161c036ab0382194e0cbdadc8fe7e9b"><code>5c5e42f</code></a>
Release v4.0.0</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/88fe1916410814eecbb16c7a771ec570f3aec5ec"><code>88fe191</code></a>
Bump version to 4.0.0.dev8</li>
<li>Additional commits viewable in <a
href="https://github.com/ifduyue/python-xxhash/compare/v3.8.1...v4.0.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `syrupy` from 5.5.3 to 6.0.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/syrupy-project/syrupy/releases">syrupy's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h1>Syrupy 6.0.0</h1>
<p><em>(2026-08-22)</em></p>
<p>Syrupy 6 focuses on better built-in serialization, clearer snapshot
workflows, and large-suite performance. Please review the
<strong>breaking changes</strong> before upgrading.</p>
<p>Most suites should not need significant snapshot updates on upgrade —
the main exception is <strong>dataclass</strong> usage (see below).
Syrupy v6 does <strong>not</strong> change the required Python version
or other package dependencies. Support for Python 3.10 will instead be
dropped in the next Syrupy major version (v7).</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/syrupy-project/syrupy/compare/v5.5.3...v6.0.0">https://github.com/syrupy-project/syrupy/compare/v5.5.3...v6.0.0</a></p>
<hr />
<h2>Breaking Changes</h2>
<h3>Built-in dataclass serialization (removed
<code>DataclassPlugin</code>)</h3>
<p>stdlib dataclasses are now serialized natively by the Amber
serializer. The separate <code>DataclassPlugin</code> has been
<strong>removed</strong>.</p>
<ul>
<li><strong>If you used <code>DataclassPlugin</code>:</strong> remove
imports and plugin wiring. Behavior should match what the plugin
produced; no snapshot rewrite should be needed for the dataclass shape
itself.</li>
<li><strong>If you did <em>not</em> use the plugin:</strong> dataclass
snapshots may change from a <code>repr</code>-style string to structured
Amber form (field-by-field). Re-run with <code>--snapshot-update</code>
where those assertions fail.</li>
</ul>
<p>Example of what to remove:</p>
<pre lang="python"><code># Before (v5)
from syrupy.extensions.amber.dataclasses_plugin import DataclassPlugin
<p>class MySerializer(AmberDataSerializer):
serializer_plugins = [DataclassPlugin, ...]
</code></pre></p>
<pre lang="python"><code># After (v6) — dataclasses work with the
default Amber extension
assert MyDataclass(...) == snapshot
</code></pre>
<p>Attrs and Pydantic models are unchanged and still need their
serializer plugins. See the <a
href="https://github.com/syrupy-project/syrupy/blob/main/tests/syrupy/extensions/amber/test_amber_serializer_plugins.py">serializer
plugins example</a>.</p>
<p>(<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1220">#1220</a>,
closes <a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1048">#1048</a>)</p>
<h3>JSON <code>datetime.date</code> snapshots</h3>
<p>The JSON extension now serializes <code>datetime.date</code> as
<code>YYYY-MM-DD</code> instead of a <code>repr</code> string. Existing
JSON snapshots that contain dates will need an update.</p>
<p>(<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1216">#1216</a>,
closes <a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1058">#1058</a>)</p>
<h3><code>path_value</code> nested path replacement in default (literal)
mode</h3>
<p><code>path_value(..., regex=False)</code> now correctly replaces
values at nested paths such as <code>user.token</code>. Previously, the
default-mode lookup missed escaped path keys, so nested values were left
unchanged (and could leak into committed snapshots).</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/syrupy-project/syrupy/blob/main/CHANGELOG.md">syrupy's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0">v6.0.0</a>
(2026-08-22)</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): bump pygments from 2.19.2 to 2.20.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1151">syrupy-project/syrupy#1151</a></li>
<li>chore(deps): update dependency hypothesis to v6.156.5 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1152">syrupy-project/syrupy#1152</a></li>
<li>chore(deps): update dependency ruff to v0.15.21 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1153">syrupy-project/syrupy#1153</a></li>
<li>chore(deps): update dependency hypothesis to v6.156.6 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1154">syrupy-project/syrupy#1154</a></li>
<li>chore(deps): update dependency coverage to v7.15.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1157">syrupy-project/syrupy#1157</a></li>
<li>chore(deps): update dependency mypy to v2.3.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1158">syrupy-project/syrupy#1158</a></li>
<li>fix: make set/dict serialization deterministic for partial-order
elements by <a
href="https://github.com/chuenchen309"><code>@​chuenchen309</code></a>
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1159">syrupy-project/syrupy#1159</a></li>
<li>docs: add chuenchen309 as a contributor for bug by <a
href="https://github.com/allcontributors"><code>@​allcontributors</code></a>[bot]
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1160">syrupy-project/syrupy#1160</a></li>
<li>chore(deps): update dependency coverage to v7.15.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1163">syrupy-project/syrupy#1163</a></li>
<li>chore(deps): update dependency ruff to v0.15.22 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1164">syrupy-project/syrupy#1164</a></li>
<li>chore(deps): update dependency hypothesis to v6.156.7 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1165">syrupy-project/syrupy#1165</a></li>
<li>chore(deps): update dependency hypothesis to v6.156.9 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1166">syrupy-project/syrupy#1166</a></li>
<li>chore(deps): update dependency hypothesis to v6.157.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1167">syrupy-project/syrupy#1167</a></li>
<li>fix(matchers): replace values at nested paths in path_value default
mode by <a
href="https://github.com/chuenchen309"><code>@​chuenchen309</code></a>
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1162">syrupy-project/syrupy#1162</a></li>
<li>fix: preserve skipped single-file snapshots by <a
href="https://github.com/KSmanis"><code>@​KSmanis</code></a> in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1161">syrupy-project/syrupy#1161</a></li>
<li>docs: add KSmanis as a contributor for bug by <a
href="https://github.com/allcontributors"><code>@​allcontributors</code></a>[bot]
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1168">syrupy-project/syrupy#1168</a></li>
<li>chore(deps): update pypa/gh-action-pypi-publish action to v1.14.1 by
<a href="https://github.com/renovate"><code>@​renovate</code></a>[bot]
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1169">syrupy-project/syrupy#1169</a></li>
<li>chore(deps): update dependency hypothesis to v6.157.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1171">syrupy-project/syrupy#1171</a></li>
<li>chore(deps): update actions/checkout action to v7.0.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1170">syrupy-project/syrupy#1170</a></li>
<li>chore(deps): update dependency hypothesis to v6.158.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1172">syrupy-project/syrupy#1172</a></li>
<li>chore(deps): update astral-sh/setup-uv action to v9 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1174">syrupy-project/syrupy#1174</a></li>
<li>chore(deps): update dependency hypothesis to v6.158.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1173">syrupy-project/syrupy#1173</a></li>
<li>chore(deps): update dependency hypothesis to v6.160.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1176">syrupy-project/syrupy#1176</a></li>
<li>feat: support in-memory snapshot diff data by <a
href="https://github.com/yangfan-yf-yf"><code>@​yangfan-yf-yf</code></a>
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1175">syrupy-project/syrupy#1175</a></li>
<li>docs: add yangfan-yf-yf as a contributor for code by <a
href="https://github.com/allcontributors"><code>@​allcontributors</code></a>[bot]
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1178">syrupy-project/syrupy#1178</a></li>
<li>chore(deps): update dependency hypothesis to v6.161.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1177">syrupy-project/syrupy#1177</a></li>
<li>chore(deps): update dependency hypothesis to v6.161.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1180">syrupy-project/syrupy#1180</a></li>
<li>chore(deps): update dependency hypothesis to v6.161.4 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1182">syrupy-project/syrupy#1182</a></li>
<li>chore(deps): update dependency hypothesis to v6.161.6 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1183">syrupy-project/syrupy#1183</a></li>
<li>chore(deps): update dependency ruff to &gt;=0.16,&lt;0.17 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1179">syrupy-project/syrupy#1179</a></li>
<li>chore(deps): update dependency hypothesis to v6.161.7 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1184">syrupy-project/syrupy#1184</a></li>
<li>chore(deps): update pypa/gh-action-pypi-publish action to v1.14.2 by
<a href="https://github.com/renovate"><code>@​renovate</code></a>[bot]
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1186">syrupy-project/syrupy#1186</a></li>
<li>perf: compress xdist snapshot reports by <a
href="https://github.com/w3lld1"><code>@​w3lld1</code></a> in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1188">syrupy-project/syrupy#1188</a></li>
<li>docs: add w3lld1 as a contributor for code by <a
href="https://github.com/allcontributors"><code>@​allcontributors</code></a>[bot]
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1190">syrupy-project/syrupy#1190</a></li>
<li>chore(deps): update dependency ruff to v0.16.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1189">syrupy-project/syrupy#1189</a></li>
<li>chore(deps): update dependency hypothesis to v6.164.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1187">syrupy-project/syrupy#1187</a></li>
<li>chore(deps): update dependency hypothesis to v6.165.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1191">syrupy-project/syrupy#1191</a></li>
<li>chore(deps): update dependency coverage to v7.15.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1192">syrupy-project/syrupy#1192</a></li>
<li>chore(deps): update python docker tag to v3.14.7 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1195">syrupy-project/syrupy#1195</a></li>
<li>chore(deps): update dependency coverage to v7.15.4 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1197">syrupy-project/syrupy#1197</a></li>
<li>chore(deps): update dependency hypothesis to v6.165.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1194">syrupy-project/syrupy#1194</a></li>
<li>chore(deps): update dependency ruff to v0.16.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1198">syrupy-project/syrupy#1198</a></li>
<li>chore(deps): update dependency hypothesis to v6.165.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1199">syrupy-project/syrupy#1199</a></li>
<li>chore(deps): update astral-sh/setup-uv action to v10 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1200">syrupy-project/syrupy#1200</a></li>
<li>chore(deps): update dependency hypothesis to v6.165.5 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1201">syrupy-project/syrupy#1201</a></li>
<li>chore(deps): update dependency ruff to v0.16.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1202">syrupy-project/syrupy#1202</a></li>
<li>chore(deps): update astral-sh/setup-uv action to v10.0.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1205">syrupy-project/syrupy#1205</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/621af75dd8dfa3301b503099b204a3d874e787d7"><code>621af75</code></a>
chore(release): 6.0.0 [skip ci]</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/3a9f69182366401c372dd0a1690177e70e994fec"><code>3a9f691</code></a>
fix: single file snapshot no longer buffers in memory (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1223">#1223</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/ab13f8d4a9eeba10572a6a12f485f79a6e0a1b23"><code>ab13f8d</code></a>
chore: sponsorship (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1224">#1224</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/98f989c42a7c1c9cf49e031e9b97374bf97a6b6d"><code>98f989c</code></a>
feat: add --snapshot-declaration-order for respecting declaration order
(<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1222">#1222</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/b549b4b6329cca03f871162748b3ea8597add1a3"><code>b549b4b</code></a>
feat: built-in support for Dataclasses (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1220">#1220</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/d34933fce2d8eb65c24a89f29f5900b413775b5e"><code>d34933f</code></a>
chore: use the benchmarks git branch (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1221">#1221</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/f6eda020d8671fc1648c0d94ed436805d5548978"><code>f6eda02</code></a>
chore(ci): permissions for gh-pages</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/a5ce0492e68525f499f5cb395e273d3ac5a1f8e3"><code>a5ce049</code></a>
chore(deps): update actions/configure-pages action to v6 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1219">#1219</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/c0cb162f5fbaca6eeda43937152db314e0313c82"><code>c0cb162</code></a>
chore: update github pages</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/4d59bde91c87f6a2fb3b476ea995246a43449bc2"><code>4d59bde</code></a>
chore: update docs for v6 release (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1218">#1218</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/syrupy-project/syrupy/compare/v5.5.3...v6.0.0">compare
view</a></li>
</ul>
</details>
<br />


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

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

---

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

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 01:12:29 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0cf2f960f6 chore(deps): bump the minor-and-patch group in /libs/cli with 6 updates (#8778)
Bumps the minor-and-patch group in /libs/cli with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [click](https://github.com/pallets/click) | `8.4.2` | `8.5.0` |
| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.4.2` |
`0.4.4` |
| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2`
| `1.2.3` |
| [ruff](https://github.com/astral-sh/ruff) | `0.16.0` | `0.16.5` |
| [ty](https://github.com/astral-sh/ty) | `0.0.64` | `0.0.75` |
| [hatch](https://github.com/pypa/hatch) | `1.17.1` | `1.18.0` |

Updates `click` from 8.4.2 to 8.5.0
<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.5.0</h2>
<p>This is the Click 8.5.0 feature release. A feature release may
include new features, remove previously deprecated code, add new
deprecation, or introduce potentially breaking changes.</p>
<p>We encourage everyone to upgrade. You can read more about our <a
href="https://palletsprojects.com/versions">Version Support Policy</a>
on our website.</p>
<p>PyPI: <a
href="https://pypi.org/project/click/8.5.0/">https://pypi.org/project/click/8.5.0/</a>
Changes: <a
href="https://click.palletsprojects.com/page/changes/#version-8-5-0">https://click.palletsprojects.com/page/changes/#version-8-5-0</a>
Milestone <a
href="https://github.com/pallets/click/milestone/33">https://github.com/pallets/click/milestone/33</a></p>
<ul>
<li>Add built-in shell completion support for PowerShell (Windows
PowerShell
5.1+ and pwsh 7+) alongside the existing <code>bash</code>,
<code>zsh</code>, and <code>fish</code>
completers. Use <code>_FOO_BAR_COMPLETE=powershell_source foo-bar</code>
to generate
the completion script. <a
href="https://redirect.github.com/pallets/click/issues/2672">#2672</a>
<a
href="https://redirect.github.com/pallets/click/issues/3637">#3637</a></li>
<li>Supported versions of Windows enable ANSI terminal styles by
default.
Colorama is no longer a dependency and is not used. <a
href="https://redirect.github.com/pallets/click/issues/2986">#2986</a>
<a
href="https://redirect.github.com/pallets/click/issues/3505">#3505</a></li>
<li>{class}<code>Argument</code> accepts a <code>help</code> parameter,
and help output includes
a <code>Positional arguments</code> section when argument help is
available. <a
href="https://redirect.github.com/pallets/click/issues/2983">#2983</a>
<a
href="https://redirect.github.com/pallets/click/issues/3473">#3473</a></li>
<li><code>confirm()</code> and <code>prompt()</code> strip ANSI color
and style codes from the
prompt when the output stream does not support them, matching
<code>echo()</code>.
This stripping was lost in <code>8.4.0</code> when <a
href="https://redirect.github.com/pallets/click/issues/2969">#2969</a>
began writing the
prompt with <code>input()</code> directly. <a
href="https://redirect.github.com/pallets/click/issues/3572">#3572</a>
<a
href="https://redirect.github.com/pallets/click/issues/3653">#3653</a></li>
<li>{class}<code>Path</code> with <code>allow_dash=True</code> no longer
triggers a <code>BytesWarning</code>,
an error under <code>python -bb</code>, when checking a value against
the <code>-</code>
convention. <a
href="https://redirect.github.com/pallets/click/issues/2877">#2877</a>
<a
href="https://redirect.github.com/pallets/click/issues/3642">#3642</a></li>
<li>Add {func}<code>custom_version_option</code>, a
<code>--version</code> option whose output is
produced by a callback, covering cases {func}<code>version_option</code>
intentionally
does not. The feature set of {func}<code>version_option</code> is now
frozen; see
[discussion <a
href="https://redirect.github.com/pallets/click/issues/3527">#3527</a>](<a
href="https://github.com/pallets/click/discussions/3527">https://github.com/pallets/click/discussions/3527</a>).
<a
href="https://redirect.github.com/pallets/click/issues/3581">#3581</a></li>
<li><code>style()</code> and <code>secho()</code> no longer silently
drop the 256-color index <code>0</code>
(black) passed as <code>fg</code> or <code>bg</code>, and now validate
color arguments. Invalid
colors raise a <code>ValueError</code> instead of a
<code>TypeError</code>. <a
href="https://redirect.github.com/pallets/click/issues/3677">#3677</a></li>
<li>The automatic help option stores its value under the reserved name
<code>_click_default_help</code> instead of <code>help</code>, so a
parameter named <code>help</code> no
longer breaks parsing. The new name is visible in
{meth}<code>Command.to_info_dict</code> output. Parameters that
overwrite each other's
value trigger a warning: an argument sharing its name with another
parameter, or any parameter claiming the reserved name. Options may
still
share a name to compete for the same value (feature switches).
<a
href="https://redirect.github.com/pallets/click/issues/2819">#2819</a>
<a
href="https://redirect.github.com/pallets/click/issues/3678">#3678</a></li>
<li><code>unstyle</code> and the ANSI handling behind help-text wrapping
now strip the full
CSI escape-sequence grammar. <a
href="https://redirect.github.com/pallets/click/issues/3681">#3681</a></li>
<li>Streamline <code>Option</code> flag handling: the flag-kind, type,
lazy-default and
validation steps in <code>Option.__init__</code> move into focused
helpers, and
<code>flag_value</code> and <code>default</code> keep their unset
sentinel at construction
(resolved lazily on read) so <code>is UNSET</code> reliably tells a
user-supplied value
from an auto-derived one. Runtime behavior is unchanged, but
{meth}<code>Parameter.to_info_dict</code> now resolves
<code>default=True</code> on a feature
switch to its <code>flag_value</code>, matching what the function
receives at call</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/click/blob/main/CHANGES.md">click's
changelog</a>.</em></p>
<blockquote>
<h2>Version 8.5.0</h2>
<p>Released 2026-08-24</p>
<ul>
<li>Add built-in shell completion support for PowerShell (Windows
PowerShell
5.1+ and pwsh 7+) alongside the existing <code>bash</code>,
<code>zsh</code>, and <code>fish</code>
completers. Use <code>_FOO_BAR_COMPLETE=powershell_source foo-bar</code>
to generate
the completion script. {issue}<code>2672</code>
{pr}<code>3637</code></li>
<li>Supported versions of Windows enable ANSI terminal styles by
default.
Colorama is no longer a dependency and is not used.
{issue}<code>2986</code> {pr}<code>3505</code></li>
<li>{class}<code>Argument</code> accepts a <code>help</code> parameter,
and help output includes
a <code>Positional arguments</code> section when argument help is
available. {issue}<code>2983</code> {pr}<code>3473</code></li>
<li><code>confirm()</code> and <code>prompt()</code> strip ANSI color
and style codes from the
prompt when the output stream does not support them, matching
<code>echo()</code>.
This stripping was lost in <code>8.4.0</code> when {pr}<code>2969</code>
began writing the
prompt with <code>input()</code> directly. {issue}<code>3572</code>
{pr}<code>3653</code></li>
<li>Fix test failures when using pytest &gt;= 9.1.
{pr}<code>3656</code></li>
<li>{class}<code>Path</code> with <code>allow_dash=True</code> no longer
triggers a <code>BytesWarning</code>,
an error under <code>python -bb</code>, when checking a value against
the <code>-</code>
convention. {issue}<code>2877</code> {pr}<code>3642</code></li>
<li>Add {func}<code>custom_version_option</code>, a
<code>--version</code> option whose output is
produced by a callback, covering cases {func}<code>version_option</code>
intentionally
does not. The feature set of {func}<code>version_option</code> is now
frozen; see
[discussion <a
href="https://redirect.github.com/pallets/click/issues/3527">#3527</a>](<a
href="https://github.com/pallets/click/discussions/3527">https://github.com/pallets/click/discussions/3527</a>).
{pr}<code>3581</code></li>
<li><code>style()</code> and <code>secho()</code> no longer silently
drop the 256-color index <code>0</code>
(black) passed as <code>fg</code> or <code>bg</code>, and now validate
color arguments. Invalid
colors raise a <code>ValueError</code> instead of a
<code>TypeError</code>. {pr}<code>3677</code></li>
<li>The automatic help option stores its value under the reserved name
<code>_click_default_help</code> instead of <code>help</code>, so a
parameter named <code>help</code> no
longer breaks parsing. The new name is visible in
{meth}<code>Command.to_info_dict</code> output. Parameters that
overwrite each other's
value trigger a warning: an argument sharing its name with another
parameter, or any parameter claiming the reserved name. Options may
still
share a name to compete for the same value (feature switches).
{issue}<code>2819</code> {pr}<code>3678</code></li>
<li><code>unstyle</code> and the ANSI handling behind help-text wrapping
now strip the full
CSI escape-sequence grammar. {pr}<code>3681</code></li>
<li>Streamline <code>Option</code> flag handling: the flag-kind, type,
lazy-default and
validation steps in <code>Option.__init__</code> move into focused
helpers, and
<code>flag_value</code> and <code>default</code> keep their unset
sentinel at construction
(resolved lazily on read) so <code>is UNSET</code> reliably tells a
user-supplied value
from an auto-derived one. Runtime behavior is unchanged, but
{meth}<code>Parameter.to_info_dict</code> now resolves
<code>default=True</code> on a feature
switch to its <code>flag_value</code>, matching what the function
receives at call
time. {pr}<code>3641</code></li>
<li>{func}<code>get_binary_stream</code> and
{func}<code>get_text_stream</code> are deprecated and
will be removed in Click 9.0. {issue}<code>3481</code>
{pr}<code>3695</code></li>
<li>The following <code>click.utils</code> names were never
intentionally public and are
now private (<code>_</code>-prefixed). The old names remain available
with a
<code>DeprecationWarning</code> until Click 9.0: <code>LazyFile</code>,
<code>KeepOpenFile</code>,</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pallets/click/commit/8b19813f2bfca99f1018a587a8cf54fc959f2e5d"><code>8b19813</code></a>
Release version 8.5.0</li>
<li><a
href="https://github.com/pallets/click/commit/2c8cd3ac958a7eb316d67f2d316c27086c4c0369"><code>2c8cd3a</code></a>
Add FAQ entry about <code>UnicodeEncodeError</code> on Windows (<a
href="https://redirect.github.com/pallets/click/issues/3778">#3778</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/131c86aadddfa5cb6dca8339c9d6294c4eacb8ac"><code>131c86a</code></a>
Add FAQ entry about <code>UnicodeEncodeError</code> on Windows</li>
<li><a
href="https://github.com/pallets/click/commit/e1fd5946ab26aaf372009eaff1acf947140b40fb"><code>e1fd594</code></a>
Add support of <code>pathlib.Path</code> to <code>edit</code> (<a
href="https://redirect.github.com/pallets/click/issues/3781">#3781</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/a1d87858abd77fa8e3ffc204670ccd75b96c4781"><code>a1d8785</code></a>
Add support of <code>pathlib.Path</code> to <code>edit</code></li>
<li><a
href="https://github.com/pallets/click/commit/2103e157683c5e4cadc8ee1838df526a54bde9a4"><code>2103e15</code></a>
Forward all user's parameters set in <code>PAGER</code> and improve flag
detection (<a
href="https://redirect.github.com/pallets/click/issues/3777">#3777</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/a6256bfb5971d5e58585fe7b6c656134e1ade5a4"><code>a6256bf</code></a>
Forwards all user's parameters set in <code>PAGER</code></li>
<li><a
href="https://github.com/pallets/click/commit/61b69e967e525bd502f5bf42def4d551e761fe0e"><code>61b69e9</code></a>
Resolve the pager command once, in <code>_pager_contextmanager</code>
(<a
href="https://redirect.github.com/pallets/click/issues/3776">#3776</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/9835b0f7612d1b1ea180a975fd6d24cf16791ba8"><code>9835b0f</code></a>
Resolve the pager command once, in
<code>_pager_contextmanager</code></li>
<li><a
href="https://github.com/pallets/click/commit/f36d58bbd7f188178de2d4fe1d0292c510375ca7"><code>f36d58b</code></a>
Refactor pager stream handling (<a
href="https://redirect.github.com/pallets/click/issues/3767">#3767</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pallets/click/compare/8.4.2...8.5.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `langgraph-sdk` from 0.4.2 to 0.4.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langgraph/releases">langgraph-sdk's
releases</a>.</em></p>
<blockquote>
<h2>langgraph-sdk==0.4.4</h2>
<p>Changes since sdk==0.4.3</p>
<ul>
<li>release(sdk-py): 0.4.4 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8738">#8738</a>)</li>
<li>Merge commit from fork</li>
<li>feat: route LangSmith traces from thread streams (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8723">#8723</a>)</li>
</ul>
<h2>langgraph-sdk==0.4.3</h2>
<p>Changes since sdk==0.4.2</p>
<ul>
<li>release(sdk-py): 0.4.3 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8657">#8657</a>)</li>
<li>feat(sdk-py): add decrypt replacement result (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8598">#8598</a>)</li>
<li>release(langgraph): 1.2.11 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8595">#8595</a>)</li>
<li>chore(deps): bump the minor-and-patch group across 1 directory with
5 updates (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8532">#8532</a>)</li>
<li>release(checkpoint): 4.2.0 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8563">#8563</a>)</li>
<li>chore: enforce PLC0415 in tests for the remaining packages (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8547">#8547</a>)</li>
<li>release(langgraph): 1.2.10 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8462">#8462</a>)</li>
<li>chore(deps): bump websockets from 15.0.1 to 16.0 in /libs/sdk-py in
the major group (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8253">#8253</a>)</li>
<li>fix(sdk-py): support clearing cron end_time via
update(end_time=None) (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8334">#8334</a>)</li>
<li>release(langgraph): 1.2.9 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8316">#8316</a>)</li>
<li>release(langgraph): 1.2.8 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8292">#8292</a>)</li>
<li>chore(deps): bump websockets from 15.0.1 to 16.0 in /libs/langgraph
in the major group (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8256">#8256</a>)</li>
<li>chore(deps): bump the minor-and-patch group in /libs/sdk-py with 9
updates (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8252">#8252</a>)</li>
<li>release(langgraph): 1.2.7 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8223">#8223</a>)</li>
<li>chore(deps-dev): bump starlette from 1.0.1 to 1.3.1 in /libs/sdk-py
(<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8104">#8104</a>)</li>
<li>chore(deps): bump langsmith from 0.8.0 to 0.8.18 in /libs/sdk-py (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8174">#8174</a>)</li>
<li>release(langgraph): 1.2.6 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8139">#8139</a>)</li>
<li>docs: standardize package <code>README.md</code> structure (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8064">#8064</a>)</li>
<li>release(langgraph): 1.2.5 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8062">#8062</a>)</li>
<li>fix(langgraph): merge <code>lc_versions</code> config metadata (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8052">#8052</a>)</li>
<li>chore(deps-dev): bump starlette from 1.0.0 to 1.0.1 in /libs/sdk-py
(<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8006">#8006</a>)</li>
<li>chore: migrate Python type checking to ty (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8002">#8002</a>)</li>
<li>release(langgraph): 1.2.4 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7991">#7991</a>)</li>
<li>test(sdk-py): add factory-graph integration test exercising the
server factory path (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7978">#7978</a>)</li>
<li>release(langgraph): 1.2.3 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7945">#7945</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/a64414c87c8db294fd3b1c5581f39f5b491ef07e"><code>a64414c</code></a>
langgraph: release 0.4.4 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/4704">#4704</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/3a1c02ff3364fa68d6659282dc994e5c57fd1833"><code>3a1c02f</code></a>
update for consistency</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/5ab2aa79bb4949ec96d593ffdd3f7fe6d1c7cc32"><code>5ab2aa7</code></a>
lint again</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/c33e64daa6295be3fadd5c8664185fc4268b9f71"><code>c33e64d</code></a>
use list</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/4ffae6065f1c7fe4dc00fed21ee9a584cbbb14b3"><code>4ffae60</code></a>
lint + update</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/54ddde9d4c73a31cb921420867231542ae7faa72"><code>54ddde9</code></a>
update</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/60c41ce69e17fff2367eb816a667dd38cf7bb58e"><code>60c41ce</code></a>
update</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/efd33d860fdef71bc37f286aeab71fae30a0e607"><code>efd33d8</code></a>
update</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/254a38560e0f036531ac2cde7f55ce93a2cc3ff0"><code>254a385</code></a>
langgraph: fix drawing graph with <strong>root</strong> channel</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/b20130d4e4f50b95d3a97e648d461956d4a35445"><code>b20130d</code></a>
langgraph: fix graph drawing for self-loops</li>
<li>Additional commits viewable in <a
href="https://github.com/langchain-ai/langgraph/compare/0.4.2...0.4.4">compare
view</a></li>
</ul>
</details>
<br />

Updates `python-dotenv` from 1.2.2 to 1.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/theskumar/python-dotenv/releases">python-dotenv's
releases</a>.</em></p>
<blockquote>
<h2>v1.2.3</h2>
<h3>Fixed</h3>
<ul>
<li>Strip a leading UTF-8 BOM from <code>.env</code> file contents so
the first variable is no longer silently lost when the file is saved
with BOM (e.g. by some JetBrains IDEs on Windows) by [<a
href="https://github.com/h1whelan"><code>@​h1whelan</code></a>] in <a
href="https://redirect.github.com/theskumar/python-dotenv/issues/640">#640</a></li>
<li><code>set_key</code> now escapes backslashes, so values containing
them (Windows paths, regular expressions) survive a write/read
round-trip. Quoted values ending in an escaped backslash are no longer
mis-parsed as an escaped quote, which used to swallow the following
lines by [<a
href="https://github.com/dchaudhari7177"><code>@​dchaudhari7177</code></a>]
in <a
href="https://redirect.github.com/theskumar/python-dotenv/issues/680">#680</a></li>
<li><code>dotenv run</code> now prints a friendly error instead of a
traceback when no command is given by [<a
href="https://github.com/bbc2"><code>@​bbc2</code></a>] in <a
href="https://redirect.github.com/theskumar/python-dotenv/issues/606">#606</a></li>
<li>Cache the parsed result for empty <code>.env</code> files so
repeated <code>dotenv_values</code>/<code>load_dotenv</code> calls no
longer re-read the file by [<a
href="https://github.com/ReinerBRO"><code>@​ReinerBRO</code></a>] in <a
href="https://redirect.github.com/theskumar/python-dotenv/issues/638">#638</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md">python-dotenv's
changelog</a>.</em></p>
<blockquote>
<h2>[1.2.3] - 2026-08-16</h2>
<h3>Fixed</h3>
<ul>
<li>Strip a leading UTF-8 BOM from <code>.env</code> file contents so
the first variable is no longer silently lost when the file is saved
with BOM (e.g. by some JetBrains IDEs on Windows) by [<a
href="https://github.com/h1whelan"><code>@​h1whelan</code></a>] in <a
href="https://redirect.github.com/theskumar/python-dotenv/issues/640">#640</a></li>
<li><code>set_key</code> now escapes backslashes, so values containing
them (Windows paths, regular expressions) survive a write/read
round-trip. Quoted values ending in an escaped backslash are no longer
mis-parsed as an escaped quote, which used to swallow the following
lines by [<a
href="https://github.com/dchaudhari7177"><code>@​dchaudhari7177</code></a>]
in <a
href="https://redirect.github.com/theskumar/python-dotenv/issues/680">#680</a></li>
<li><code>dotenv run</code> now prints a friendly error instead of a
traceback when no command is given by [<a
href="https://github.com/bbc2"><code>@​bbc2</code></a>] in <a
href="https://redirect.github.com/theskumar/python-dotenv/issues/606">#606</a></li>
<li>Cache the parsed result for empty <code>.env</code> files so
repeated <code>dotenv_values</code>/<code>load_dotenv</code> calls no
longer re-read the file by [<a
href="https://github.com/ReinerBRO"><code>@​ReinerBRO</code></a>] in <a
href="https://redirect.github.com/theskumar/python-dotenv/issues/638">#638</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59"><code>49515af</code></a>
Bump version: 1.2.2 → 1.2.3</li>
<li><a
href="https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1"><code>8ac846f</code></a>
chore: add release runbook (RELEASING.md) and make release target</li>
<li><a
href="https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166"><code>bb31c94</code></a>
docs: add 1.2.3 release notes (<a
href="https://redirect.github.com/theskumar/python-dotenv/issues/606">#606</a>,
<a
href="https://redirect.github.com/theskumar/python-dotenv/issues/638">#638</a>,
<a
href="https://redirect.github.com/theskumar/python-dotenv/issues/680">#680</a>)</li>
<li><a
href="https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266"><code>f7b18d9</code></a>
fix: round-trip backslashes through set_key (<a
href="https://redirect.github.com/theskumar/python-dotenv/issues/680">#680</a>)</li>
<li><a
href="https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124"><code>751f8c1</code></a>
ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the
github-actions gro...</li>
<li><a
href="https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb"><code>f1937b6</code></a>
chore(deps): update mkdocs-include-markdown-plugin requirement from
&gt;=6.0.0 t...</li>
<li><a
href="https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8"><code>45b9372</code></a>
chore(deps): update pytest requirement from &gt;=3.9 to &gt;=9.0.3 (<a
href="https://redirect.github.com/theskumar/python-dotenv/issues/653">#653</a>)</li>
<li><a
href="https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a"><code>72896e9</code></a>
docs: fix broken mkdocs link in CONTRIBUTING.md (<a
href="https://redirect.github.com/theskumar/python-dotenv/issues/636">#636</a>)</li>
<li><a
href="https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d"><code>72754a1</code></a>
ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the
github-a...</li>
<li><a
href="https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c"><code>078325e</code></a>
ci(security): harden CI/CD supply chain with SHA pinning and
least-privilege ...</li>
<li>Additional commits viewable in <a
href="https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.16.0 to 0.16.5
<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.16.5</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>Install ruff 0.16.5</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.16.5/ruff-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c &quot;irm
https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1
| iex&quot;
</code></pre>
<h2>Download ruff 0.16.5</h2>
<!-- 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.16.5</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>0.16.4</h2>
<p>Released on 2026-08-20.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>flake8-use-pathlib</code>] Add autofix for
<code>PTH116</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26460">#26460</a>)</li>
<li>[<code>refurb</code>] Restrict <code>delete-full-slice</code> to
lists (<code>FURB131</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27711">#27711</a>)</li>
<li>[<code>refurb</code>] Skip <code>FURB101</code> and
<code>FURB103</code> when the <code>open</code> argument is a file
descriptor (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27643">#27643</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix <code>InvalidInstruction</code> on Windows CPUs that do not
support <code>POPCNT</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27803">#27803</a>)</li>
<li>[<code>pyflakes</code>] Emit semantic syntax errors in string type
definitions as <code>F722</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27835">#27835</a>)</li>
<li>[<code>pylint</code>] Allow <code>os._exit</code> imports in
<code>import-private-name</code> (<code>PLC2701</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27738">#27738</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a"><code>9e4938c</code></a>
Bump 0.16.5 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28110">#28110</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd"><code>aad0e90</code></a>
Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28049">#28049</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4"><code>5fdab73</code></a>
Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27877">#27877</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4"><code>29c8e5b</code></a>
Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27910">#27910</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f"><code>50a4d7f</code></a>
Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27906">#27906</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2"><code>ada8795</code></a>
Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27666">#27666</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0"><code>d894723</code></a>
[ty] Infer lambda parameters through callable type aliases (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28109">#28109</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06"><code>2685fde</code></a>
[ty] Narrow functional enum members in <code>==</code> and
<code>match</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28103">#28103</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec"><code>efcffd2</code></a>
[ty] Intersection simplifications with subtype-related generic
specialization...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b"><code>eb78048</code></a>
[ty] Bump ecosystem-analyzer for HTML escaping (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28104">#28104</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.16.0...0.16.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `ty` from 0.0.64 to 0.0.75
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/releases">ty's
releases</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/blob/main/CHANGELOG.md">ty's
changelog</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
<li>Preserve invariant materialization constraints (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28047">#28047</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ty/commit/a553dcc1a4c464b22d6fff8c46d444e326e0ae2d"><code>a553dcc</code></a>
Bump version to 0.0.75 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4396">#4396</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/26b1b50998e92a5f50c342dc4a1fed84db2f8ee4"><code>26b1b50</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4392">#4392</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/73d226ee4d5a9274bc559c50a244159b61dfa315"><code>73d226e</code></a>
Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/issues/4384">#4384</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5e264dac66970648d461a3fc8f2ebebd30a44dc9"><code>5e264da</code></a>
Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/issues/4382">#4382</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/00199f0aaa6a8cd264fea08eae4f3c3fe4451c17"><code>00199f0</code></a>
Bump version to 0.0.74 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4351">#4351</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5769062fa10db84f6c03145bdf42d0b8da9aeb63"><code>5769062</code></a>
Update mypy/pyright comparison table (<a
href="https://redirect.github.com/astral-sh/ty/issues/4165">#4165</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/4fcb06010f2219b80adf3e688964abd9b0d72866"><code>4fcb060</code></a>
Remove Zulip from the PGO training (<a
href="https://redirect.github.com/astral-sh/ty/issues/4336">#4336</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/a7a706442a710db4a93c1a79779dff5ec5824cf6"><code>a7a7064</code></a>
Use the versions bot's ruleset bypass when merging (<a
href="https://redirect.github.com/astral-sh/ty/issues/4333">#4333</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/01b0fab0093c64535a401bc2731f80d7f5b6a7a8"><code>01b0fab</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4325">#4325</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/deef42f517bfbacb2ffe673046bef1e206c6b8ab"><code>deef42f</code></a>
Update dependency python to 3.14 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4326">#4326</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ty/compare/0.0.64...0.0.75">compare
view</a></li>
</ul>
</details>
<br />

Updates `hatch` from 1.17.1 to 1.18.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/hatch/releases">hatch's
releases</a>.</em></p>
<blockquote>
<h2>Hatchling v1.18.0</h2>
<p><em><strong>Changed:</strong></em></p>
<ul>
<li>Drop support for Python 3.7</li>
</ul>
<p><em><strong>Added:</strong></em></p>
<ul>
<li>Update the list of directories that are always excluded for
builds</li>
</ul>
<h2>Hatch v1.18.0</h2>
<p><em><strong>Changed:</strong></em></p>
<ul>
<li>Upgrade default CPython distributions to 20260807</li>
</ul>
<p><em><strong>Added:</strong></em></p>
<ul>
<li>
<p>Add the <code>sources</code> environment option, which redirects
dependencies to a local path, Git repository, URL, alternate index, or
workspace member at install time without altering published metadata.
The top-level <code>[tool.hatch.sources]</code> table is an alias for
the <code>default</code> environment, environments inherit sources entry
by entry, the <code>HATCH_NO_SOURCES</code> environment variable
disables them, and <code>hatch dep show sources</code> reports what each
source redirects</p>
</li>
<li>
<p>Add the <code>--all</code>/<code>-a</code> flag to the
<code>build</code> command to build the workspace root and every
workspace member defined by the selected environment, consolidating
artifacts in the workspace root's <code>dist</code> directory by
default. A root that does not define a <code>project</code> table is
skipped so that a top-level <code>pyproject.toml</code> may only contain
workspace configuration</p>
</li>
<li>
<p>Add the <code>tool.hatch.requires-hatch</code> field, a version
specifier set that commands reading the project's metadata enforce
against the running version of Hatch</p>
</li>
<li>
<p>Add first-class support for free-threaded distribution names such as
<code>3.13t</code> and <code>3.14t</code> to the <code>python</code>
commands and environment <code>python</code> option, rather than
requiring the <code>HATCH_PYTHON_VARIANT_GIL</code> environment
variable</p>
</li>
<li>
<p>The <code>version</code> command can now bump versions that are
statically defined by the <code>project.version</code> field, updating
<code>pyproject.toml</code> in place. Pass <code>--force</code> to allow
an explicit downgrade</p>
</li>
<li>
<p>Support managing Python 3.15 distributions, currently 3.15.0rc1</p>
</li>
</ul>
<p><em><strong>Fixed:</strong></em></p>
<ul>
<li>
<p>Erase stale coverage data before running <code>hatch test
--cover</code>.</p>
</li>
<li>
<p>Fix environment creation crashing when a metadata hook exists that
doesn’t happen to be installed in the <code>hatch</code> CLI’s
environment.</p>
</li>
<li>
<p>Fix commands run by <code>hatch run</code> no longer being
interruptible with Ctrl-C, which happened because the ignored
<code>SIGINT</code> of the parent process was inherited by the child
process.</p>
</li>
<li>
<p>Fix the generated Pyrefly config being invalid on Windows, since
backslashes in the absolute paths were interpreted as TOML escape
sequences.</p>
</li>
<li>
<p>Fix the hardcoded reliance on <code>pip</code> when installing
dependencies internally by using <code>uv</code> instead.</p>
</li>
<li>
<p>Fix environment creation silently installing a GIL-enabled Python
distribution when Hatch itself runs on a free-threaded build. The
distribution matching the running interpreter, such as
<code>3.14t</code>, is now selected.</p>
</li>
<li>
<p>Fix free-threaded selectors such as <code>3.14t</code> being rejected
by an environment's <code>python</code> option, even though <code>hatch
python install 3.14t</code> already accepted them.</p>
</li>
<li>
<p>Never automatically select a prerelease Python distribution, such as
3.15.0rc1, when falling back to the latest compatible version. A
prerelease is still installed when requested explicitly.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/hatch/commit/558061c5ecbe7e9b10d81965d4cdc8df05832228"><code>558061c</code></a>
Fix ci (<a
href="https://redirect.github.com/pypa/hatch/issues/2377">#2377</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/bc6d1bc1347445dfad06e731d4ae50f562692683"><code>bc6d1bc</code></a>
release Hatch v1.18.0 (<a
href="https://redirect.github.com/pypa/hatch/issues/2376">#2376</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/8429e5d5bc84b2c9ace623b99518661e9032d422"><code>8429e5d</code></a>
release Hatchling v1.32.0 (<a
href="https://redirect.github.com/pypa/hatch/issues/2375">#2375</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/413b3a880cfa69cb5095a927a725b074be669930"><code>413b3a8</code></a>
Prepare for release (<a
href="https://redirect.github.com/pypa/hatch/issues/2374">#2374</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/4ccc9ea9cd2800c90549768f7eaa7dc9985b45e1"><code>4ccc9ea</code></a>
Bug Fix - fix CTRL-C behavior to correctly handle signals (<a
href="https://redirect.github.com/pypa/hatch/issues/2369">#2369</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/a8858032b372ad8e13950a06b1783e723ee892e5"><code>a885803</code></a>
Add sources to enable other types of local dependencies (<a
href="https://redirect.github.com/pypa/hatch/issues/2313">#2313</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/ab3e000585fc95c32196d406d0c224fca62ff1b1"><code>ab3e000</code></a>
Add --all flag to hatch build for building all workspace members (<a
href="https://redirect.github.com/pypa/hatch/issues/2352">#2352</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/bb9027761d1325a540ca1eda5aee067098249b41"><code>bb90277</code></a>
fix: Allow the <code>; private</code> annotation in
<code>import-names</code>/<code>import-namespaces</code> p...</li>
<li><a
href="https://github.com/pypa/hatch/commit/3a9d853a68d009db91e70e4271b1d688e5381d3b"><code>3a9d853</code></a>
fix: prevent backward relative paths in readme (<a
href="https://redirect.github.com/pypa/hatch/issues/2354">#2354</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/c4dc4f8ab4399a9f35b56c3367ff39d6fb09271c"><code>c4dc4f8</code></a>
test: Fix test expectations for metadata generated by
<code>flit-core</code> (<a
href="https://redirect.github.com/pypa/hatch/issues/2365">#2365</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/hatch/compare/hatch-v1.17.1...hatch-v1.18.0">compare
view</a></li>
</ul>
</details>
<br />


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

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

---

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

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 01:12:26 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
bd1f031ac0 chore(deps): bump websockets from 16.0 to 16.1.1 in /libs/sdk-py in the major group (#8781)
Bumps the major group in /libs/sdk-py with 1 update:
[websockets](https://github.com/python-websockets/websockets).

Updates `websockets` from 16.0 to 16.1.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/python-websockets/websockets/releases">websockets's
releases</a>.</em></p>
<blockquote>
<h2>16.1.1</h2>
<p>See <a
href="https://websockets.readthedocs.io/en/stable/project/changelog.html">https://websockets.readthedocs.io/en/stable/project/changelog.html</a>
for details.</p>
<h2>16.1</h2>
<p>See <a
href="https://websockets.readthedocs.io/en/stable/project/changelog.html">https://websockets.readthedocs.io/en/stable/project/changelog.html</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-websockets/websockets/commit/01df1e4e4d482cc70dfcd4a13c7bac1e956d4b9a"><code>01df1e4</code></a>
Revert &quot;Decode non-ASCII header values with iso-8859-1.&quot;</li>
<li><a
href="https://github.com/python-websockets/websockets/commit/2d61f74dcca4425b1d8563523e04d4ffaca24bbc"><code>2d61f74</code></a>
Clarify restriction on headers in 16.1.</li>
<li><a
href="https://github.com/python-websockets/websockets/commit/4df6f90d0724640275157a0fa784c234d309af82"><code>4df6f90</code></a>
Release version 16.1.</li>
<li><a
href="https://github.com/python-websockets/websockets/commit/7c69ecac884abd8d70a9bcc22ef0bf0b950101d1"><code>7c69eca</code></a>
Increase timeout for building wheels.</li>
<li><a
href="https://github.com/python-websockets/websockets/commit/493864e58462138345675d9875e096c40072dd11"><code>493864e</code></a>
Complete and review changelog.</li>
<li><a
href="https://github.com/python-websockets/websockets/commit/73ff538bd7df88a08e982cd64a2ccbdfee74de6d"><code>73ff538</code></a>
Temporarily remove the trio implementation (again).</li>
<li><a
href="https://github.com/python-websockets/websockets/commit/77f7d71870544e09e35795a8a6f48005abcb2a4b"><code>77f7d71</code></a>
Shorten changelog and docstring for previous commit.</li>
<li><a
href="https://github.com/python-websockets/websockets/commit/84859e19dd2ab3d0d482cd251518872dd604a302"><code>84859e1</code></a>
Add text argument to broadcast() to force the frame type</li>
<li><a
href="https://github.com/python-websockets/websockets/commit/1a38f5a55b82b2883cd4e0ee09c57491e85c969c"><code>1a38f5a</code></a>
Document research on removing a workaround.</li>
<li><a
href="https://github.com/python-websockets/websockets/commit/99431eea503c70b57412fbeda43481d3081d6037"><code>99431ee</code></a>
Apply code style to docs/conf.py.</li>
<li>Additional commits viewable in <a
href="https://github.com/python-websockets/websockets/compare/16.0...16.1.1">compare
view</a></li>
</ul>
</details>
<br />


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

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

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

---

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

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 01:12:20 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d80317dd6c chore(deps): bump the minor-and-patch group in /libs/cli/js-monorepo-example with 6 updates (#8776)
Bumps the minor-and-patch group in /libs/cli/js-monorepo-example with 6
updates:

| Package | From | To |
| --- | --- | --- |
| [turbo](https://github.com/vercel/turborepo) | `2.10.8` | `2.10.12` |
| [eslint](https://github.com/eslint/eslint) | `10.8.0` | `10.9.1` |
|
[@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)
| `8.65.0` | `8.68.0` |
|
[@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)
| `8.65.0` | `8.68.0` |
| [@langchain/core](https://github.com/langchain-ai/langchainjs) |
`1.2.4` | `1.2.9` |
|
[@langchain/langgraph](https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core)
| `1.4.8` | `1.4.13` |

Updates `turbo` from 2.10.8 to 2.10.12
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vercel/turborepo/releases">turbo's
releases</a>.</em></p>
<blockquote>
<h2>Turborepo v2.10.12</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<h3>Changelog</h3>
<ul>
<li>chore: Release Turborepo 2.10.11 by <a
href="https://github.com/github-actions"><code>@​github-actions</code></a>[bot]
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13765">vercel/turborepo#13765</a></li>
<li>feat: Refresh documentation social cards by <a
href="https://github.com/christopherkindl"><code>@​christopherkindl</code></a>
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13764">vercel/turborepo#13764</a></li>
<li>fix: Preserve showcase logo sizes by <a
href="https://github.com/christopherkindl"><code>@​christopherkindl</code></a>
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13766">vercel/turborepo#13766</a></li>
<li>fix: Refine mobile homepage interactions by <a
href="https://github.com/christopherkindl"><code>@​christopherkindl</code></a>
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13767">vercel/turborepo#13767</a></li>
<li>fix: Align homepage KPIs to the right by <a
href="https://github.com/christopherkindl"><code>@​christopherkindl</code></a>
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13769">vercel/turborepo#13769</a></li>
<li>fix: Prevent homepage KPI overflow by <a
href="https://github.com/christopherkindl"><code>@​christopherkindl</code></a>
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13770">vercel/turborepo#13770</a></li>
<li>chore: Update Geistdocs to 1.20.4 by <a
href="https://github.com/molebox"><code>@​molebox</code></a> in <a
href="https://redirect.github.com/vercel/turborepo/pull/13771">vercel/turborepo#13771</a></li>
<li>perf: Skip unused Package Configuration <code>stat</code>s by <a
href="https://github.com/vercel-gh-bot-4"><code>@​vercel-gh-bot-4</code></a>[bot]
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13746">vercel/turborepo#13746</a></li>
<li>chore: Update with-solid example by <a
href="https://github.com/vercel-gh-bot-5"><code>@​vercel-gh-bot-5</code></a>[bot]
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13752">vercel/turborepo#13752</a></li>
<li>chore: Update with-tailwind example by <a
href="https://github.com/vercel-gh-bot-5"><code>@​vercel-gh-bot-5</code></a>[bot]
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13762">vercel/turborepo#13762</a></li>
<li>perf: Stream dry-run JSON output by <a
href="https://github.com/vercel-gh-bot-4"><code>@​vercel-gh-bot-4</code></a>[bot]
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13760">vercel/turborepo#13760</a></li>
<li>chore: Update with-ultracite example by <a
href="https://github.com/vercel-gh-bot-5"><code>@​vercel-gh-bot-5</code></a>[bot]
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13772">vercel/turborepo#13772</a></li>
<li>perf: Merge same-prefix tree-wildcard globs into one directory walk
by <a
href="https://github.com/vercel-gh-bot-5"><code>@​vercel-gh-bot-5</code></a>[bot]
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13763">vercel/turborepo#13763</a></li>
<li>chore: Update with-svelte example by <a
href="https://github.com/floriansalihovic"><code>@​floriansalihovic</code></a>
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13118">vercel/turborepo#13118</a></li>
<li>chore: Add unified agent control plane by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13757">vercel/turborepo#13757</a></li>
<li>fix: Remove incremental task caching by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13773">vercel/turborepo#13773</a></li>
<li>chore: Rename agents app to factory by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13774">vercel/turborepo#13774</a></li>
<li>chore: Update oxlint and oxfmt by <a
href="https://github.com/charpeni"><code>@​charpeni</code></a> in <a
href="https://redirect.github.com/vercel/turborepo/pull/13777">vercel/turborepo#13777</a></li>
<li>feat: Add security.txt endpoint by <a
href="https://github.com/charpeni"><code>@​charpeni</code></a> in <a
href="https://redirect.github.com/vercel/turborepo/pull/13778">vercel/turborepo#13778</a></li>
<li>feat: Redesign factory control plane by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13775">vercel/turborepo#13775</a></li>
<li>perf: Replace regex captures with hand-written parsers in berry
lockfile identifiers by <a
href="https://github.com/vercel-gh-bot-2"><code>@​vercel-gh-bot-2</code></a>[bot]
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13776">vercel/turborepo#13776</a></li>
<li>chore: Upgrade the factory eve agent to 0.39.3 by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13783">vercel/turborepo#13783</a></li>
<li>chore: Update with-rsbuild-module-federation example by <a
href="https://github.com/vercel-gh-bot-4"><code>@​vercel-gh-bot-4</code></a>[bot]
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13786">vercel/turborepo#13786</a></li>
<li>perf: Index Berry lockfile resolution overrides by dependency name
by <a
href="https://github.com/vercel-gh-bot-5"><code>@​vercel-gh-bot-5</code></a>[bot]
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13787">vercel/turborepo#13787</a></li>
<li>chore: Update remote cache action to v1.1.0 by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13789">vercel/turborepo#13789</a></li>
<li>docs: Fix reference links and validation by <a
href="https://github.com/charpeni"><code>@​charpeni</code></a> in <a
href="https://redirect.github.com/vercel/turborepo/pull/13784">vercel/turborepo#13784</a></li>
<li>feat: Add SSH command affordance for factory sandboxes by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13779">vercel/turborepo#13779</a></li>
<li>fix: Show invalid affected task glob by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13793">vercel/turborepo#13793</a></li>
<li>perf: Skip unused repository indexing for package listings by <a
href="https://github.com/vercel-gh-bot-4"><code>@​vercel-gh-bot-4</code></a>[bot]
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13792">vercel/turborepo#13792</a></li>
<li>feat: Rebuild the factory image on every merge to main by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13781">vercel/turborepo#13781</a></li>
<li>chore: Add full-page terminal SSH sessions to Factory sandbox
inventory by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13780">vercel/turborepo#13780</a></li>
<li>chore: Update with-shell-commands example by <a
href="https://github.com/vercel-gh-bot-4"><code>@​vercel-gh-bot-4</code></a>[bot]
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13791">vercel/turborepo#13791</a></li>
<li>chore: Allow SSH terminal for completed-run sandboxes in Factory by
<a href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a>
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13782">vercel/turborepo#13782</a></li>
<li>fix: Decouple graceful shutdown tests from the shell commands
example by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13799">vercel/turborepo#13799</a></li>
<li>feat: Start ad-hoc factory work from the operator page by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13798">vercel/turborepo#13798</a></li>
<li>chore: Update with-solid example by <a
href="https://github.com/vercel-gh-bot-4"><code>@​vercel-gh-bot-4</code></a>[bot]
in <a
href="https://redirect.github.com/vercel/turborepo/pull/13797">vercel/turborepo#13797</a></li>
<li>fix: Rebuild factory images without custom workflows by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13801">vercel/turborepo#13801</a></li>
<li>feat: Add factory navigation by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13802">vercel/turborepo#13802</a></li>
<li>refactor: Migrate Factory styles to Tailwind by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13803">vercel/turborepo#13803</a></li>
<li>feat: Add durable Factory workspaces by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13804">vercel/turborepo#13804</a></li>
<li>feat: Stream Factory sandbox as terminal by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13807">vercel/turborepo#13807</a></li>
<li>fix: Restore Factory workspace creation by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13812">vercel/turborepo#13812</a></li>
<li>fix: Update Factory session network policy by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13814">vercel/turborepo#13814</a></li>
<li>fix: Improve Factory terminal line spacing by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13815">vercel/turborepo#13815</a></li>
<li>fix: Install Factory publishing skill by <a
href="https://github.com/anthonyshew"><code>@​anthonyshew</code></a> in
<a
href="https://redirect.github.com/vercel/turborepo/pull/13817">vercel/turborepo#13817</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vercel/turborepo/commit/53752d452049bdda47698354b16a83d7ce92ced0"><code>53752d4</code></a>
publish 2.10.12 to registry</li>
<li><a
href="https://github.com/vercel/turborepo/commit/9d2b03bc946008c4dc528b51d6c080139cde859b"><code>9d2b03b</code></a>
fix: Run pnpm directly on Windows (<a
href="https://redirect.github.com/vercel/turborepo/issues/13843">#13843</a>)</li>
<li><a
href="https://github.com/vercel/turborepo/commit/c97782bc4ef43697e0ee8c4fc7ad3cee81a0e1cf"><code>c97782b</code></a>
feat: Require high confidence for issue fixes (<a
href="https://redirect.github.com/vercel/turborepo/issues/13842">#13842</a>)</li>
<li><a
href="https://github.com/vercel/turborepo/commit/f153cda4cee5b9cce11108283b9911253687bc53"><code>f153cda</code></a>
chore: Alert Slack for low-confidence issues (<a
href="https://redirect.github.com/vercel/turborepo/issues/13841">#13841</a>)</li>
<li><a
href="https://github.com/vercel/turborepo/commit/e1674e42513a1fffcf7e3a8a13e7f8bdd2f6043f"><code>e1674e4</code></a>
chore: Add automatic issue handling (<a
href="https://redirect.github.com/vercel/turborepo/issues/13840">#13840</a>)</li>
<li><a
href="https://github.com/vercel/turborepo/commit/7107f266c69f097abc888372c1bddacf647e0bce"><code>7107f26</code></a>
fix: Escape ampersands in RSS feed enclosure URLs (<a
href="https://redirect.github.com/vercel/turborepo/issues/13839">#13839</a>)</li>
<li><a
href="https://github.com/vercel/turborepo/commit/a76330b6ec70c64dbc3c2ad8fef7fe8a732fe0cd"><code>a76330b</code></a>
chore: Handle feedback on Factory pull requests (<a
href="https://redirect.github.com/vercel/turborepo/issues/13836">#13836</a>)</li>
<li><a
href="https://github.com/vercel/turborepo/commit/3787c061d3d22d5c5134bf89c5704b97c3bffb24"><code>3787c06</code></a>
chore: Use geistdocs 1.23.1 (<a
href="https://redirect.github.com/vercel/turborepo/issues/13834">#13834</a>)</li>
<li><a
href="https://github.com/vercel/turborepo/commit/bbe5406a1a7704cee63daf2af8ae98479c56fbad"><code>bbe5406</code></a>
chore: Skip redundant Factory PR approval (<a
href="https://redirect.github.com/vercel/turborepo/issues/13837">#13837</a>)</li>
<li><a
href="https://github.com/vercel/turborepo/commit/72805d7508ee3661826d452cead2458dec8ff345"><code>72805d7</code></a>
fix: Move model selector to workspace creation (<a
href="https://redirect.github.com/vercel/turborepo/issues/13835">#13835</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/vercel/turborepo/compare/v2.10.8...v2.10.12">compare
view</a></li>
</ul>
</details>
<br />

Updates `eslint` from 10.8.0 to 10.9.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/eslint/eslint/releases">eslint's
releases</a>.</em></p>
<blockquote>
<h2>v10.9.1</h2>
<h2>Bug Fixes</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/1e641c919fc1421493bf913feb607896982451a3"><code>1e641c9</code></a>
fix: no-loss-of-precision false positive with trailing decimal point (<a
href="https://redirect.github.com/eslint/eslint/issues/21251">#21251</a>)
(Aleksandr Shoronov)</li>
</ul>
<h2>Documentation</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/ad74a8dada2aaa17bfd0b8cc7b4119ff7a8ac04b"><code>ad74a8d</code></a>
docs: add deprecation steps for EOL package versions (<a
href="https://redirect.github.com/eslint/eslint/issues/21248">#21248</a>)
(Francesco Trotta)</li>
</ul>
<h2>Chores</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/3c3ae53a43721162f0db76c69665ebd9d752ea52"><code>3c3ae53</code></a>
chore: update ecosystem plugins (<a
href="https://redirect.github.com/eslint/eslint/issues/21249">#21249</a>)
(ESLint Bot)</li>
</ul>
<h2>v10.9.0</h2>
<h2>Features</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/08de88e50294c4e01f6cae97eceeb578da55792b"><code>08de88e</code></a>
feat: handle underflow in no-loss-of-precision (<a
href="https://redirect.github.com/eslint/eslint/issues/21218">#21218</a>)
(Rithish S)</li>
<li><a
href="https://github.com/eslint/eslint/commit/55db4791120ae591d88089c43127b7b0e16866d4"><code>55db479</code></a>
feat: add checkConditionalExpressions to
<code>no-unmodified-loop-condition</code> (<a
href="https://redirect.github.com/eslint/eslint/issues/21175">#21175</a>)
(sethamus)</li>
</ul>
<h2>Bug Fixes</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/2ba302554e7a24e9909bbdd026fd0c2d1d0d8638"><code>2ba3025</code></a>
fix: prevent unsafe <code>no-var</code> autofix with hoisted functions
(<a
href="https://redirect.github.com/eslint/eslint/issues/21213">#21213</a>)
(sethamus)</li>
<li><a
href="https://github.com/eslint/eslint/commit/8e6962219a605c5f5add10953aa31027da839194"><code>8e69622</code></a>
fix: Prevent no-var autofix when var is shadowed by catch parameter (<a
href="https://redirect.github.com/eslint/eslint/issues/21204">#21204</a>)
(Yang Hyeonjong)</li>
<li><a
href="https://github.com/eslint/eslint/commit/684b57972e1ddf25e076fb36189c60bbcacee635"><code>684b579</code></a>
fix: prefer-template invalid autofix creates a tagged template call (<a
href="https://redirect.github.com/eslint/eslint/issues/21207">#21207</a>)
(김채영)</li>
</ul>
<h2>Documentation</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/9ef407a3b051e74f50dc7fb8914e2bd89b3e5e53"><code>9ef407a</code></a>
docs: use eslint.config.* wherever config file names are listed (<a
href="https://redirect.github.com/eslint/eslint/issues/21216">#21216</a>)
(Marry (Subin Yang))</li>
<li><a
href="https://github.com/eslint/eslint/commit/87f66f4435c4df7f4f6815c939d153196ec03e3c"><code>87f66f4</code></a>
docs: Update README (GitHub Actions Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/585ef37516c0dc29ddb91ce2a2cdcc46fdbbd610"><code>585ef37</code></a>
docs: update architecture documentation (<a
href="https://redirect.github.com/eslint/eslint/issues/21112">#21112</a>)
(Francesco Trotta)</li>
<li><a
href="https://github.com/eslint/eslint/commit/f3993b0547bace7370e9728ee7408af49d367d76"><code>f3993b0</code></a>
docs: Update README (GitHub Actions Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/ffc87d6234b2aa4335eec069e5c4d6ac04832b9e"><code>ffc87d6</code></a>
docs: fix broken links in Further Reading sections (<a
href="https://redirect.github.com/eslint/eslint/issues/21203">#21203</a>)
(Minsu)</li>
<li><a
href="https://github.com/eslint/eslint/commit/1a761e1d11b011fcb6bee181231a51010c500e4d"><code>1a761e1</code></a>
docs: update moved JSX specification links (<a
href="https://redirect.github.com/eslint/eslint/issues/21198">#21198</a>)
(Imran Mustafa)</li>
<li><a
href="https://github.com/eslint/eslint/commit/4d00ca4064ae0d1a75b604a16c68ab9f386ad388"><code>4d00ca4</code></a>
docs: update ESLint peer dependency to <code>^10.0.0</code> in shareable
configs (<a
href="https://redirect.github.com/eslint/eslint/issues/21202">#21202</a>)
(lumir)</li>
<li><a
href="https://github.com/eslint/eslint/commit/510d1a2e87bc197219f42e195ddb638d2b183a5a"><code>510d1a2</code></a>
docs: Update README (GitHub Actions Bot)</li>
</ul>
<h2>Chores</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/899dbf131ce12a194b394bb8d67307df23509d17"><code>899dbf1</code></a>
chore: update github/codeql-action action to v4.37.7 (<a
href="https://redirect.github.com/eslint/eslint/issues/21243">#21243</a>)
(renovate[bot])</li>
<li><a
href="https://github.com/eslint/eslint/commit/9aa38732177935bd1d7f1493732c0b67666be28a"><code>9aa3873</code></a>
chore: update ecosystem plugins (<a
href="https://redirect.github.com/eslint/eslint/issues/21235">#21235</a>)
(ESLint Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/dc1e7a8416937edefe04cf836ee202a6fc03bedd"><code>dc1e7a8</code></a>
chore: update ecosystem plugins (<a
href="https://redirect.github.com/eslint/eslint/issues/21208">#21208</a>)
(ESLint Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/f878d212e9622da9513bcd60d2aedb2e8bb4fc8b"><code>f878d21</code></a>
ci: bump pnpm/action-setup from 6.0.9 to 6.0.10 (<a
href="https://redirect.github.com/eslint/eslint/issues/21200">#21200</a>)
(dependabot[bot])</li>
<li><a
href="https://github.com/eslint/eslint/commit/4891e50aceadb0e886ad7d8ab5ae2beab563de85"><code>4891e50</code></a>
ci: bump github/codeql-action from 4.37.4 to 4.37.6 (<a
href="https://redirect.github.com/eslint/eslint/issues/21199">#21199</a>)
(dependabot[bot])</li>
</ul>
<h2>v10.8.1</h2>
<h2>Bug Fixes</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/18eb0a7e787b9fac3049ef3dad0e845d2bd940a4"><code>18eb0a7</code></a>
fix: prevent ASI hazard in <code>no-unused-labels</code> autofix (<a
href="https://redirect.github.com/eslint/eslint/issues/21173">#21173</a>)
(dongkyu lee)</li>
<li><a
href="https://github.com/eslint/eslint/commit/151ba3f5834a0909e8b9b1736f4889ac694c0104"><code>151ba3f</code></a>
fix: false positives in <code>getter-return</code> and
<code>accessor-pairs</code> (<a
href="https://redirect.github.com/eslint/eslint/issues/21163">#21163</a>)
(Grit)</li>
<li><a
href="https://github.com/eslint/eslint/commit/6898df9364639ee64b9448a4cb6b08a30c16bd37"><code>6898df9</code></a>
fix: ignore meta-property names in <code>id-denylist</code> (<a
href="https://redirect.github.com/eslint/eslint/issues/21166">#21166</a>)
(Pixel)</li>
<li><a
href="https://github.com/eslint/eslint/commit/4d7db6628e2badf0857cb88734fe641c3874bce9"><code>4d7db66</code></a>
fix: ignore meta-property names in <code>id-match</code> (<a
href="https://redirect.github.com/eslint/eslint/issues/21167">#21167</a>)
(Pixel)</li>
<li><a
href="https://github.com/eslint/eslint/commit/677214e7eea83d8bc6e4b79eea871577e1369d5f"><code>677214e</code></a>
fix: handle ASI hazards in no-unused-vars removeVar suggestion (<a
href="https://redirect.github.com/eslint/eslint/issues/20935">#20935</a>)
(kuldeep kumar)</li>
</ul>
<h2>Documentation</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/7d0cbf81cfdb7526b5c4cb7b222ddc7f257db560"><code>7d0cbf8</code></a>
docs: Update README (GitHub Actions Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/0a05812adb12598b32e85297b98df5ad14501d60"><code>0a05812</code></a>
docs: add missing backticks to <code>no-duplicate-imports.js</code> (<a
href="https://redirect.github.com/eslint/eslint/issues/21183">#21183</a>)
(Lee Daeun)</li>
<li><a
href="https://github.com/eslint/eslint/commit/678c90b55da2889d4400cbf6e2584ab683faf202"><code>678c90b</code></a>
docs: Update README (GitHub Actions Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/8a104242e8e1c5614940fab7324346974cff7d26"><code>8a10424</code></a>
docs: Update README (GitHub Actions Bot)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/5c8c2417b9ff462f2dc4e54a062c59135b45b845"><code>5c8c241</code></a>
10.9.1</li>
<li><a
href="https://github.com/eslint/eslint/commit/a7f3b7ddca7de8464995707d1bbac3ca91090015"><code>a7f3b7d</code></a>
Build: changelog update for 10.9.1</li>
<li><a
href="https://github.com/eslint/eslint/commit/1e641c919fc1421493bf913feb607896982451a3"><code>1e641c9</code></a>
fix: no-loss-of-precision false positive with trailing decimal point (<a
href="https://redirect.github.com/eslint/eslint/issues/21251">#21251</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/ad74a8dada2aaa17bfd0b8cc7b4119ff7a8ac04b"><code>ad74a8d</code></a>
docs: add deprecation steps for EOL package versions (<a
href="https://redirect.github.com/eslint/eslint/issues/21248">#21248</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/3c3ae53a43721162f0db76c69665ebd9d752ea52"><code>3c3ae53</code></a>
chore: update ecosystem plugins (<a
href="https://redirect.github.com/eslint/eslint/issues/21249">#21249</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/c27bc926e496985eb7911c09eb60914b2e4b5d0f"><code>c27bc92</code></a>
10.9.0</li>
<li><a
href="https://github.com/eslint/eslint/commit/fa831d95b326e6d23671d9b2df1ea5dbc64f6f34"><code>fa831d9</code></a>
Build: changelog update for 10.9.0</li>
<li><a
href="https://github.com/eslint/eslint/commit/899dbf131ce12a194b394bb8d67307df23509d17"><code>899dbf1</code></a>
chore: update github/codeql-action action to v4.37.7 (<a
href="https://redirect.github.com/eslint/eslint/issues/21243">#21243</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/08de88e50294c4e01f6cae97eceeb578da55792b"><code>08de88e</code></a>
feat: handle underflow in no-loss-of-precision (<a
href="https://redirect.github.com/eslint/eslint/issues/21218">#21218</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/9ef407a3b051e74f50dc7fb8914e2bd89b3e5e53"><code>9ef407a</code></a>
docs: use eslint.config.* wherever config file names are listed (<a
href="https://redirect.github.com/eslint/eslint/issues/21216">#21216</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/eslint/eslint/compare/v10.8.0...v10.9.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `@typescript-eslint/eslint-plugin` from 8.65.0 to 8.68.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/releases">@​typescript-eslint/eslint-plugin's
releases</a>.</em></p>
<blockquote>
<h2>v8.68.0</h2>
<h2>8.68.0 (2026-08-24)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> [strict-void-return] add fix
suggestions (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12086">#12086</a>)</li>
<li><strong>utils:</strong> support ESLint rule meta.languages (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12663">#12663</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [unified-signatures] deduplicate
types in report (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12656">#12656</a>)</li>
<li><strong>eslint-plugin:</strong> [return-await] prevent autofix from
breaking code in arrow-functions (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12707">#12707</a>)</li>
<li><strong>eslint-plugin:</strong> [unified-signatures] report
identical signatures (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12678">#12678</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion]
prevent stack overflow in recursive types (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12711">#12711</a>)</li>
<li><strong>eslint-plugin:</strong> [no-floating-promises] setting
<code>ignoreVoid: false</code> results in false negative in
ArrowFunctionExpression (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12646">#12646</a>)</li>
<li><strong>eslint-plugin:</strong> [no-empty-object-type] ignore
suggestions that result in invalid interfaces and export defaults (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12739">#12739</a>)</li>
<li><strong>website:</strong> playground crashes on <code>extends</code>
configs (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12608">#12608</a>)</li>
<li><strong>website:</strong> account for thanks.dev and out-of-band
donors in sponsors list (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12735">#12735</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Hugo <a
href="https://github.com/hugop95"><code>@​hugop95</code></a></li>
<li>Josh Goldberg </li>
<li>Niki <a
href="https://github.com/phaux"><code>@​phaux</code></a></li>
<li>Thiago Barbosa</li>
<li>Younsang Na <a
href="https://github.com/nayounsang"><code>@​nayounsang</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.68.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>v8.67.0</h2>
<h2>8.67.0 (2026-08-10)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>typescript-eslint:</strong> export basic globs for using
tseslint (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12105">#12105</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Josh Goldberg </li>
<li>Kirk Waiblinger <a
href="https://github.com/kirkwaiblinger"><code>@​kirkwaiblinger</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.67.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>v8.66.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md">@​typescript-eslint/eslint-plugin's
changelog</a>.</em></p>
<blockquote>
<h2>8.68.0 (2026-08-24)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> [strict-void-return] add fix
suggestions (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12086">#12086</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-empty-object-type] ignore
suggestions that result in invalid interfaces and export defaults (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12739">#12739</a>)</li>
<li><strong>eslint-plugin:</strong> [no-floating-promises] setting
<code>ignoreVoid: false</code> results in false negative in
ArrowFunctionExpression (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12646">#12646</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion]
prevent stack overflow in recursive types (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12711">#12711</a>)</li>
<li><strong>eslint-plugin:</strong> [unified-signatures] report
identical signatures (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12678">#12678</a>)</li>
<li><strong>eslint-plugin:</strong> [return-await] prevent autofix from
breaking code in arrow-functions (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12707">#12707</a>)</li>
<li><strong>eslint-plugin:</strong> [unified-signatures] deduplicate
types in report (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12656">#12656</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Hugo <a
href="https://github.com/hugop95"><code>@​hugop95</code></a></li>
<li>Niki <a
href="https://github.com/phaux"><code>@​phaux</code></a></li>
<li>Younsang Na <a
href="https://github.com/nayounsang"><code>@​nayounsang</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.68.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>8.67.0 (2026-08-10)</h2>
<p>This was a version bump only for eslint-plugin to align it with other
projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.67.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>8.66.0 (2026-08-03)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [class-literal-property-style]
preserve type annotations and don't drop decorators (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12617">#12617</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-parameters]
check MappedType key remapping (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12588">#12588</a>)</li>
<li><strong>eslint-plugin:</strong> [no-useless-default-assignment]
don't report defaults used by other overloads (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12607">#12607</a>)</li>
<li><strong>eslint-plugin:</strong> [prefer-nullish-coalescing] handle
shadowed Boolean calls (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12591">#12591</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-conversion]
ignore shadowed built-ins (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12590">#12590</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>송재욱</li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.66.0">GitHub
Releases</a> for more information.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/8f4e00a4e8f3bdf93a5e5e8bc568ba1c15a4f896"><code>8f4e00a</code></a>
chore(release): publish 8.68.0</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/db30514e0f912dad32417a8e165bb9cce6f6a9d0"><code>db30514</code></a>
feat(eslint-plugin): [strict-void-return] add fix suggestions (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12086">#12086</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/9690339c4e50e65121fdd7d1eb55c5831460cd88"><code>9690339</code></a>
test(eslint-plugin): [prefer-optional-chain] use
<code>createRuleTesterWithTypes</code> ...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/abe9011a43524ea867e249125250d0927065750e"><code>abe9011</code></a>
fix(eslint-plugin): [no-empty-object-type] ignore suggestions that
result in ...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/79c16e784056ed9d6fea92268f036c18f46530ff"><code>79c16e7</code></a>
chore(eslint-plugin): extract FunctionSignature and enum comparison
utils (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/1">#1</a>...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/2442e3048ba5a120a5e7dff5450fb5c440c0fc15"><code>2442e30</code></a>
test(eslint-plugin): [no-floating-promises] format test snippets (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12723">#12723</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/3596323c63dc92b9a8858992b66afa65642a69ca"><code>3596323</code></a>
fix(eslint-plugin): [no-floating-promises] setting <code>ignoreVoid:
false</code> result...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/956a3397d9e1c4aacd55f70bf0210e15ba005508"><code>956a339</code></a>
fix(eslint-plugin): [no-unnecessary-type-assertion] prevent stack
overflow in...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/55f6d5d4ca39d2fab93db97ced497b956017878d"><code>55f6d5d</code></a>
chore: enable source maps (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12677">#12677</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/3aefb6a27d4a7f4c5e30486cba31e6f567966aae"><code>3aefb6a</code></a>
test: improve vitest performance with <code>isolate: false</code> (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12703">#12703</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.68.0/packages/eslint-plugin">compare
view</a></li>
</ul>
</details>
<br />

Updates `@typescript-eslint/parser` from 8.65.0 to 8.68.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/releases">@​typescript-eslint/parser's
releases</a>.</em></p>
<blockquote>
<h2>v8.68.0</h2>
<h2>8.68.0 (2026-08-24)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> [strict-void-return] add fix
suggestions (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12086">#12086</a>)</li>
<li><strong>utils:</strong> support ESLint rule meta.languages (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12663">#12663</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [unified-signatures] deduplicate
types in report (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12656">#12656</a>)</li>
<li><strong>eslint-plugin:</strong> [return-await] prevent autofix from
breaking code in arrow-functions (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12707">#12707</a>)</li>
<li><strong>eslint-plugin:</strong> [unified-signatures] report
identical signatures (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12678">#12678</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion]
prevent stack overflow in recursive types (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12711">#12711</a>)</li>
<li><strong>eslint-plugin:</strong> [no-floating-promises] setting
<code>ignoreVoid: false</code> results in false negative in
ArrowFunctionExpression (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12646">#12646</a>)</li>
<li><strong>eslint-plugin:</strong> [no-empty-object-type] ignore
suggestions that result in invalid interfaces and export defaults (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12739">#12739</a>)</li>
<li><strong>website:</strong> playground crashes on <code>extends</code>
configs (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12608">#12608</a>)</li>
<li><strong>website:</strong> account for thanks.dev and out-of-band
donors in sponsors list (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12735">#12735</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Hugo <a
href="https://github.com/hugop95"><code>@​hugop95</code></a></li>
<li>Josh Goldberg </li>
<li>Niki <a
href="https://github.com/phaux"><code>@​phaux</code></a></li>
<li>Thiago Barbosa</li>
<li>Younsang Na <a
href="https://github.com/nayounsang"><code>@​nayounsang</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.68.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>v8.67.0</h2>
<h2>8.67.0 (2026-08-10)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>typescript-eslint:</strong> export basic globs for using
tseslint (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12105">#12105</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Josh Goldberg </li>
<li>Kirk Waiblinger <a
href="https://github.com/kirkwaiblinger"><code>@​kirkwaiblinger</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.67.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>v8.66.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md">@​typescript-eslint/parser's
changelog</a>.</em></p>
<blockquote>
<h2>8.68.0 (2026-08-24)</h2>
<p>This was a version bump only for parser to align it with other
projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.68.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>8.67.0 (2026-08-10)</h2>
<p>This was a version bump only for parser to align it with other
projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.67.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>8.66.0 (2026-08-03)</h2>
<p>This was a version bump only for parser to align it with other
projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.66.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/8f4e00a4e8f3bdf93a5e5e8bc568ba1c15a4f896"><code>8f4e00a</code></a>
chore(release): publish 8.68.0</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/55f6d5d4ca39d2fab93db97ced497b956017878d"><code>55f6d5d</code></a>
chore: enable source maps (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser/issues/12677">#12677</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/20a261fb8e62351e88176b075090dc9276d26072"><code>20a261f</code></a>
chore(release): publish 8.67.0</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/3b155bb1344fd7ce83086cf2f864a7e8f3b4a217"><code>3b155bb</code></a>
chore: use typescript 7 for typechecking (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser/issues/12601">#12601</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/e51b11ba3ab31837762c675f62f0d4dcb1abc4fb"><code>e51b11b</code></a>
chore(release): publish 8.66.0</li>
<li>See full diff in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.68.0/packages/parser">compare
view</a></li>
</ul>
</details>
<br />

Updates `@langchain/core` from 1.2.4 to 1.2.9
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langchainjs/releases">@​langchain/core's
releases</a>.</em></p>
<blockquote>
<h2><code>@​langchain/core</code><a
href="https://github.com/1"><code>@​1</code></a>.2.9</h2>
<h3>Patch Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/langchain-ai/langchainjs/pull/11402">#11402</a>
<a
href="https://github.com/langchain-ai/langchainjs/commit/43e439698fa7794c10ab8d7355d4433e058e4d62"><code>43e4396</code></a>
Thanks <a
href="https://github.com/thushanth-bengre-langchain"><code>@​thushanth-bengre-langchain</code></a>!
- Fix ChatVertexAI/ChatGoogle content blocks: include
<code>tool_call</code> blocks from <code>message.tool_calls</code> and
skip spurious empty <code>text</code> blocks in
<code>contentBlocks</code>.</li>
</ul>
<h2><code>@​langchain/core</code><a
href="https://github.com/1"><code>@​1</code></a>.2.8</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langchainjs/pull/11369">#11369</a>
<a
href="https://github.com/langchain-ai/langchainjs/commit/d6ad9735640a6c729f81ef79361acc5e83c526f1"><code>d6ad973</code></a>
Thanks <a href="https://github.com/hntrl"><code>@​hntrl</code></a>! -
fix(langchain): use unified endpoint for gateway</p>
</li>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langchainjs/pull/11342">#11342</a>
<a
href="https://github.com/langchain-ai/langchainjs/commit/3b0e4c48a31811031a460c4d95519a7c1163dc41"><code>3b0e4c4</code></a>
Thanks <a
href="https://github.com/thushanth-bengre-langchain"><code>@​thushanth-bengre-langchain</code></a>!
- feat(core): mark errors as retryable or not, and stop retrying the
ones that aren't</p>
<p>Retry middleware retried every failure up to <code>maxRetries</code>,
including deterministic ones like a bad API key or an unknown model.
Retries also nest, so a single such failure could cost dozens of API
calls.</p>
<p><code>@langchain/core/errors</code> adds <code>stampRetryable(error,
retryable)</code> and <code>getRetryable(error)</code>. Marking an error
leaves its class and shape untouched, so a provider SDK error can be
classified without breaking <code>instanceof</code>.
<code>getRetryable</code> returns <code>undefined</code> for errors
nobody classified, and both are exported so tool authors can mark their
own failures.</p>
<p><code>modelRetryMiddleware</code> and
<code>toolRetryMiddleware</code> now respect the mark by default, and
retries stop as soon as one is found rather than each layer spending its
own budget. Aborted calls, context overflow, and oversized payloads are
marked non-retryable out of the box.
Models accept a per-call <code>maxRetries</code> so a surrounding retry
loop can take over.</p>
<p><strong>Behavior change:</strong> errors marked non-retryable now
fail on the first attempt. Unclassified errors — including any from
third-party integrations or custom tools — retry exactly as before. Pass
<code>retryOn: () =&gt; true</code> to restore the old default. A custom
<code>onFailedAttempt</code> replaces the built-in handler and opts out
of marking.</p>
</li>
</ul>
<h2><code>@​langchain/core</code><a
href="https://github.com/1"><code>@​1</code></a>.2.7</h2>
<h3>Patch Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/langchain-ai/langchainjs/pull/11366">#11366</a>
<a
href="https://github.com/langchain-ai/langchainjs/commit/c068bbf8c113132bf16ac7a8add44e486a147b41"><code>c068bbf</code></a>
Thanks <a href="https://github.com/hntrl"><code>@​hntrl</code></a>! -
fix(core,langchain): patch and release core, update peer
dependencies</li>
</ul>
<h2><code>@​langchain/core</code><a
href="https://github.com/1"><code>@​1</code></a>.2.6</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langchainjs/pull/11344">#11344</a>
<a
href="https://github.com/langchain-ai/langchainjs/commit/f08e0c6d50156accf95a36469a3e107a5598a3a0"><code>f08e0c6</code></a>
Thanks <a href="https://github.com/hntrl"><code>@​hntrl</code></a>! -
fix: apply [Symbol.hasInstance] method to all comparable properties
using .isInstance()</p>
<p>We have some internal schemas that rely on
<code>z.instanceof()</code>. This uses a strict <code>instanceof</code>
check which can conflict if there are multiple versions of core
installed. This overrides the <a
href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance">Symbol.hasInstance</a>
method to use the same logic as <code>.isInstance()</code> to compare
objects at runtime.</p>
</li>
</ul>
<h2><code>@​langchain/core</code><a
href="https://github.com/1"><code>@​1</code></a>.2.5</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langchainjs/pull/11305">#11305</a>
<a
href="https://github.com/langchain-ai/langchainjs/commit/e654022e291b8dae54504ac2d1a3232332406723"><code>e654022</code></a>
Thanks <a
href="https://github.com/jacoblee93"><code>@​jacoblee93</code></a>! -
Add LangSmith Gateway environment configuration to OpenAI, Anthropic,
and Fireworks chat models.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langchainjs/pull/11295">#11295</a>
<a
href="https://github.com/langchain-ai/langchainjs/commit/1a1b347d18bc68e842df8badffc987493c81d70a"><code>1a1b347</code></a>
Thanks <a
href="https://github.com/vladislav-nechakhin"><code>@​vladislav-nechakhin</code></a>!
- fix(core): pass the mustache escape override per render call</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/e493ed653d734e31a8d051f78ab29b067f530e4b"><code>e493ed6</code></a>
chore: version packages (<a
href="https://redirect.github.com/langchain-ai/langchainjs/issues/11393">#11393</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/83848481ea27502c4221a01b4c55a87f1fa7c472"><code>8384848</code></a>
fix(google-common): release endpoint routing fix as patch (<a
href="https://redirect.github.com/langchain-ai/langchainjs/issues/11413">#11413</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/8cfff4dced1327fc87893a86dfc63c553403aec0"><code>8cfff4d</code></a>
feat(google): add gateway support for genai (<a
href="https://redirect.github.com/langchain-ai/langchainjs/issues/11405">#11405</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/7df258c0af8362fede14d42bb982597a56f41b78"><code>7df258c</code></a>
chore(langchain): update langgraph deps (<a
href="https://redirect.github.com/langchain-ai/langchainjs/issues/11412">#11412</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/3ceef4baadfaec8f0b1e43191b9363cfcc04187f"><code>3ceef4b</code></a>
fix(anthropic): round-trip tool search server-tool result blocks (<a
href="https://redirect.github.com/langchain-ai/langchainjs/issues/11407">#11407</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/fe8eec1915cc5580b8e7a2f3d4f68fe5e577d641"><code>fe8eec1</code></a>
fix(openai): drop Gemini functionCall content blocks in Chat Completions
mess...</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/0e7c7654c8bd84b80fe9a2495ab2703355ff8c1e"><code>0e7c765</code></a>
fix(google-genai): throw ContentBlockedError when Gemini candidate has
no con...</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/5c9fdf2f0339deb92db84eaa838cf35c7dcdb027"><code>5c9fdf2</code></a>
fix(openai): retain cache_write_tokens, update to v7 sdk (<a
href="https://redirect.github.com/langchain-ai/langchainjs/issues/11399">#11399</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/5ff9179e25f594d7cd21e176fdadd953190375c5"><code>5ff9179</code></a>
fix(google-genai): guard streaming chunks when candidate has no content
(<a
href="https://redirect.github.com/langchain-ai/langchainjs/issues/10742">#10742</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/43e439698fa7794c10ab8d7355d4433e058e4d62"><code>43e4396</code></a>
fix(core): include tool_call blocks and skip empty text blocks in
ChatVertexA...</li>
<li>Additional commits viewable in <a
href="https://github.com/langchain-ai/langchainjs/compare/@langchain/core@1.2.4...@langchain/core@1.2.9">compare
view</a></li>
</ul>
</details>
<br />

Updates `@langchain/langgraph` from 1.4.8 to 1.4.13
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langgraphjs/releases">@​langchain/langgraph's
releases</a>.</em></p>
<blockquote>
<h2><code>@​langchain/langgraph</code><a
href="https://github.com/1"><code>@​1</code></a>.4.13</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a
href="https://github.com/langchain-ai/langgraphjs/commit/f8bdf16d4fe23a79e945ea5dc6f86bbf09abb77d"><code>f8bdf16</code></a>,
<a
href="https://github.com/langchain-ai/langgraphjs/commit/cef10ab35cefea12c36a8864cdf12f51c7553975"><code>cef10ab</code></a>]:
<ul>
<li><code>@​langchain/langgraph-sdk</code><a
href="https://github.com/1"><code>@​1</code></a>.10.0</li>
</ul>
</li>
</ul>
<h2><code>@​langchain/langgraph</code><a
href="https://github.com/1"><code>@​1</code></a>.4.12</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2714">#2714</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/a2a59ec6f8fdd93d4520d86fceab8a234dacf978"><code>a2a59ec</code></a>
Thanks <a href="https://github.com/hntrl"><code>@​hntrl</code></a>! -
Update checkpoint integrations to require the patched checkpoint
serializer release.</p>
</li>
<li>
<p>Updated dependencies [<a
href="https://github.com/langchain-ai/langgraphjs/commit/a2a59ec6f8fdd93d4520d86fceab8a234dacf978"><code>a2a59ec</code></a>]:</p>
<ul>
<li><code>@​langchain/langgraph-checkpoint</code><a
href="https://github.com/1"><code>@​1</code></a>.1.5</li>
</ul>
</li>
</ul>
<h2><code>@​langchain/langgraph</code><a
href="https://github.com/1"><code>@​1</code></a>.4.11</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2706">#2706</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/eaa5472fa480fad2671659d1c9ed0686a55d42bd"><code>eaa5472</code></a>
Thanks <a
href="https://github.com/zduric-langchain"><code>@​zduric-langchain</code></a>!
- fix(langgraph): dedupe merged callback handlers by identity</p>
<p><code>mergeCallbacks</code> concatenated <code>handlers</code> and
<code>inheritableHandlers</code> while
deduping <code>tags</code>, so a handler inherited by both the ambient
and the explicit
config picked up an extra registration at every graph boundary. With
tracing
on, a nested <code>streamMode: &quot;messages&quot;</code> run delivered
every token twice.</p>
</li>
<li>
<p>Updated dependencies [<a
href="https://github.com/langchain-ai/langgraphjs/commit/3ce9f8d11dd64b1d091a25162603c49e6f4a426f"><code>3ce9f8d</code></a>,
<a
href="https://github.com/langchain-ai/langgraphjs/commit/51b42020f7c730a15193aa907056881e3d961924"><code>51b4202</code></a>,
<a
href="https://github.com/langchain-ai/langgraphjs/commit/a86f813954e010fbf30711c37baa5c53444613d5"><code>a86f813</code></a>]:</p>
<ul>
<li><code>@​langchain/langgraph-sdk</code><a
href="https://github.com/1"><code>@​1</code></a>.9.30</li>
</ul>
</li>
</ul>
<h2><code>@​langchain/langgraph</code><a
href="https://github.com/1"><code>@​1</code></a>.4.10</h2>
<h3>Patch Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2690">#2690</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/00f68a1b002d820b95129bcdaf387d2678ead6f0"><code>00f68a1</code></a>
Thanks <a
href="https://github.com/saad-supports-langchain"><code>@​saad-supports-langchain</code></a>!
- fix(langgraph): keep <code>context</code> values out of tracer-derived
metadata</li>
</ul>
<h2><code>@​langchain/langgraph</code><a
href="https://github.com/1"><code>@​1</code></a>.4.9</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2653">#2653</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/7880055ac7303483e424380cdd52f54cd094e311"><code>7880055</code></a>
Thanks <a
href="https://github.com/christian-bromann"><code>@​christian-bromann</code></a>!
- fix(langgraph): checkpoint Topic as a flat values list</p>
<p>Match Python Topic checkpoints so Host JS graphs no longer put
<code>__pregel_tasks: [[], []]</code> through the Python checkpointer.
Keep reading legacy <code>[seen, values]</code> checkpoints for restore
compatibility.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langgraphjs/blob/main/libs/langgraph-core/CHANGELOG.md">@​langchain/langgraph's
changelog</a>.</em></p>
<blockquote>
<h2>1.4.13</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a
href="https://github.com/langchain-ai/langgraphjs/commit/f8bdf16d4fe23a79e945ea5dc6f86bbf09abb77d"><code>f8bdf16</code></a>,
<a
href="https://github.com/langchain-ai/langgraphjs/commit/cef10ab35cefea12c36a8864cdf12f51c7553975"><code>cef10ab</code></a>]:
<ul>
<li><code>@​langchain/langgraph-sdk</code><a
href="https://github.com/1"><code>@​1</code></a>.10.0</li>
</ul>
</li>
</ul>
<h2>1.4.12</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2714">#2714</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/a2a59ec6f8fdd93d4520d86fceab8a234dacf978"><code>a2a59ec</code></a>
Thanks <a href="https://github.com/hntrl"><code>@​hntrl</code></a>! -
Update checkpoint integrations to require the patched checkpoint
serializer release.</p>
</li>
<li>
<p>Updated dependencies [<a
href="https://github.com/langchain-ai/langgraphjs/commit/a2a59ec6f8fdd93d4520d86fceab8a234dacf978"><code>a2a59ec</code></a>]:</p>
<ul>
<li><code>@​langchain/langgraph-checkpoint</code><a
href="https://github.com/1"><code>@​1</code></a>.1.5</li>
</ul>
</li>
</ul>
<h2>1.4.11</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2706">#2706</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/eaa5472fa480fad2671659d1c9ed0686a55d42bd"><code>eaa5472</code></a>
Thanks <a
href="https://github.com/zduric-langchain"><code>@​zduric-langchain</code></a>!
- fix(langgraph): dedupe merged callback handlers by identity</p>
<p><code>mergeCallbacks</code> concatenated <code>handlers</code> and
<code>inheritableHandlers</code> while
deduping <code>tags</code>, so a handler inherited by both the ambient
and the explicit
config picked up an extra registration at every graph boundary. With
tracing
on, a nested <code>streamMode: &quot;messages&quot;</code> run delivered
every token twice.</p>
</li>
<li>
<p>Updated dependencies [<a
href="https://github.com/langchain-ai/langgraphjs/commit/3ce9f8d11dd64b1d091a25162603c49e6f4a426f"><code>3ce9f8d</code></a>,
<a
href="https://github.com/langchain-ai/langgraphjs/commit/51b42020f7c730a15193aa907056881e3d961924"><code>51b4202</code></a>,
<a
href="https://github.com/langchain-ai/langgraphjs/commit/a86f813954e010fbf30711c37baa5c53444613d5"><code>a86f813</code></a>]:</p>
<ul>
<li><code>@​langchain/langgraph-sdk</code><a
href="https://github.com/1"><code>@​1</code></a>.9.30</li>
</ul>
</li>
</ul>
<h2>1.4.10</h2>
<h3>Patch Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2690">#2690</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/00f68a1b002d820b95129bcdaf387d2678ead6f0"><code>00f68a1</code></a>
Thanks <a
href="https://github.com/saad-supports-langchain"><code>@​saad-supports-langchain</code></a>!
- fix(langgraph): keep <code>context</code> values out of tracer-derived
metadata</li>
</ul>
<h2>1.4.9</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2653">#2653</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/7880055ac7303483e424380cdd52f54cd094e311"><code>7880055</code></a>
Thanks <a
href="https://github.com/christian-bromann"><code>@​christian-bromann</code></a>!
- fix(langgraph): checkpoint Topic as a flat values list</p>
<p>Match Python Topic checkpoints so Host JS graphs no longer put
<code>__pregel_tasks: [[], []]</code> through the Python checkpointer.
Keep reading legacy <code>[seen, values]</code> checkpoints for restore
compatibility.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/3609b35036f18c5a0cf9746910a45e0ab65ccf97"><code>3609b35</code></a>
docs: fix typo in cache policy comment (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2740">#2740</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/3ed60cbd108501e719e93d42a1f5219b577a34a8"><code>3ed60cb</code></a>
chore: version packages (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2728">#2728</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/6530ba9b4c577c560422d9c9de18914e67411d9d"><code>6530ba9</code></a>
chore: version packages (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2715">#2715</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/c3b27a997c682a64f65904b2a97a5ee4d6e741b0"><code>c3b27a9</code></a>
fix(checkpoint): narrow re-constructable types in JsonPlusSerializer (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2709">#2709</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/659d628d196f6b1ba7aa46b30293c31ff5715cf4"><code>659d628</code></a>
chore: version packages (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2704">#2704</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/eaa5472fa480fad2671659d1c9ed0686a55d42bd"><code>eaa5472</code></a>
fix(langgraph): dedupe merged callback handlers by identity (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2706">#2706</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/f6b41bf4861322e380e02f746285496e84b0f96b"><code>f6b41bf</code></a>
chore: version packages (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2698">#2698</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/00f68a1b002d820b95129bcdaf387d2678ead6f0"><code>00f68a1</code></a>
fix(langgraph): keep context values out of tracer-derived metadata (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2690">#2690</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/6ac60da74f6b9e29d20b111a7947ac3060f1d2dd"><code>6ac60da</code></a>
chore(deps): bump the langchain group across 1 directory with 5 updates
(<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2651">#2651</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/5f9915234a5dca861ef01180fde28e52f42c6e15"><code>5f99152</code></a>
chore: version packages (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2655">#2655</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/langchain-ai/langgraphjs/commits/@langchain/langgraph@1.4.13/libs/langgraph-core">compare
view</a></li>
</ul>
</details>
<br />


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

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

---

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

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 01:11:57 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
394c109737 chore(deps-dev): bump the minor-and-patch group in /libs/checkpoint-sqlite with 2 updates (#8772)
Bumps the minor-and-patch group in /libs/checkpoint-sqlite with 2
updates: [ruff](https://github.com/astral-sh/ruff) and
[ty](https://github.com/astral-sh/ty).

Updates `ruff` from 0.16.0 to 0.16.5
<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.16.5</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>Install ruff 0.16.5</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.16.5/ruff-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c &quot;irm
https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1
| iex&quot;
</code></pre>
<h2>Download ruff 0.16.5</h2>
<!-- 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.16.5</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>0.16.4</h2>
<p>Released on 2026-08-20.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>flake8-use-pathlib</code>] Add autofix for
<code>PTH116</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26460">#26460</a>)</li>
<li>[<code>refurb</code>] Restrict <code>delete-full-slice</code> to
lists (<code>FURB131</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27711">#27711</a>)</li>
<li>[<code>refurb</code>] Skip <code>FURB101</code> and
<code>FURB103</code> when the <code>open</code> argument is a file
descriptor (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27643">#27643</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix <code>InvalidInstruction</code> on Windows CPUs that do not
support <code>POPCNT</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27803">#27803</a>)</li>
<li>[<code>pyflakes</code>] Emit semantic syntax errors in string type
definitions as <code>F722</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27835">#27835</a>)</li>
<li>[<code>pylint</code>] Allow <code>os._exit</code> imports in
<code>import-private-name</code> (<code>PLC2701</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27738">#27738</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a"><code>9e4938c</code></a>
Bump 0.16.5 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28110">#28110</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd"><code>aad0e90</code></a>
Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28049">#28049</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4"><code>5fdab73</code></a>
Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27877">#27877</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4"><code>29c8e5b</code></a>
Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27910">#27910</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f"><code>50a4d7f</code></a>
Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27906">#27906</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2"><code>ada8795</code></a>
Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27666">#27666</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0"><code>d894723</code></a>
[ty] Infer lambda parameters through callable type aliases (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28109">#28109</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06"><code>2685fde</code></a>
[ty] Narrow functional enum members in <code>==</code> and
<code>match</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28103">#28103</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec"><code>efcffd2</code></a>
[ty] Intersection simplifications with subtype-related generic
specialization...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b"><code>eb78048</code></a>
[ty] Bump ecosystem-analyzer for HTML escaping (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28104">#28104</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.16.0...0.16.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `ty` from 0.0.64 to 0.0.75
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/releases">ty's
releases</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/blob/main/CHANGELOG.md">ty's
changelog</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
<li>Preserve invariant materialization constraints (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28047">#28047</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ty/commit/a553dcc1a4c464b22d6fff8c46d444e326e0ae2d"><code>a553dcc</code></a>
Bump version to 0.0.75 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4396">#4396</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/26b1b50998e92a5f50c342dc4a1fed84db2f8ee4"><code>26b1b50</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4392">#4392</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/73d226ee4d5a9274bc559c50a244159b61dfa315"><code>73d226e</code></a>
Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/issues/4384">#4384</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5e264dac66970648d461a3fc8f2ebebd30a44dc9"><code>5e264da</code></a>
Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/issues/4382">#4382</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/00199f0aaa6a8cd264fea08eae4f3c3fe4451c17"><code>00199f0</code></a>
Bump version to 0.0.74 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4351">#4351</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5769062fa10db84f6c03145bdf42d0b8da9aeb63"><code>5769062</code></a>
Update mypy/pyright comparison table (<a
href="https://redirect.github.com/astral-sh/ty/issues/4165">#4165</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/4fcb06010f2219b80adf3e688964abd9b0d72866"><code>4fcb060</code></a>
Remove Zulip from the PGO training (<a
href="https://redirect.github.com/astral-sh/ty/issues/4336">#4336</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/a7a706442a710db4a93c1a79779dff5ec5824cf6"><code>a7a7064</code></a>
Use the versions bot's ruleset bypass when merging (<a
href="https://redirect.github.com/astral-sh/ty/issues/4333">#4333</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/01b0fab0093c64535a401bc2731f80d7f5b6a7a8"><code>01b0fab</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4325">#4325</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/deef42f517bfbacb2ffe673046bef1e206c6b8ab"><code>deef42f</code></a>
Update dependency python to 3.14 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4326">#4326</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ty/compare/0.0.64...0.0.75">compare
view</a></li>
</ul>
</details>
<br />


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

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

---

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

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 01:11:52 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0c1a062f88 chore(deps): bump the minor-and-patch group in /libs/cli/js-examples with 6 updates (#8775)
Bumps the minor-and-patch group in /libs/cli/js-examples with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [@langchain/core](https://github.com/langchain-ai/langchainjs) |
`1.2.4` | `1.2.9` |
|
[@langchain/langgraph](https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core)
| `1.4.8` | `1.4.13` |
|
[@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)
| `8.65.0` | `8.68.0` |
|
[@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)
| `8.65.0` | `8.68.0` |
| [eslint](https://github.com/eslint/eslint) | `10.8.0` | `10.9.1` |
| [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) |
`30.4.2` | `30.5.0` |

Updates `@langchain/core` from 1.2.4 to 1.2.9
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langchainjs/releases">@​langchain/core's
releases</a>.</em></p>
<blockquote>
<h2><code>@​langchain/core</code><a
href="https://github.com/1"><code>@​1</code></a>.2.9</h2>
<h3>Patch Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/langchain-ai/langchainjs/pull/11402">#11402</a>
<a
href="https://github.com/langchain-ai/langchainjs/commit/43e439698fa7794c10ab8d7355d4433e058e4d62"><code>43e4396</code></a>
Thanks <a
href="https://github.com/thushanth-bengre-langchain"><code>@​thushanth-bengre-langchain</code></a>!
- Fix ChatVertexAI/ChatGoogle content blocks: include
<code>tool_call</code> blocks from <code>message.tool_calls</code> and
skip spurious empty <code>text</code> blocks in
<code>contentBlocks</code>.</li>
</ul>
<h2><code>@​langchain/core</code><a
href="https://github.com/1"><code>@​1</code></a>.2.8</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langchainjs/pull/11369">#11369</a>
<a
href="https://github.com/langchain-ai/langchainjs/commit/d6ad9735640a6c729f81ef79361acc5e83c526f1"><code>d6ad973</code></a>
Thanks <a href="https://github.com/hntrl"><code>@​hntrl</code></a>! -
fix(langchain): use unified endpoint for gateway</p>
</li>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langchainjs/pull/11342">#11342</a>
<a
href="https://github.com/langchain-ai/langchainjs/commit/3b0e4c48a31811031a460c4d95519a7c1163dc41"><code>3b0e4c4</code></a>
Thanks <a
href="https://github.com/thushanth-bengre-langchain"><code>@​thushanth-bengre-langchain</code></a>!
- feat(core): mark errors as retryable or not, and stop retrying the
ones that aren't</p>
<p>Retry middleware retried every failure up to <code>maxRetries</code>,
including deterministic ones like a bad API key or an unknown model.
Retries also nest, so a single such failure could cost dozens of API
calls.</p>
<p><code>@langchain/core/errors</code> adds <code>stampRetryable(error,
retryable)</code> and <code>getRetryable(error)</code>. Marking an error
leaves its class and shape untouched, so a provider SDK error can be
classified without breaking <code>instanceof</code>.
<code>getRetryable</code> returns <code>undefined</code> for errors
nobody classified, and both are exported so tool authors can mark their
own failures.</p>
<p><code>modelRetryMiddleware</code> and
<code>toolRetryMiddleware</code> now respect the mark by default, and
retries stop as soon as one is found rather than each layer spending its
own budget. Aborted calls, context overflow, and oversized payloads are
marked non-retryable out of the box.
Models accept a per-call <code>maxRetries</code> so a surrounding retry
loop can take over.</p>
<p><strong>Behavior change:</strong> errors marked non-retryable now
fail on the first attempt. Unclassified errors — including any from
third-party integrations or custom tools — retry exactly as before. Pass
<code>retryOn: () =&gt; true</code> to restore the old default. A custom
<code>onFailedAttempt</code> replaces the built-in handler and opts out
of marking.</p>
</li>
</ul>
<h2><code>@​langchain/core</code><a
href="https://github.com/1"><code>@​1</code></a>.2.7</h2>
<h3>Patch Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/langchain-ai/langchainjs/pull/11366">#11366</a>
<a
href="https://github.com/langchain-ai/langchainjs/commit/c068bbf8c113132bf16ac7a8add44e486a147b41"><code>c068bbf</code></a>
Thanks <a href="https://github.com/hntrl"><code>@​hntrl</code></a>! -
fix(core,langchain): patch and release core, update peer
dependencies</li>
</ul>
<h2><code>@​langchain/core</code><a
href="https://github.com/1"><code>@​1</code></a>.2.6</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langchainjs/pull/11344">#11344</a>
<a
href="https://github.com/langchain-ai/langchainjs/commit/f08e0c6d50156accf95a36469a3e107a5598a3a0"><code>f08e0c6</code></a>
Thanks <a href="https://github.com/hntrl"><code>@​hntrl</code></a>! -
fix: apply [Symbol.hasInstance] method to all comparable properties
using .isInstance()</p>
<p>We have some internal schemas that rely on
<code>z.instanceof()</code>. This uses a strict <code>instanceof</code>
check which can conflict if there are multiple versions of core
installed. This overrides the <a
href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance">Symbol.hasInstance</a>
method to use the same logic as <code>.isInstance()</code> to compare
objects at runtime.</p>
</li>
</ul>
<h2><code>@​langchain/core</code><a
href="https://github.com/1"><code>@​1</code></a>.2.5</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langchainjs/pull/11305">#11305</a>
<a
href="https://github.com/langchain-ai/langchainjs/commit/e654022e291b8dae54504ac2d1a3232332406723"><code>e654022</code></a>
Thanks <a
href="https://github.com/jacoblee93"><code>@​jacoblee93</code></a>! -
Add LangSmith Gateway environment configuration to OpenAI, Anthropic,
and Fireworks chat models.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langchainjs/pull/11295">#11295</a>
<a
href="https://github.com/langchain-ai/langchainjs/commit/1a1b347d18bc68e842df8badffc987493c81d70a"><code>1a1b347</code></a>
Thanks <a
href="https://github.com/vladislav-nechakhin"><code>@​vladislav-nechakhin</code></a>!
- fix(core): pass the mustache escape override per render call</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/e493ed653d734e31a8d051f78ab29b067f530e4b"><code>e493ed6</code></a>
chore: version packages (<a
href="https://redirect.github.com/langchain-ai/langchainjs/issues/11393">#11393</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/83848481ea27502c4221a01b4c55a87f1fa7c472"><code>8384848</code></a>
fix(google-common): release endpoint routing fix as patch (<a
href="https://redirect.github.com/langchain-ai/langchainjs/issues/11413">#11413</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/8cfff4dced1327fc87893a86dfc63c553403aec0"><code>8cfff4d</code></a>
feat(google): add gateway support for genai (<a
href="https://redirect.github.com/langchain-ai/langchainjs/issues/11405">#11405</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/7df258c0af8362fede14d42bb982597a56f41b78"><code>7df258c</code></a>
chore(langchain): update langgraph deps (<a
href="https://redirect.github.com/langchain-ai/langchainjs/issues/11412">#11412</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/3ceef4baadfaec8f0b1e43191b9363cfcc04187f"><code>3ceef4b</code></a>
fix(anthropic): round-trip tool search server-tool result blocks (<a
href="https://redirect.github.com/langchain-ai/langchainjs/issues/11407">#11407</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/fe8eec1915cc5580b8e7a2f3d4f68fe5e577d641"><code>fe8eec1</code></a>
fix(openai): drop Gemini functionCall content blocks in Chat Completions
mess...</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/0e7c7654c8bd84b80fe9a2495ab2703355ff8c1e"><code>0e7c765</code></a>
fix(google-genai): throw ContentBlockedError when Gemini candidate has
no con...</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/5c9fdf2f0339deb92db84eaa838cf35c7dcdb027"><code>5c9fdf2</code></a>
fix(openai): retain cache_write_tokens, update to v7 sdk (<a
href="https://redirect.github.com/langchain-ai/langchainjs/issues/11399">#11399</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/5ff9179e25f594d7cd21e176fdadd953190375c5"><code>5ff9179</code></a>
fix(google-genai): guard streaming chunks when candidate has no content
(<a
href="https://redirect.github.com/langchain-ai/langchainjs/issues/10742">#10742</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchainjs/commit/43e439698fa7794c10ab8d7355d4433e058e4d62"><code>43e4396</code></a>
fix(core): include tool_call blocks and skip empty text blocks in
ChatVertexA...</li>
<li>Additional commits viewable in <a
href="https://github.com/langchain-ai/langchainjs/compare/@langchain/core@1.2.4...@langchain/core@1.2.9">compare
view</a></li>
</ul>
</details>
<br />

Updates `@langchain/langgraph` from 1.4.8 to 1.4.13
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langgraphjs/releases">@​langchain/langgraph's
releases</a>.</em></p>
<blockquote>
<h2><code>@​langchain/langgraph</code><a
href="https://github.com/1"><code>@​1</code></a>.4.13</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a
href="https://github.com/langchain-ai/langgraphjs/commit/f8bdf16d4fe23a79e945ea5dc6f86bbf09abb77d"><code>f8bdf16</code></a>,
<a
href="https://github.com/langchain-ai/langgraphjs/commit/cef10ab35cefea12c36a8864cdf12f51c7553975"><code>cef10ab</code></a>]:
<ul>
<li><code>@​langchain/langgraph-sdk</code><a
href="https://github.com/1"><code>@​1</code></a>.10.0</li>
</ul>
</li>
</ul>
<h2><code>@​langchain/langgraph</code><a
href="https://github.com/1"><code>@​1</code></a>.4.12</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2714">#2714</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/a2a59ec6f8fdd93d4520d86fceab8a234dacf978"><code>a2a59ec</code></a>
Thanks <a href="https://github.com/hntrl"><code>@​hntrl</code></a>! -
Update checkpoint integrations to require the patched checkpoint
serializer release.</p>
</li>
<li>
<p>Updated dependencies [<a
href="https://github.com/langchain-ai/langgraphjs/commit/a2a59ec6f8fdd93d4520d86fceab8a234dacf978"><code>a2a59ec</code></a>]:</p>
<ul>
<li><code>@​langchain/langgraph-checkpoint</code><a
href="https://github.com/1"><code>@​1</code></a>.1.5</li>
</ul>
</li>
</ul>
<h2><code>@​langchain/langgraph</code><a
href="https://github.com/1"><code>@​1</code></a>.4.11</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2706">#2706</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/eaa5472fa480fad2671659d1c9ed0686a55d42bd"><code>eaa5472</code></a>
Thanks <a
href="https://github.com/zduric-langchain"><code>@​zduric-langchain</code></a>!
- fix(langgraph): dedupe merged callback handlers by identity</p>
<p><code>mergeCallbacks</code> concatenated <code>handlers</code> and
<code>inheritableHandlers</code> while
deduping <code>tags</code>, so a handler inherited by both the ambient
and the explicit
config picked up an extra registration at every graph boundary. With
tracing
on, a nested <code>streamMode: &quot;messages&quot;</code> run delivered
every token twice.</p>
</li>
<li>
<p>Updated dependencies [<a
href="https://github.com/langchain-ai/langgraphjs/commit/3ce9f8d11dd64b1d091a25162603c49e6f4a426f"><code>3ce9f8d</code></a>,
<a
href="https://github.com/langchain-ai/langgraphjs/commit/51b42020f7c730a15193aa907056881e3d961924"><code>51b4202</code></a>,
<a
href="https://github.com/langchain-ai/langgraphjs/commit/a86f813954e010fbf30711c37baa5c53444613d5"><code>a86f813</code></a>]:</p>
<ul>
<li><code>@​langchain/langgraph-sdk</code><a
href="https://github.com/1"><code>@​1</code></a>.9.30</li>
</ul>
</li>
</ul>
<h2><code>@​langchain/langgraph</code><a
href="https://github.com/1"><code>@​1</code></a>.4.10</h2>
<h3>Patch Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2690">#2690</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/00f68a1b002d820b95129bcdaf387d2678ead6f0"><code>00f68a1</code></a>
Thanks <a
href="https://github.com/saad-supports-langchain"><code>@​saad-supports-langchain</code></a>!
- fix(langgraph): keep <code>context</code> values out of tracer-derived
metadata</li>
</ul>
<h2><code>@​langchain/langgraph</code><a
href="https://github.com/1"><code>@​1</code></a>.4.9</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2653">#2653</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/7880055ac7303483e424380cdd52f54cd094e311"><code>7880055</code></a>
Thanks <a
href="https://github.com/christian-bromann"><code>@​christian-bromann</code></a>!
- fix(langgraph): checkpoint Topic as a flat values list</p>
<p>Match Python Topic checkpoints so Host JS graphs no longer put
<code>__pregel_tasks: [[], []]</code> through the Python checkpointer.
Keep reading legacy <code>[seen, values]</code> checkpoints for restore
compatibility.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langgraphjs/blob/main/libs/langgraph-core/CHANGELOG.md">@​langchain/langgraph's
changelog</a>.</em></p>
<blockquote>
<h2>1.4.13</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a
href="https://github.com/langchain-ai/langgraphjs/commit/f8bdf16d4fe23a79e945ea5dc6f86bbf09abb77d"><code>f8bdf16</code></a>,
<a
href="https://github.com/langchain-ai/langgraphjs/commit/cef10ab35cefea12c36a8864cdf12f51c7553975"><code>cef10ab</code></a>]:
<ul>
<li><code>@​langchain/langgraph-sdk</code><a
href="https://github.com/1"><code>@​1</code></a>.10.0</li>
</ul>
</li>
</ul>
<h2>1.4.12</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2714">#2714</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/a2a59ec6f8fdd93d4520d86fceab8a234dacf978"><code>a2a59ec</code></a>
Thanks <a href="https://github.com/hntrl"><code>@​hntrl</code></a>! -
Update checkpoint integrations to require the patched checkpoint
serializer release.</p>
</li>
<li>
<p>Updated dependencies [<a
href="https://github.com/langchain-ai/langgraphjs/commit/a2a59ec6f8fdd93d4520d86fceab8a234dacf978"><code>a2a59ec</code></a>]:</p>
<ul>
<li><code>@​langchain/langgraph-checkpoint</code><a
href="https://github.com/1"><code>@​1</code></a>.1.5</li>
</ul>
</li>
</ul>
<h2>1.4.11</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2706">#2706</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/eaa5472fa480fad2671659d1c9ed0686a55d42bd"><code>eaa5472</code></a>
Thanks <a
href="https://github.com/zduric-langchain"><code>@​zduric-langchain</code></a>!
- fix(langgraph): dedupe merged callback handlers by identity</p>
<p><code>mergeCallbacks</code> concatenated <code>handlers</code> and
<code>inheritableHandlers</code> while
deduping <code>tags</code>, so a handler inherited by both the ambient
and the explicit
config picked up an extra registration at every graph boundary. With
tracing
on, a nested <code>streamMode: &quot;messages&quot;</code> run delivered
every token twice.</p>
</li>
<li>
<p>Updated dependencies [<a
href="https://github.com/langchain-ai/langgraphjs/commit/3ce9f8d11dd64b1d091a25162603c49e6f4a426f"><code>3ce9f8d</code></a>,
<a
href="https://github.com/langchain-ai/langgraphjs/commit/51b42020f7c730a15193aa907056881e3d961924"><code>51b4202</code></a>,
<a
href="https://github.com/langchain-ai/langgraphjs/commit/a86f813954e010fbf30711c37baa5c53444613d5"><code>a86f813</code></a>]:</p>
<ul>
<li><code>@​langchain/langgraph-sdk</code><a
href="https://github.com/1"><code>@​1</code></a>.9.30</li>
</ul>
</li>
</ul>
<h2>1.4.10</h2>
<h3>Patch Changes</h3>
<ul>
<li><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2690">#2690</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/00f68a1b002d820b95129bcdaf387d2678ead6f0"><code>00f68a1</code></a>
Thanks <a
href="https://github.com/saad-supports-langchain"><code>@​saad-supports-langchain</code></a>!
- fix(langgraph): keep <code>context</code> values out of tracer-derived
metadata</li>
</ul>
<h2>1.4.9</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/langchain-ai/langgraphjs/pull/2653">#2653</a>
<a
href="https://github.com/langchain-ai/langgraphjs/commit/7880055ac7303483e424380cdd52f54cd094e311"><code>7880055</code></a>
Thanks <a
href="https://github.com/christian-bromann"><code>@​christian-bromann</code></a>!
- fix(langgraph): checkpoint Topic as a flat values list</p>
<p>Match Python Topic checkpoints so Host JS graphs no longer put
<code>__pregel_tasks: [[], []]</code> through the Python checkpointer.
Keep reading legacy <code>[seen, values]</code> checkpoints for restore
compatibility.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/3609b35036f18c5a0cf9746910a45e0ab65ccf97"><code>3609b35</code></a>
docs: fix typo in cache policy comment (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2740">#2740</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/3ed60cbd108501e719e93d42a1f5219b577a34a8"><code>3ed60cb</code></a>
chore: version packages (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2728">#2728</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/6530ba9b4c577c560422d9c9de18914e67411d9d"><code>6530ba9</code></a>
chore: version packages (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2715">#2715</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/c3b27a997c682a64f65904b2a97a5ee4d6e741b0"><code>c3b27a9</code></a>
fix(checkpoint): narrow re-constructable types in JsonPlusSerializer (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2709">#2709</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/659d628d196f6b1ba7aa46b30293c31ff5715cf4"><code>659d628</code></a>
chore: version packages (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2704">#2704</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/eaa5472fa480fad2671659d1c9ed0686a55d42bd"><code>eaa5472</code></a>
fix(langgraph): dedupe merged callback handlers by identity (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2706">#2706</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/f6b41bf4861322e380e02f746285496e84b0f96b"><code>f6b41bf</code></a>
chore: version packages (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2698">#2698</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/00f68a1b002d820b95129bcdaf387d2678ead6f0"><code>00f68a1</code></a>
fix(langgraph): keep context values out of tracer-derived metadata (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2690">#2690</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/6ac60da74f6b9e29d20b111a7947ac3060f1d2dd"><code>6ac60da</code></a>
chore(deps): bump the langchain group across 1 directory with 5 updates
(<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2651">#2651</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraphjs/commit/5f9915234a5dca861ef01180fde28e52f42c6e15"><code>5f99152</code></a>
chore: version packages (<a
href="https://github.com/langchain-ai/langgraphjs/tree/HEAD/libs/langgraph-core/issues/2655">#2655</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/langchain-ai/langgraphjs/commits/@langchain/langgraph@1.4.13/libs/langgraph-core">compare
view</a></li>
</ul>
</details>
<br />

Updates `@typescript-eslint/eslint-plugin` from 8.65.0 to 8.68.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/releases">@​typescript-eslint/eslint-plugin's
releases</a>.</em></p>
<blockquote>
<h2>v8.68.0</h2>
<h2>8.68.0 (2026-08-24)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> [strict-void-return] add fix
suggestions (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12086">#12086</a>)</li>
<li><strong>utils:</strong> support ESLint rule meta.languages (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12663">#12663</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [unified-signatures] deduplicate
types in report (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12656">#12656</a>)</li>
<li><strong>eslint-plugin:</strong> [return-await] prevent autofix from
breaking code in arrow-functions (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12707">#12707</a>)</li>
<li><strong>eslint-plugin:</strong> [unified-signatures] report
identical signatures (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12678">#12678</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion]
prevent stack overflow in recursive types (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12711">#12711</a>)</li>
<li><strong>eslint-plugin:</strong> [no-floating-promises] setting
<code>ignoreVoid: false</code> results in false negative in
ArrowFunctionExpression (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12646">#12646</a>)</li>
<li><strong>eslint-plugin:</strong> [no-empty-object-type] ignore
suggestions that result in invalid interfaces and export defaults (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12739">#12739</a>)</li>
<li><strong>website:</strong> playground crashes on <code>extends</code>
configs (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12608">#12608</a>)</li>
<li><strong>website:</strong> account for thanks.dev and out-of-band
donors in sponsors list (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12735">#12735</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Hugo <a
href="https://github.com/hugop95"><code>@​hugop95</code></a></li>
<li>Josh Goldberg </li>
<li>Niki <a
href="https://github.com/phaux"><code>@​phaux</code></a></li>
<li>Thiago Barbosa</li>
<li>Younsang Na <a
href="https://github.com/nayounsang"><code>@​nayounsang</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.68.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>v8.67.0</h2>
<h2>8.67.0 (2026-08-10)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>typescript-eslint:</strong> export basic globs for using
tseslint (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12105">#12105</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Josh Goldberg </li>
<li>Kirk Waiblinger <a
href="https://github.com/kirkwaiblinger"><code>@​kirkwaiblinger</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.67.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>v8.66.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md">@​typescript-eslint/eslint-plugin's
changelog</a>.</em></p>
<blockquote>
<h2>8.68.0 (2026-08-24)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> [strict-void-return] add fix
suggestions (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12086">#12086</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-empty-object-type] ignore
suggestions that result in invalid interfaces and export defaults (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12739">#12739</a>)</li>
<li><strong>eslint-plugin:</strong> [no-floating-promises] setting
<code>ignoreVoid: false</code> results in false negative in
ArrowFunctionExpression (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12646">#12646</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion]
prevent stack overflow in recursive types (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12711">#12711</a>)</li>
<li><strong>eslint-plugin:</strong> [unified-signatures] report
identical signatures (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12678">#12678</a>)</li>
<li><strong>eslint-plugin:</strong> [return-await] prevent autofix from
breaking code in arrow-functions (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12707">#12707</a>)</li>
<li><strong>eslint-plugin:</strong> [unified-signatures] deduplicate
types in report (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12656">#12656</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Hugo <a
href="https://github.com/hugop95"><code>@​hugop95</code></a></li>
<li>Niki <a
href="https://github.com/phaux"><code>@​phaux</code></a></li>
<li>Younsang Na <a
href="https://github.com/nayounsang"><code>@​nayounsang</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.68.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>8.67.0 (2026-08-10)</h2>
<p>This was a version bump only for eslint-plugin to align it with other
projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.67.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>8.66.0 (2026-08-03)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [class-literal-property-style]
preserve type annotations and don't drop decorators (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12617">#12617</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-parameters]
check MappedType key remapping (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12588">#12588</a>)</li>
<li><strong>eslint-plugin:</strong> [no-useless-default-assignment]
don't report defaults used by other overloads (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12607">#12607</a>)</li>
<li><strong>eslint-plugin:</strong> [prefer-nullish-coalescing] handle
shadowed Boolean calls (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12591">#12591</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-conversion]
ignore shadowed built-ins (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12590">#12590</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>송재욱</li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.66.0">GitHub
Releases</a> for more information.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/8f4e00a4e8f3bdf93a5e5e8bc568ba1c15a4f896"><code>8f4e00a</code></a>
chore(release): publish 8.68.0</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/db30514e0f912dad32417a8e165bb9cce6f6a9d0"><code>db30514</code></a>
feat(eslint-plugin): [strict-void-return] add fix suggestions (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12086">#12086</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/9690339c4e50e65121fdd7d1eb55c5831460cd88"><code>9690339</code></a>
test(eslint-plugin): [prefer-optional-chain] use
<code>createRuleTesterWithTypes</code> ...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/abe9011a43524ea867e249125250d0927065750e"><code>abe9011</code></a>
fix(eslint-plugin): [no-empty-object-type] ignore suggestions that
result in ...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/79c16e784056ed9d6fea92268f036c18f46530ff"><code>79c16e7</code></a>
chore(eslint-plugin): extract FunctionSignature and enum comparison
utils (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/1">#1</a>...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/2442e3048ba5a120a5e7dff5450fb5c440c0fc15"><code>2442e30</code></a>
test(eslint-plugin): [no-floating-promises] format test snippets (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12723">#12723</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/3596323c63dc92b9a8858992b66afa65642a69ca"><code>3596323</code></a>
fix(eslint-plugin): [no-floating-promises] setting <code>ignoreVoid:
false</code> result...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/956a3397d9e1c4aacd55f70bf0210e15ba005508"><code>956a339</code></a>
fix(eslint-plugin): [no-unnecessary-type-assertion] prevent stack
overflow in...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/55f6d5d4ca39d2fab93db97ced497b956017878d"><code>55f6d5d</code></a>
chore: enable source maps (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12677">#12677</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/3aefb6a27d4a7f4c5e30486cba31e6f567966aae"><code>3aefb6a</code></a>
test: improve vitest performance with <code>isolate: false</code> (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12703">#12703</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.68.0/packages/eslint-plugin">compare
view</a></li>
</ul>
</details>
<br />

Updates `@typescript-eslint/parser` from 8.65.0 to 8.68.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/releases">@​typescript-eslint/parser's
releases</a>.</em></p>
<blockquote>
<h2>v8.68.0</h2>
<h2>8.68.0 (2026-08-24)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> [strict-void-return] add fix
suggestions (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12086">#12086</a>)</li>
<li><strong>utils:</strong> support ESLint rule meta.languages (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12663">#12663</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [unified-signatures] deduplicate
types in report (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12656">#12656</a>)</li>
<li><strong>eslint-plugin:</strong> [return-await] prevent autofix from
breaking code in arrow-functions (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12707">#12707</a>)</li>
<li><strong>eslint-plugin:</strong> [unified-signatures] report
identical signatures (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12678">#12678</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion]
prevent stack overflow in recursive types (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12711">#12711</a>)</li>
<li><strong>eslint-plugin:</strong> [no-floating-promises] setting
<code>ignoreVoid: false</code> results in false negative in
ArrowFunctionExpression (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12646">#12646</a>)</li>
<li><strong>eslint-plugin:</strong> [no-empty-object-type] ignore
suggestions that result in invalid interfaces and export defaults (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12739">#12739</a>)</li>
<li><strong>website:</strong> playground crashes on <code>extends</code>
configs (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12608">#12608</a>)</li>
<li><strong>website:</strong> account for thanks.dev and out-of-band
donors in sponsors list (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12735">#12735</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Hugo <a
href="https://github.com/hugop95"><code>@​hugop95</code></a></li>
<li>Josh Goldberg </li>
<li>Niki <a
href="https://github.com/phaux"><code>@​phaux</code></a></li>
<li>Thiago Barbosa</li>
<li>Younsang Na <a
href="https://github.com/nayounsang"><code>@​nayounsang</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.68.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>v8.67.0</h2>
<h2>8.67.0 (2026-08-10)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>typescript-eslint:</strong> export basic globs for using
tseslint (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12105">#12105</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Josh Goldberg </li>
<li>Kirk Waiblinger <a
href="https://github.com/kirkwaiblinger"><code>@​kirkwaiblinger</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.67.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>v8.66.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md">@​typescript-eslint/parser's
changelog</a>.</em></p>
<blockquote>
<h2>8.68.0 (2026-08-24)</h2>
<p>This was a version bump only for parser to align it with other
projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.68.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>8.67.0 (2026-08-10)</h2>
<p>This was a version bump only for parser to align it with other
projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.67.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>8.66.0 (2026-08-03)</h2>
<p>This was a version bump only for parser to align it with other
projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.66.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/8f4e00a4e8f3bdf93a5e5e8bc568ba1c15a4f896"><code>8f4e00a</code></a>
chore(release): publish 8.68.0</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/55f6d5d4ca39d2fab93db97ced497b956017878d"><code>55f6d5d</code></a>
chore: enable source maps (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser/issues/12677">#12677</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/20a261fb8e62351e88176b075090dc9276d26072"><code>20a261f</code></a>
chore(release): publish 8.67.0</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/3b155bb1344fd7ce83086cf2f864a7e8f3b4a217"><code>3b155bb</code></a>
chore: use typescript 7 for typechecking (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser/issues/12601">#12601</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/e51b11ba3ab31837762c675f62f0d4dcb1abc4fb"><code>e51b11b</code></a>
chore(release): publish 8.66.0</li>
<li>See full diff in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.68.0/packages/parser">compare
view</a></li>
</ul>
</details>
<br />

Updates `eslint` from 10.8.0 to 10.9.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/eslint/eslint/releases">eslint's
releases</a>.</em></p>
<blockquote>
<h2>v10.9.1</h2>
<h2>Bug Fixes</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/1e641c919fc1421493bf913feb607896982451a3"><code>1e641c9</code></a>
fix: no-loss-of-precision false positive with trailing decimal point (<a
href="https://redirect.github.com/eslint/eslint/issues/21251">#21251</a>)
(Aleksandr Shoronov)</li>
</ul>
<h2>Documentation</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/ad74a8dada2aaa17bfd0b8cc7b4119ff7a8ac04b"><code>ad74a8d</code></a>
docs: add deprecation steps for EOL package versions (<a
href="https://redirect.github.com/eslint/eslint/issues/21248">#21248</a>)
(Francesco Trotta)</li>
</ul>
<h2>Chores</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/3c3ae53a43721162f0db76c69665ebd9d752ea52"><code>3c3ae53</code></a>
chore: update ecosystem plugins (<a
href="https://redirect.github.com/eslint/eslint/issues/21249">#21249</a>)
(ESLint Bot)</li>
</ul>
<h2>v10.9.0</h2>
<h2>Features</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/08de88e50294c4e01f6cae97eceeb578da55792b"><code>08de88e</code></a>
feat: handle underflow in no-loss-of-precision (<a
href="https://redirect.github.com/eslint/eslint/issues/21218">#21218</a>)
(Rithish S)</li>
<li><a
href="https://github.com/eslint/eslint/commit/55db4791120ae591d88089c43127b7b0e16866d4"><code>55db479</code></a>
feat: add checkConditionalExpressions to
<code>no-unmodified-loop-condition</code> (<a
href="https://redirect.github.com/eslint/eslint/issues/21175">#21175</a>)
(sethamus)</li>
</ul>
<h2>Bug Fixes</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/2ba302554e7a24e9909bbdd026fd0c2d1d0d8638"><code>2ba3025</code></a>
fix: prevent unsafe <code>no-var</code> autofix with hoisted functions
(<a
href="https://redirect.github.com/eslint/eslint/issues/21213">#21213</a>)
(sethamus)</li>
<li><a
href="https://github.com/eslint/eslint/commit/8e6962219a605c5f5add10953aa31027da839194"><code>8e69622</code></a>
fix: Prevent no-var autofix when var is shadowed by catch parameter (<a
href="https://redirect.github.com/eslint/eslint/issues/21204">#21204</a>)
(Yang Hyeonjong)</li>
<li><a
href="https://github.com/eslint/eslint/commit/684b57972e1ddf25e076fb36189c60bbcacee635"><code>684b579</code></a>
fix: prefer-template invalid autofix creates a tagged template call (<a
href="https://redirect.github.com/eslint/eslint/issues/21207">#21207</a>)
(김채영)</li>
</ul>
<h2>Documentation</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/9ef407a3b051e74f50dc7fb8914e2bd89b3e5e53"><code>9ef407a</code></a>
docs: use eslint.config.* wherever config file names are listed (<a
href="https://redirect.github.com/eslint/eslint/issues/21216">#21216</a>)
(Marry (Subin Yang))</li>
<li><a
href="https://github.com/eslint/eslint/commit/87f66f4435c4df7f4f6815c939d153196ec03e3c"><code>87f66f4</code></a>
docs: Update README (GitHub Actions Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/585ef37516c0dc29ddb91ce2a2cdcc46fdbbd610"><code>585ef37</code></a>
docs: update architecture documentation (<a
href="https://redirect.github.com/eslint/eslint/issues/21112">#21112</a>)
(Francesco Trotta)</li>
<li><a
href="https://github.com/eslint/eslint/commit/f3993b0547bace7370e9728ee7408af49d367d76"><code>f3993b0</code></a>
docs: Update README (GitHub Actions Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/ffc87d6234b2aa4335eec069e5c4d6ac04832b9e"><code>ffc87d6</code></a>
docs: fix broken links in Further Reading sections (<a
href="https://redirect.github.com/eslint/eslint/issues/21203">#21203</a>)
(Minsu)</li>
<li><a
href="https://github.com/eslint/eslint/commit/1a761e1d11b011fcb6bee181231a51010c500e4d"><code>1a761e1</code></a>
docs: update moved JSX specification links (<a
href="https://redirect.github.com/eslint/eslint/issues/21198">#21198</a>)
(Imran Mustafa)</li>
<li><a
href="https://github.com/eslint/eslint/commit/4d00ca4064ae0d1a75b604a16c68ab9f386ad388"><code>4d00ca4</code></a>
docs: update ESLint peer dependency to <code>^10.0.0</code> in shareable
configs (<a
href="https://redirect.github.com/eslint/eslint/issues/21202">#21202</a>)
(lumir)</li>
<li><a
href="https://github.com/eslint/eslint/commit/510d1a2e87bc197219f42e195ddb638d2b183a5a"><code>510d1a2</code></a>
docs: Update README (GitHub Actions Bot)</li>
</ul>
<h2>Chores</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/899dbf131ce12a194b394bb8d67307df23509d17"><code>899dbf1</code></a>
chore: update github/codeql-action action to v4.37.7 (<a
href="https://redirect.github.com/eslint/eslint/issues/21243">#21243</a>)
(renovate[bot])</li>
<li><a
href="https://github.com/eslint/eslint/commit/9aa38732177935bd1d7f1493732c0b67666be28a"><code>9aa3873</code></a>
chore: update ecosystem plugins (<a
href="https://redirect.github.com/eslint/eslint/issues/21235">#21235</a>)
(ESLint Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/dc1e7a8416937edefe04cf836ee202a6fc03bedd"><code>dc1e7a8</code></a>
chore: update ecosystem plugins (<a
href="https://redirect.github.com/eslint/eslint/issues/21208">#21208</a>)
(ESLint Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/f878d212e9622da9513bcd60d2aedb2e8bb4fc8b"><code>f878d21</code></a>
ci: bump pnpm/action-setup from 6.0.9 to 6.0.10 (<a
href="https://redirect.github.com/eslint/eslint/issues/21200">#21200</a>)
(dependabot[bot])</li>
<li><a
href="https://github.com/eslint/eslint/commit/4891e50aceadb0e886ad7d8ab5ae2beab563de85"><code>4891e50</code></a>
ci: bump github/codeql-action from 4.37.4 to 4.37.6 (<a
href="https://redirect.github.com/eslint/eslint/issues/21199">#21199</a>)
(dependabot[bot])</li>
</ul>
<h2>v10.8.1</h2>
<h2>Bug Fixes</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/18eb0a7e787b9fac3049ef3dad0e845d2bd940a4"><code>18eb0a7</code></a>
fix: prevent ASI hazard in <code>no-unused-labels</code> autofix (<a
href="https://redirect.github.com/eslint/eslint/issues/21173">#21173</a>)
(dongkyu lee)</li>
<li><a
href="https://github.com/eslint/eslint/commit/151ba3f5834a0909e8b9b1736f4889ac694c0104"><code>151ba3f</code></a>
fix: false positives in <code>getter-return</code> and
<code>accessor-pairs</code> (<a
href="https://redirect.github.com/eslint/eslint/issues/21163">#21163</a>)
(Grit)</li>
<li><a
href="https://github.com/eslint/eslint/commit/6898df9364639ee64b9448a4cb6b08a30c16bd37"><code>6898df9</code></a>
fix: ignore meta-property names in <code>id-denylist</code> (<a
href="https://redirect.github.com/eslint/eslint/issues/21166">#21166</a>)
(Pixel)</li>
<li><a
href="https://github.com/eslint/eslint/commit/4d7db6628e2badf0857cb88734fe641c3874bce9"><code>4d7db66</code></a>
fix: ignore meta-property names in <code>id-match</code> (<a
href="https://redirect.github.com/eslint/eslint/issues/21167">#21167</a>)
(Pixel)</li>
<li><a
href="https://github.com/eslint/eslint/commit/677214e7eea83d8bc6e4b79eea871577e1369d5f"><code>677214e</code></a>
fix: handle ASI hazards in no-unused-vars removeVar suggestion (<a
href="https://redirect.github.com/eslint/eslint/issues/20935">#20935</a>)
(kuldeep kumar)</li>
</ul>
<h2>Documentation</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/7d0cbf81cfdb7526b5c4cb7b222ddc7f257db560"><code>7d0cbf8</code></a>
docs: Update README (GitHub Actions Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/0a05812adb12598b32e85297b98df5ad14501d60"><code>0a05812</code></a>
docs: add missing backticks to <code>no-duplicate-imports.js</code> (<a
href="https://redirect.github.com/eslint/eslint/issues/21183">#21183</a>)
(Lee Daeun)</li>
<li><a
href="https://github.com/eslint/eslint/commit/678c90b55da2889d4400cbf6e2584ab683faf202"><code>678c90b</code></a>
docs: Update README (GitHub Actions Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/8a104242e8e1c5614940fab7324346974cff7d26"><code>8a10424</code></a>
docs: Update README (GitHub Actions Bot)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/5c8c2417b9ff462f2dc4e54a062c59135b45b845"><code>5c8c241</code></a>
10.9.1</li>
<li><a
href="https://github.com/eslint/eslint/commit/a7f3b7ddca7de8464995707d1bbac3ca91090015"><code>a7f3b7d</code></a>
Build: changelog update for 10.9.1</li>
<li><a
href="https://github.com/eslint/eslint/commit/1e641c919fc1421493bf913feb607896982451a3"><code>1e641c9</code></a>
fix: no-loss-of-precision false positive with trailing decimal point (<a
href="https://redirect.github.com/eslint/eslint/issues/21251">#21251</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/ad74a8dada2aaa17bfd0b8cc7b4119ff7a8ac04b"><code>ad74a8d</code></a>
docs: add deprecation steps for EOL package versions (<a
href="https://redirect.github.com/eslint/eslint/issues/21248">#21248</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/3c3ae53a43721162f0db76c69665ebd9d752ea52"><code>3c3ae53</code></a>
chore: update ecosystem plugins (<a
href="https://redirect.github.com/eslint/eslint/issues/21249">#21249</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/c27bc926e496985eb7911c09eb60914b2e4b5d0f"><code>c27bc92</code></a>
10.9.0</li>
<li><a
href="https://github.com/eslint/eslint/commit/fa831d95b326e6d23671d9b2df1ea5dbc64f6f34"><code>fa831d9</code></a>
Build: changelog update for 10.9.0</li>
<li><a
href="https://github.com/eslint/eslint/commit/899dbf131ce12a194b394bb8d67307df23509d17"><code>899dbf1</code></a>
chore: update github/codeql-action action to v4.37.7 (<a
href="https://redirect.github.com/eslint/eslint/issues/21243">#21243</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/08de88e50294c4e01f6cae97eceeb578da55792b"><code>08de88e</code></a>
feat: handle underflow in no-loss-of-precision (<a
href="https://redirect.github.com/eslint/eslint/issues/21218">#21218</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/9ef407a3b051e74f50dc7fb8914e2bd89b3e5e53"><code>9ef407a</code></a>
docs: use eslint.config.* wherever config file names are listed (<a
href="https://redirect.github.com/eslint/eslint/issues/21216">#21216</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/eslint/eslint/compare/v10.8.0...v10.9.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `jest` from 30.4.2 to 30.5.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jestjs/jest/releases">jest's
releases</a>.</em></p>
<blockquote>
<h2>v30.5.0</h2>
<p>On a personal note: King Harald V of Norway passed away this morning.
He ascended the throne 35 years ago, two months before I was born. This
release is dedicated to his memory. Hvil i fred 🇳🇴</p>
<hr />
<p>This is a big release. It touches <code>jest-runtime</code>,
<code>jest-resolve</code> and <code>jest-haste-map</code> in many
places, and with this many changes there might be regressions 😬. If your
suite behaves differently after upgrading, please <a
href="https://github.com/jestjs/jest/issues">open an issue</a>.</p>
<h1>Highlights</h1>
<h2><code>whenCalledWith</code></h2>
<p>Mock functions can now configure return values per argument list,
contributed by <a
href="https://github.com/timkindberg"><code>@​timkindberg</code></a> (<a
href="https://redirect.github.com/jestjs/jest/pull/16053">#16053</a>):</p>
<pre lang="js"><code>const fn = jest.fn();
fn.whenCalledWith('apple').mockReturnValue('red');
fn.whenCalledWith('banana').mockReturnValue('yellow');
fn.whenCalledWith(expect.any(Number)).mockReturnValue('numeric');
<p>fn('apple'); // 'red'
fn('banana'); // 'yellow'
fn(42); // 'numeric'
fn('grape'); // undefined
</code></pre></p>
<p>The returned object is a real <code>Mock</code>, so
<code>mockReturnValueOnce</code>, <code>mockResolvedValue</code>,
<code>mockImplementation</code> etc. all chain here too. Argument slots
accept literals or any asymmetric matcher, with the same equality
semantics as <code>toHaveBeenCalledWith()</code>. Calls that match
nothing fall through to the base mock. See the <a
href="https://jestjs.io/docs/mock-function-api#mockfnwhencalledwithargs">Mock
Functions docs</a> for matching and precedence details.</p>
<h2>Describe-level retries</h2>
<p><code>jest.retryTimes()</code> can now retry a whole
<code>describe</code> block instead of a single test, contributed by <a
href="https://github.com/soltonigiri"><code>@​soltonigiri</code></a> (<a
href="https://redirect.github.com/jestjs/jest/pull/16322">#16322</a>).
Each attempt reruns the block's
<code>beforeAll</code>/<code>afterAll</code> hooks, child tests and
nested describes, which helps when tests in a block depend on shared
state:</p>
<pre lang="js"><code>describe('workflow', () =&gt; {
  jest.retryTimes(3, {entireDescribe: true});
<p>test('first step', () =&gt; {});
test('second step', () =&gt; {}); // a failure retries the entire block
});
</code></pre></p>
<h2>New file watcher</h2>
<p>The non-watchman path of <code>jest-haste-map</code> is rewritten.
<code>@parcel/watcher</code> replaces the homegrown
<code>NodeWatcher</code> and <code>FSEventsWatcher</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/16188">#16188</a>),
and <code>fdir</code> replaces the hand-rolled directory recursion in
the crawler (<a
href="https://redirect.github.com/jestjs/jest/pull/16187">#16187</a>). A
batch of fixes also makes watching and indexing survive locked files on
Windows, watchman failures, and duplicate manual mocks (<a
href="https://redirect.github.com/jestjs/jest/pull/16295">#16295</a>, <a
href="https://redirect.github.com/jestjs/jest/pull/16358">#16358</a>, <a
href="https://redirect.github.com/jestjs/jest/pull/16355">#16355</a>, <a
href="https://redirect.github.com/jestjs/jest/pull/16360">#16360</a>).</p>
<p>If you can, please run your suite with <code>--no-watchman</code> (in
and out of watch mode) to exercise the new crawler and watchers, and
report anything odd 👍</p>
<h2>Long-requested dependency updates</h2>
<ul>
<li><code>babel-plugin-istanbul</code> is updated to v8 (<a
href="https://redirect.github.com/jestjs/jest/pull/16049">#16049</a>)</li>
<li><code>glob</code> is updated to v13 (<a
href="https://redirect.github.com/jestjs/jest/pull/16397">#16397</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jestjs/jest/blob/main/CHANGELOG.md">jest's
changelog</a>.</em></p>
<blockquote>
<h2>30.5.0</h2>
<h3>Features</h3>
<ul>
<li><code>[@jest/expect-utils, jest-mock]</code> Add
<code>mockFn.whenCalledWith(...args)</code> for configuring return
values per argument list, with first-class asymmetric-matcher support
(<a
href="https://redirect.github.com/jestjs/jest/pull/16053">#16053</a>)</li>
<li><code>[@jest/expect-utils]</code> Export
<code>AsymmetricMatcher</code> and <code>FunctionParameters</code> types
(previously private to <code>expect</code>) (<a
href="https://redirect.github.com/jestjs/jest/pull/16053">#16053</a>)</li>
<li><code>[jest-circus, jest-core, jest-jasmine2, jest-test-result,
jest-types]</code> <code>--collectTests</code> now expands
<code>test.each</code>/<code>describe.each</code> cases and reports
per-status counts (skipped/todo via the new <code>wouldRun</code> flag
for selected tests) plus a summary line that match a real run, including
under <code>--testNamePattern</code> and
<code>.only</code>/<code>fdescribe</code> focus on both the circus and
jasmine2 runners (<a
href="https://redirect.github.com/jestjs/jest/pull/16259">#16259</a>)</li>
<li><code>[jest-circus, jest-environment, jest-runtime,
jest-types]</code> Add describe-level retries via
<code>jest.retryTimes(..., {entireDescribe: true})</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/16322">#16322</a>)</li>
<li><code>[jest-circus, jest-message-util, jest-reporters,
jest-types]</code> Add <code>retryMessages</code> to
<code>AssertionResult</code> and export <code>formatErrorStack</code>,
so the retry log renders nested <code>cause</code> and
<code>AggregateError</code> sections with code frames instead of
serialized <code>[cause]:</code>/<code>[errors]:</code> markers (<a
href="https://redirect.github.com/jestjs/jest/pull/16316">#16316</a>)</li>
<li><code>[jest-circus, jest-types]</code> Add
<code>unhandledErrorsDetailed</code> to <code>Circus.RunResult</code>,
so an unhandled rejection reports its <code>cause</code> chain and
<code>AggregateError</code> entries with code frames instead of a
pre-serialized stack (<a
href="https://redirect.github.com/jestjs/jest/pull/16316">#16316</a>)</li>
<li><code>[jest-haste-map]</code> Replace <code>NodeWatcher</code> and
<code>FSEventsWatcher</code> with <code>@parcel/watcher</code> for the
non-watchman watch path (<a
href="https://redirect.github.com/jestjs/jest/pull/16188">#16188</a>)</li>
<li><code>[jest-resolve]</code> Bump <code>unrs-resolver</code> to
1.12.1, remove <code>jest-pnp-resolver</code> and unnecessary checks (<a
href="https://redirect.github.com/jestjs/jest/pull/15721">#15721</a>)</li>
<li><code>[jest-resolve]</code> Honor Node's
<code>--preserve-symlinks</code> / <code>NODE_PRESERVE_SYMLINKS</code>
in the default resolver by passing <code>symlinks: false</code> to
<code>unrs-resolver</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/16260">#16260</a>)</li>
<li><code>[jest-runtime]</code> Apply automocking and manual
<code>__mocks__</code> files to synchronously evaluable ESM graphs on
Node 24.9+ - static imports, dynamic <code>import()</code> and
<code>require()</code> of an ESM file now generate an automock from the
real module's namespace instead of failing with &quot;Attempting to
import a mock without a factory&quot;. Graphs that need async evaluation
(top-level await) or an async-only resolver or transformer still throw
(<a
href="https://redirect.github.com/jestjs/jest/pull/16391">#16391</a>)</li>
<li><code>[jest-runtime]</code> Route
<code>process.getBuiltinModule</code> through the sandbox, so it returns
the sandbox <code>process</code> and the hooked <code>node:module</code>
instead of the host's (<a
href="https://redirect.github.com/jestjs/jest/pull/16391">#16391</a>)</li>
<li><code>[jest-runtime]</code> Throw an actionable error from
<code>module.register()</code> and <code>module.registerHooks()</code>
inside a test - the hooks attached to the loader running Jest itself,
never saw the sandboxed requires they were meant for, and stayed
registered for every later test file in the worker (<a
href="https://redirect.github.com/jestjs/jest/pull/16391">#16391</a>)</li>
<li><code>[jest-runtime]</code> Surface resolution and import-attribute
errors in an ESM graph before executing any of its CJS dependencies on
Node 24.9+, matching Node's run-nothing-on-a-broken-graph behavior; the
legacy loader on older versions keeps its linking-time execution order
(<a
href="https://redirect.github.com/jestjs/jest/pull/16391">#16391</a>)</li>
<li><code>[jest-runtime]</code> Throw
<code>ERR_SOURCE_PHASE_NOT_DEFINED</code> with an actionable message for
<code>import source</code> and <code>import.source()</code>, instead of
failing at instantiation with V8's bare &quot;Source phase import object
is not defined&quot; (<a
href="https://redirect.github.com/jestjs/jest/pull/16391">#16391</a>)</li>
<li><code>[jest-runtime]</code> Emit the JSON-without-import-attribute
deprecation warning once per test file instead of once per worker, so it
is no longer silently swallowed for every file after the first (<a
href="https://redirect.github.com/jestjs/jest/pull/16391">#16391</a>)</li>
<li><code>[jest-runtime]</code> Set <code>import.meta.main</code> to
<code>true</code> in the test file and <code>false</code> in every
module it loads, matching Node 24+ (<a
href="https://redirect.github.com/jestjs/jest/pull/16367">#16367</a>)</li>
<li><code>[jest-runtime]</code> Resolve the <code>module-sync</code>
export condition, so a package that exposes its ESM entry point for
<code>require()</code> loads the same file Node would (<a
href="https://redirect.github.com/jestjs/jest/pull/16336">#16336</a>)</li>
<li><code>[jest-snapshot]</code> Add external snapshot paths to custom
reporter failure details (<a
href="https://redirect.github.com/jestjs/jest/pull/16374">#16374</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>[jest-console, jest-reporters]</code>
<code>CustomConsole</code> now buffers console output so
<code>TestResult.console</code> is populated for reporters when
<code>verbose</code> is enabled, while
<code>GitHubActionsReporter</code> avoids replaying buffered output in
verbose mode (<a
href="https://redirect.github.com/jestjs/jest/pull/16155">#16155</a>)</li>
<li><code>[expect, jest-message-util, jest-pattern, jest-regex-util,
jest-util]</code> Revert <code>node:</code> protocol imports to restore
webpack/browser-bundle compatibility (<a
href="https://redirect.github.com/jestjs/jest/pull/16167">#16167</a>)</li>
<li><code>[expect]</code> Widen <code>toMatchObject</code> and
<code>objectContaining</code> parameter type from
<code>Record&lt;string, unknown&gt;</code> to <code>object</code> so
class instances are accepted (<a
href="https://redirect.github.com/jestjs/jest/pull/16196">#16196</a>)</li>
<li><code>[jest-circus]</code> Call a generator test body with the
shared test context, so <code>this</code> matches what a regular test
function receives (<a
href="https://redirect.github.com/jestjs/jest/pull/16347">#16347</a>)</li>
<li><code>[jest-circus]</code> Capture the error listeners of the parent
process instead of the in-sandbox <code>process</code>, so listeners
registered before the test file survive teardown and sandbox listeners
no longer leak onto the parent (<a
href="https://redirect.github.com/jestjs/jest/pull/16347">#16347</a>)</li>
<li><code>[jest-circus]</code> Clear <code>currentlyRunningTest</code>
after skipped and todo tests (<a
href="https://redirect.github.com/jestjs/jest/pull/16342">#16342</a>)</li>
<li><code>[jest-circus]</code> Prevent late <code>done()</code>
callbacks from affecting later test or hook invocations (<a
href="https://redirect.github.com/jestjs/jest/pull/16343">#16343</a>)</li>
<li><code>[jest-circus, jest-jasmine2]</code> Honor
<code>--expand</code> when formatting <code>node:assert</code> failures,
instead of always collapsing the diff (<a
href="https://redirect.github.com/jestjs/jest/pull/16347">#16347</a>)</li>
<li><code>[jest-circus, jest-jasmine2, jest-message-util]</code>
Serialize the inner errors of an <code>AggregateError</code> into
<code>failureMessages</code>, <code>retryReasons</code> and
<code>unhandledErrors</code>, so <code>--json</code> output and reporter
annotations include them (<a
href="https://redirect.github.com/jestjs/jest/pull/16316">#16316</a>)</li>
<li><code>[jest-circus, jest-snapshot]</code> Keep snapshot state and
counts correct when a test retries (<a
href="https://redirect.github.com/jestjs/jest/pull/16344">#16344</a>)</li>
<li><code>[@jest/create-cache-key-function]</code> Include the caller
support flags in the generated key, so a transformer that emits ESM or
CJS based on them no longer shares one cache entry between the two (<a
href="https://redirect.github.com/jestjs/jest/pull/16331">#16331</a>)</li>
<li><code>[@jest/create-cache-key-function]</code> Include the
stringified project config in the generated key, so editing a
transformer's own settings invalidates what it cached (<a
href="https://redirect.github.com/jestjs/jest/pull/16331">#16331</a>)</li>
<li><code>[@jest/transform]</code> Include the caller support flags in a
transform's cache key, so a file transformed both as ESM and as CJS no
longer serves one shape's output for the other (<a
href="https://redirect.github.com/jestjs/jest/pull/16331">#16331</a>)</li>
<li><code>[jest-config]</code> Add missing
<code>findRelatedTests</code>, <code>outputFile</code>, and
<code>replname</code> entries to <code>ValidConfig</code> so they no
longer trigger spurious &quot;Unknown option&quot; warnings (<a
href="https://redirect.github.com/jestjs/jest/pull/16224">#16224</a>)</li>
<li><code>[jest-config]</code> Use <code>--config</code> for the global
config when multiple <code>--projects</code> are specified (<a
href="https://redirect.github.com/jestjs/jest/pull/16273">#16273</a>)</li>
<li><code>[jest-core]</code> Serialize <code>bigint</code> values in
<code>--json</code> and <code>--outputFile</code> output as their
literal form (<code>4n</code>), instead of failing the run with
<code>TypeError: Do not know how to serialize a BigInt</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/16338">#16338</a>)</li>
<li><code>[jest-core]</code> Do not report a <code>CustomGC</code> async
resource (used by N-API addons such as napi-rs for per-isolate GC
bookkeeping) as an open handle, since it is <code>napi_unref</code>'d by
the addon and can never keep the event loop alive (<a
href="https://redirect.github.com/jestjs/jest/pull/16379">#16379</a>)</li>
<li><code>[jest-each]</code> Keep a <code>$&amp;</code>,
<code>$`</code>, <code>$'</code> or <code>$$</code> inside a
<code>%p</code> param value out of the replacement, so the title shows
the value instead of the text around it (<a
href="https://redirect.github.com/jestjs/jest/pull/16338">#16338</a>)</li>
<li><code>[jest-each]</code> Interpolate a <code>bigint</code> into a
<code>%j</code> title as its literal form (<code>&quot;4n&quot;</code>)
at any depth, instead of throwing <code>TypeError: Do not know how to
serialize a BigInt</code> while collecting the tests (<a
href="https://redirect.github.com/jestjs/jest/pull/16338">#16338</a>)</li>
<li><code>[jest-environment, jest-runtime]</code> Bind
<code>sandboxInjectedGlobals</code> to the right values when
<code>injectGlobals</code> is <code>false</code>, instead of shifting
every one of them by a position (<a
href="https://redirect.github.com/jestjs/jest/pull/16377">#16377</a>)</li>
<li><code>[jest-environment-node, jest-util]</code> Only warn about a
conflicting <code>globalsCleanup</code> mode when one was explicitly
configured, and follow the mode that is actually in effect (<a
href="https://redirect.github.com/jestjs/jest/pull/16323">#16323</a>)</li>
<li><code>[jest-environment-node, jest-util]</code> Stop resolving lazy
g...

_Description has been truncated_

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 01:11:18 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4b29b60d13 chore(deps-dev): bump the minor-and-patch group in /libs/checkpoint-conformance with 2 updates (#8771)
Bumps the minor-and-patch group in /libs/checkpoint-conformance with 2
updates: [ruff](https://github.com/astral-sh/ruff) and
[ty](https://github.com/astral-sh/ty).

Updates `ruff` from 0.16.0 to 0.16.5
<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.16.5</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>Install ruff 0.16.5</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.16.5/ruff-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c &quot;irm
https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1
| iex&quot;
</code></pre>
<h2>Download ruff 0.16.5</h2>
<!-- 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.16.5</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>0.16.4</h2>
<p>Released on 2026-08-20.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>flake8-use-pathlib</code>] Add autofix for
<code>PTH116</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26460">#26460</a>)</li>
<li>[<code>refurb</code>] Restrict <code>delete-full-slice</code> to
lists (<code>FURB131</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27711">#27711</a>)</li>
<li>[<code>refurb</code>] Skip <code>FURB101</code> and
<code>FURB103</code> when the <code>open</code> argument is a file
descriptor (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27643">#27643</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix <code>InvalidInstruction</code> on Windows CPUs that do not
support <code>POPCNT</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27803">#27803</a>)</li>
<li>[<code>pyflakes</code>] Emit semantic syntax errors in string type
definitions as <code>F722</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27835">#27835</a>)</li>
<li>[<code>pylint</code>] Allow <code>os._exit</code> imports in
<code>import-private-name</code> (<code>PLC2701</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27738">#27738</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a"><code>9e4938c</code></a>
Bump 0.16.5 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28110">#28110</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd"><code>aad0e90</code></a>
Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28049">#28049</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4"><code>5fdab73</code></a>
Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27877">#27877</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4"><code>29c8e5b</code></a>
Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27910">#27910</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f"><code>50a4d7f</code></a>
Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27906">#27906</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2"><code>ada8795</code></a>
Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27666">#27666</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0"><code>d894723</code></a>
[ty] Infer lambda parameters through callable type aliases (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28109">#28109</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06"><code>2685fde</code></a>
[ty] Narrow functional enum members in <code>==</code> and
<code>match</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28103">#28103</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec"><code>efcffd2</code></a>
[ty] Intersection simplifications with subtype-related generic
specialization...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b"><code>eb78048</code></a>
[ty] Bump ecosystem-analyzer for HTML escaping (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28104">#28104</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.16.0...0.16.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `ty` from 0.0.64 to 0.0.75
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/releases">ty's
releases</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/blob/main/CHANGELOG.md">ty's
changelog</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
<li>Preserve invariant materialization constraints (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28047">#28047</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ty/commit/a553dcc1a4c464b22d6fff8c46d444e326e0ae2d"><code>a553dcc</code></a>
Bump version to 0.0.75 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4396">#4396</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/26b1b50998e92a5f50c342dc4a1fed84db2f8ee4"><code>26b1b50</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4392">#4392</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/73d226ee4d5a9274bc559c50a244159b61dfa315"><code>73d226e</code></a>
Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/issues/4384">#4384</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5e264dac66970648d461a3fc8f2ebebd30a44dc9"><code>5e264da</code></a>
Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/issues/4382">#4382</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/00199f0aaa6a8cd264fea08eae4f3c3fe4451c17"><code>00199f0</code></a>
Bump version to 0.0.74 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4351">#4351</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5769062fa10db84f6c03145bdf42d0b8da9aeb63"><code>5769062</code></a>
Update mypy/pyright comparison table (<a
href="https://redirect.github.com/astral-sh/ty/issues/4165">#4165</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/4fcb06010f2219b80adf3e688964abd9b0d72866"><code>4fcb060</code></a>
Remove Zulip from the PGO training (<a
href="https://redirect.github.com/astral-sh/ty/issues/4336">#4336</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/a7a706442a710db4a93c1a79779dff5ec5824cf6"><code>a7a7064</code></a>
Use the versions bot's ruleset bypass when merging (<a
href="https://redirect.github.com/astral-sh/ty/issues/4333">#4333</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/01b0fab0093c64535a401bc2731f80d7f5b6a7a8"><code>01b0fab</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4325">#4325</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/deef42f517bfbacb2ffe673046bef1e206c6b8ab"><code>deef42f</code></a>
Update dependency python to 3.14 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4326">#4326</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ty/compare/0.0.64...0.0.75">compare
view</a></li>
</ul>
</details>
<br />


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

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

---

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

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 01:11:11 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
59738d1550 chore(deps-dev): bump the minor-and-patch group in /libs/prebuilt with 3 updates (#8774)
Bumps the minor-and-patch group in /libs/prebuilt with 3 updates:
[langchain-core](https://github.com/langchain-ai/langchain),
[ruff](https://github.com/astral-sh/ruff) and
[ty](https://github.com/astral-sh/ty).

Updates `langchain-core` from 1.5.2 to 1.6.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langchain/releases">langchain-core's
releases</a>.</em></p>
<blockquote>
<h2>langchain-core==1.6.1</h2>
<p>Changes since langchain-core==1.6.0</p>
<p>revert: release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39971">#39971</a>)
release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39967">#39967</a>)
fix(core): shore up indexing in genai v1 streaming content (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39964">#39964</a>)
fix(core): make <code>StructuredTool</code> JSON-serializable (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39631">#39631</a>)
chore(deps): bump minor and patch dependencies (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39869">#39869</a>)
release(core): 1.6.1 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39832">#39832</a>)
feat(core): propagate gateway information on error path (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39829">#39829</a>)</p>
<h2>langchain-core==1.6.0</h2>
<p>Changes since langchain-core==1.5.6</p>
<p>release(core): 1.6.0 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39760">#39760</a>)
fix(core): resolve postponed annotations in
<code>StructuredTool._injected_args_keys</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39602">#39602</a>)
feat(core): add standard model exception types (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39538">#39538</a>)
fix(core): allow deserializing <code>RunnablePick</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39753">#39753</a>)
fix(core): make <code>convert_to_openai_function</code> handle callables
and non-dict mappings (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39750">#39750</a>)
fix(core): make subprocess and temporary file tests portable on Windows
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39664">#39664</a>)
fix(core): fail fast when tool schemas can't resolve forward refs during
serialization (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39570">#39570</a>)
test(core): avoid version-dependent runnable snapshots (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39705">#39705</a>)
fix(core): require all nested properties for strict tool schemas (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39306">#39306</a>)
fix(core): remove stale sync-stream <code>xfail</code> [closes <a
href="https://redirect.github.com/langchain-ai/langchain/issues/39720">#39720</a>]
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39723">#39723</a>)
perf(core): Lazily import transformers (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38037">#38037</a>)
fix(core): accept non-dict Mapping values in mustache templates (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39680">#39680</a>)
docs(core): clarify <code>Runnable</code> pipe coercion [closes <a
href="https://redirect.github.com/langchain-ai/langchain/issues/39075">#39075</a>]
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39707">#39707</a>)
fix(core): finalize chain-group runs on <code>BaseException</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39699">#39699</a>)</p>
<h2>langchain-core==1.5.6</h2>
<p>Changes since langchain-core==1.5.5</p>
<p>chore(core): release 1.5.6 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39704">#39704</a>)
feat(core): incorporate gateway metadata to traces (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39703">#39703</a>)</p>
<h2>langchain-core==1.5.5</h2>
<p>Changes since langchain-core==1.5.4</p>
<p>release(core): 1.5.5 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39655">#39655</a>)
fix(core): make abatch_iterate consistent with batch_iterate for None
and zero size (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39367">#39367</a>)
fix(core): respect pydantic aliases when validating tool inputs (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39572">#39572</a>)
fix(core): issues in merging chunks (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39535">#39535</a>)
fix(core): handle v1 base model validation in async path (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39576">#39576</a>)
fix(core): handle tool descriptions for infer_schema=False (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39573">#39573</a>)
fix(core): clear usage metadata callback on exceptions in context
manager (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39616">#39616</a>)
fix(core): handle falsy LLM and chat model caches (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39283">#39283</a>)
chore(core): add httpx as an explicit dep (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39612">#39612</a>)
fix(core): preserve non-str/non-dict items in
<code>DictPromptTemplate</code> list values (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39588">#39588</a>)
fix(core): raise ValueError when explicit tool_outputs length mismatches
tool_calls in tool_example_to_messages (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39142">#39142</a>)
fix(core): guard malformed Anthropic content blocks (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38670">#38670</a>)</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langchain/commit/4fe9d3062f4b68e2e472eb92decf369c93aebb46"><code>4fe9d30</code></a>
chore(openai): fix tests (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39972">#39972</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/8fa38dc143faecec0287395bce4484af4b82254c"><code>8fa38dc</code></a>
revert: release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39971">#39971</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/122030d79e944a5b55c33847d29bcfbe64488372"><code>122030d</code></a>
release(core): 1.6.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39967">#39967</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/7d4b42b57235020e6f496fdfebab44c3ca1b1f5b"><code>7d4b42b</code></a>
release(langchain): 1.3.18 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39966">#39966</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/4a66e355da07b8fad7d6cb8db99287fb4d7e6d83"><code>4a66e35</code></a>
fix(langchain): preserve content-block shape in PIIMiddleware redaction
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39894">#39894</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/38e211359f0b65b480d9ee4c53f2385f8c249bb3"><code>38e2113</code></a>
fix(core): shore up indexing in genai v1 streaming content (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39964">#39964</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/13b1b2feae476fdcebc0a285a723d5cbfed9df2e"><code>13b1b2f</code></a>
fix(core): make <code>StructuredTool</code> JSON-serializable (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39631">#39631</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/3b3b308e6d956c9a670e41e66a468466fe6f8c26"><code>3b3b308</code></a>
release(anthropic): 1.7.0 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39963">#39963</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/e3f6adfe1976a773704a20fef7bb03ac0309e0e4"><code>e3f6adf</code></a>
feat(anthropic): support top-level param for skills via
<code>container</code>; `updates...</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/c253f54b905f9648c50b723f01945f39a256d8aa"><code>c253f54</code></a>
fix(openai): correct <code>reasoning_effort_levels</code> for gpt-5 and
gpt-5.1 profiles...</li>
<li>Additional commits viewable in <a
href="https://github.com/langchain-ai/langchain/compare/langchain-core==1.5.2...langchain-core==1.6.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.16.0 to 0.16.5
<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.16.5</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>Install ruff 0.16.5</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.16.5/ruff-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c &quot;irm
https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1
| iex&quot;
</code></pre>
<h2>Download ruff 0.16.5</h2>
<!-- 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.16.5</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>0.16.4</h2>
<p>Released on 2026-08-20.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>flake8-use-pathlib</code>] Add autofix for
<code>PTH116</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26460">#26460</a>)</li>
<li>[<code>refurb</code>] Restrict <code>delete-full-slice</code> to
lists (<code>FURB131</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27711">#27711</a>)</li>
<li>[<code>refurb</code>] Skip <code>FURB101</code> and
<code>FURB103</code> when the <code>open</code> argument is a file
descriptor (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27643">#27643</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix <code>InvalidInstruction</code> on Windows CPUs that do not
support <code>POPCNT</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27803">#27803</a>)</li>
<li>[<code>pyflakes</code>] Emit semantic syntax errors in string type
definitions as <code>F722</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27835">#27835</a>)</li>
<li>[<code>pylint</code>] Allow <code>os._exit</code> imports in
<code>import-private-name</code> (<code>PLC2701</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27738">#27738</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a"><code>9e4938c</code></a>
Bump 0.16.5 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28110">#28110</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd"><code>aad0e90</code></a>
Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28049">#28049</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4"><code>5fdab73</code></a>
Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27877">#27877</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4"><code>29c8e5b</code></a>
Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27910">#27910</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f"><code>50a4d7f</code></a>
Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27906">#27906</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2"><code>ada8795</code></a>
Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27666">#27666</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0"><code>d894723</code></a>
[ty] Infer lambda parameters through callable type aliases (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28109">#28109</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06"><code>2685fde</code></a>
[ty] Narrow functional enum members in <code>==</code> and
<code>match</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28103">#28103</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec"><code>efcffd2</code></a>
[ty] Intersection simplifications with subtype-related generic
specialization...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b"><code>eb78048</code></a>
[ty] Bump ecosystem-analyzer for HTML escaping (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28104">#28104</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.16.0...0.16.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `ty` from 0.0.64 to 0.0.75
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/releases">ty's
releases</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/blob/main/CHANGELOG.md">ty's
changelog</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
<li>Preserve invariant materialization constraints (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28047">#28047</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ty/commit/a553dcc1a4c464b22d6fff8c46d444e326e0ae2d"><code>a553dcc</code></a>
Bump version to 0.0.75 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4396">#4396</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/26b1b50998e92a5f50c342dc4a1fed84db2f8ee4"><code>26b1b50</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4392">#4392</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/73d226ee4d5a9274bc559c50a244159b61dfa315"><code>73d226e</code></a>
Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/issues/4384">#4384</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5e264dac66970648d461a3fc8f2ebebd30a44dc9"><code>5e264da</code></a>
Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/issues/4382">#4382</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/00199f0aaa6a8cd264fea08eae4f3c3fe4451c17"><code>00199f0</code></a>
Bump version to 0.0.74 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4351">#4351</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5769062fa10db84f6c03145bdf42d0b8da9aeb63"><code>5769062</code></a>
Update mypy/pyright comparison table (<a
href="https://redirect.github.com/astral-sh/ty/issues/4165">#4165</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/4fcb06010f2219b80adf3e688964abd9b0d72866"><code>4fcb060</code></a>
Remove Zulip from the PGO training (<a
href="https://redirect.github.com/astral-sh/ty/issues/4336">#4336</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/a7a706442a710db4a93c1a79779dff5ec5824cf6"><code>a7a7064</code></a>
Use the versions bot's ruleset bypass when merging (<a
href="https://redirect.github.com/astral-sh/ty/issues/4333">#4333</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/01b0fab0093c64535a401bc2731f80d7f5b6a7a8"><code>01b0fab</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4325">#4325</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/deef42f517bfbacb2ffe673046bef1e206c6b8ab"><code>deef42f</code></a>
Update dependency python to 3.14 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4326">#4326</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ty/compare/0.0.64...0.0.75">compare
view</a></li>
</ul>
</details>
<br />


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

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

---

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

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 01:11:02 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2efb0073a5 chore(deps): bump the minor-and-patch group in /libs/checkpoint-postgres with 3 updates (#8773)
Bumps the minor-and-patch group in /libs/checkpoint-postgres with 3
updates: [orjson](https://github.com/ijl/orjson),
[ruff](https://github.com/astral-sh/ruff) and
[ty](https://github.com/astral-sh/ty).

Updates `orjson` from 3.11.9 to 3.12.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ijl/orjson/releases">orjson's
releases</a>.</em></p>
<blockquote>
<h2>3.12.0</h2>
<h3>Changed</h3>
<ul>
<li>Serialization implementation substantially rewritten.</li>
<li>Publish PyPI wheels for Python 3.15. For Python 3.15 and later,
<code>manylinux_2_39</code> (2024) is targeted instead of
<code>manylinux_2_17</code> (2012).</li>
<li>No longer publish PyPI wheels for ppc64le and s390x.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ijl/orjson/blob/master/CHANGELOG.md">orjson's
changelog</a>.</em></p>
<blockquote>
<h2>3.12.0 - 2026-08-14</h2>
<h3>Changed</h3>
<ul>
<li>Serialization implementation substantially rewritten.</li>
<li>Publish PyPI wheels for Python 3.15. For Python 3.15 and later,
<code>manylinux_2_39</code> (2024) is targeted instead of
<code>manylinux_2_17</code> (2012).</li>
<li>No longer publish PyPI wheels for ppc64le and s390x.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ijl/orjson/commit/6737895a1a4e3e26df0569a40147893a786f9a58"><code>6737895</code></a>
3.12.0</li>
<li><a
href="https://github.com/ijl/orjson/commit/c2a6e8ff7b898635fb68a85bd5a62df1edf61cfc"><code>c2a6e8f</code></a>
JsonWriter, iterators</li>
<li><a
href="https://github.com/ijl/orjson/commit/6a2d7a7d66dc3c5698625a7b334c40db459e46ae"><code>6a2d7a7</code></a>
yyjson 1ea2fb0</li>
<li><a
href="https://github.com/ijl/orjson/commit/97bf170d9726e91c891f35eae4892801520b9dce"><code>97bf170</code></a>
build update</li>
<li>See full diff in <a
href="https://github.com/ijl/orjson/compare/3.11.9...3.12.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.16.0 to 0.16.5
<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.16.5</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>Install ruff 0.16.5</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.16.5/ruff-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c &quot;irm
https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1
| iex&quot;
</code></pre>
<h2>Download ruff 0.16.5</h2>
<!-- 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.16.5</h2>
<p>Released on 2026-08-27.</p>
<h3>Preview features</h3>
<ul>
<li>Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li>
<li>Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li>
<li>Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-async</code>] Detect blocking generic HTTP requests
(<code>ASYNC210</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li>
<li>[<code>flake8-datetimez</code>] Allow timezone-safe
<code>strptime</code> chains (<code>DTZ007</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li>
<li>[<code>flake8-simplify</code>] Respect side effects in
<code>lambda</code> defaults (<code>SIM401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix duplicated &quot;of&quot; in <code>ClientOptions</code> doc
comment (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li>
<li>Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/jelle-openai"><code>@​jelle-openai</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/aarushkandukoori"><code>@​aarushkandukoori</code></a></li>
</ul>
<h2>0.16.4</h2>
<p>Released on 2026-08-20.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>flake8-use-pathlib</code>] Add autofix for
<code>PTH116</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26460">#26460</a>)</li>
<li>[<code>refurb</code>] Restrict <code>delete-full-slice</code> to
lists (<code>FURB131</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27711">#27711</a>)</li>
<li>[<code>refurb</code>] Skip <code>FURB101</code> and
<code>FURB103</code> when the <code>open</code> argument is a file
descriptor (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27643">#27643</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix <code>InvalidInstruction</code> on Windows CPUs that do not
support <code>POPCNT</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27803">#27803</a>)</li>
<li>[<code>pyflakes</code>] Emit semantic syntax errors in string type
definitions as <code>F722</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27835">#27835</a>)</li>
<li>[<code>pylint</code>] Allow <code>os._exit</code> imports in
<code>import-private-name</code> (<code>PLC2701</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27738">#27738</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a"><code>9e4938c</code></a>
Bump 0.16.5 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28110">#28110</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd"><code>aad0e90</code></a>
Allow rules without codes (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28049">#28049</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4"><code>5fdab73</code></a>
Update preview default rules and categories (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27877">#27877</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4"><code>29c8e5b</code></a>
Document rule acceptance guidelines (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27910">#27910</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f"><code>50a4d7f</code></a>
Document the new category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27906">#27906</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2"><code>ada8795</code></a>
Introduce category selectors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27666">#27666</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0"><code>d894723</code></a>
[ty] Infer lambda parameters through callable type aliases (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28109">#28109</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06"><code>2685fde</code></a>
[ty] Narrow functional enum members in <code>==</code> and
<code>match</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28103">#28103</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec"><code>efcffd2</code></a>
[ty] Intersection simplifications with subtype-related generic
specialization...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b"><code>eb78048</code></a>
[ty] Bump ecosystem-analyzer for HTML escaping (<a
href="https://redirect.github.com/astral-sh/ruff/issues/28104">#28104</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.16.0...0.16.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `ty` from 0.0.64 to 0.0.75
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/releases">ty's
releases</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/blob/main/CHANGELOG.md">ty's
changelog</a>.</em></p>
<blockquote>
<h2>0.0.75</h2>
<p>Released on 2026-08-26.</p>
<h3>Preview features</h3>
<ul>
<li>Initialize PEP 723 script environments in the CLI (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li>
<li>Refresh PEP 723 script environments in watch mode (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li>
<li>Run PEP 723 script synchronization on bounded workers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Specialize <code>Self</code> bounds of inherited methods (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li>
</ul>
<h3>LSP server</h3>
<ul>
<li>Add &quot;Go to Definition&quot; support for pytest fixtures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li>
<li>Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Resolve imported pytest fixture exposures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li>
<li>Resolve installed core pytest fixture providers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li>
<li>Resolve pytest fixtures through conftest (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Add more autofixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li>
<li>Add a dedicated missing-slot diagnostic (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li>
<li>Explain missing storage for declared slotted attributes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li>
<li>Improve diagnostic spans for unpacked variable assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Account for known subclasses in equality inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li>
<li>Expand <code>ParamSpec</code> signatures inferred from bound
receivers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li>
<li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li>
<li>Fix <code>TypedDict</code> variance inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li>
<li>Fix unsound narrowing through branch-assigned conditions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li>
<li>Ignore inconsistent binding decorators on overloads (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li>
<li>Infer <code>yield from</code> send/return types from the iterator
returned by <code>__iter__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li>
<li>Infer tuple type parameters from union arguments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li>
<li>Infer variance through nonrecursive protocol references (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li>
<li>Preserve bounds of non-literal metaclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li>
<li>Preserve correlated generic-call inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li>
<li>Preserve invariant materialization constraints (<a
href="https://redirect.github.com/astral-sh/ruff/pull/28047">#28047</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ty/commit/a553dcc1a4c464b22d6fff8c46d444e326e0ae2d"><code>a553dcc</code></a>
Bump version to 0.0.75 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4396">#4396</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/26b1b50998e92a5f50c342dc4a1fed84db2f8ee4"><code>26b1b50</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4392">#4392</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/73d226ee4d5a9274bc559c50a244159b61dfa315"><code>73d226e</code></a>
Fix documented Python package build command (<a
href="https://redirect.github.com/astral-sh/ty/issues/4384">#4384</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5e264dac66970648d461a3fc8f2ebebd30a44dc9"><code>5e264da</code></a>
Link untyped-call tracking issue in migration guide (<a
href="https://redirect.github.com/astral-sh/ty/issues/4382">#4382</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/00199f0aaa6a8cd264fea08eae4f3c3fe4451c17"><code>00199f0</code></a>
Bump version to 0.0.74 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4351">#4351</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5769062fa10db84f6c03145bdf42d0b8da9aeb63"><code>5769062</code></a>
Update mypy/pyright comparison table (<a
href="https://redirect.github.com/astral-sh/ty/issues/4165">#4165</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/4fcb06010f2219b80adf3e688964abd9b0d72866"><code>4fcb060</code></a>
Remove Zulip from the PGO training (<a
href="https://redirect.github.com/astral-sh/ty/issues/4336">#4336</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/a7a706442a710db4a93c1a79779dff5ec5824cf6"><code>a7a7064</code></a>
Use the versions bot's ruleset bypass when merging (<a
href="https://redirect.github.com/astral-sh/ty/issues/4333">#4333</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/01b0fab0093c64535a401bc2731f80d7f5b6a7a8"><code>01b0fab</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4325">#4325</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/deef42f517bfbacb2ffe673046bef1e206c6b8ab"><code>deef42f</code></a>
Update dependency python to 3.14 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4326">#4326</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ty/compare/0.0.64...0.0.75">compare
view</a></li>
</ul>
</details>
<br />


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

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

---

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

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 01:10:58 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
408e964501 chore(deps): bump dorny/paths-filter from 4.0.2 to 4.0.3 in the minor-and-patch group (#8770)
Bumps the minor-and-patch group with 1 update:
[dorny/paths-filter](https://github.com/dorny/paths-filter).

Updates `dorny/paths-filter` from 4.0.2 to 4.0.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dorny/paths-filter/releases">dorny/paths-filter's
releases</a>.</em></p>
<blockquote>
<h2>v4.0.3</h2>
<h2>What's Changed</h2>
<ul>
<li>Update Outputs in readme to account for the 'every'
predicate-quantifier by <a
href="https://github.com/hintron"><code>@​hintron</code></a> in <a
href="https://redirect.github.com/dorny/paths-filter/pull/247">dorny/paths-filter#247</a></li>
<li>fix: scope base-ignored warning to API path by <a
href="https://github.com/saschabratton"><code>@​saschabratton</code></a>
in <a
href="https://redirect.github.com/dorny/paths-filter/pull/319">dorny/paths-filter#319</a></li>
<li>docs: add contents permission to PR example by <a
href="https://github.com/134130"><code>@​134130</code></a> in <a
href="https://redirect.github.com/dorny/paths-filter/pull/248">dorny/paths-filter#248</a></li>
<li>feat: add 'some-with-excludes' predicate quantifier by <a
href="https://github.com/arxeiss"><code>@​arxeiss</code></a> in <a
href="https://redirect.github.com/dorny/paths-filter/pull/322">dorny/paths-filter#322</a></li>
<li>Document safe handling of file list outputs in workflows by <a
href="https://github.com/dorny"><code>@​dorny</code></a> in <a
href="https://redirect.github.com/dorny/paths-filter/pull/326">dorny/paths-filter#326</a></li>
</ul>
<h2>Security</h2>
<ul>
<li>Escape multi-line filenames in list-files shell and csv output] by
<a href="https://github.com/ken-matsui"><code>@​ken-matsui</code></a>
and <a href="https://github.com/tjswlsgg"><code>@​tjswlsgg</code></a> in
<a
href="https://github.com/advisories/GHSA-7hc6-8hq5-9q2m">https://github.com/advisories/GHSA-7hc6-8hq5-9q2m</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/hintron"><code>@​hintron</code></a> made
their first contribution in <a
href="https://redirect.github.com/dorny/paths-filter/pull/247">dorny/paths-filter#247</a></li>
<li><a href="https://github.com/134130"><code>@​134130</code></a> made
their first contribution in <a
href="https://redirect.github.com/dorny/paths-filter/pull/248">dorny/paths-filter#248</a></li>
<li><a href="https://github.com/arxeiss"><code>@​arxeiss</code></a> made
their first contribution in <a
href="https://redirect.github.com/dorny/paths-filter/pull/322">dorny/paths-filter#322</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/dorny/paths-filter/compare/v4...v4.0.3">https://github.com/dorny/paths-filter/compare/v4...v4.0.3</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/dorny/paths-filter/blob/master/CHANGELOG.md">dorny/paths-filter's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>v4.0.3</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/326">Document
safe handling of file list outputs in workflows</a></li>
<li><a href="https://github.com/advisories/GHSA-7hc6-8hq5-9q2m">Escape
multi-line filenames in list-files shell and csv output</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/322">Add
'some-with-excludes' predicate quantifier</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/248">Add
contents permission to PR example</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/319">Scope
base-ignored warning to API path</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/247">Update
outputs in readme to account for the 'every'
predicate-quantifier</a></li>
</ul>
<h2>v4.0.2</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/317">Work
around git dubious ownership errors in container jobs</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/303">Use
rev-parse instead of branch --show-current for older git compat</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/282">Fix
warning message</a></li>
</ul>
<h2>v4.0.1</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/255">Support
merge queue</a></li>
</ul>
<h2>v4.0.0</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/294">Update
action runtime to node24</a></li>
</ul>
<h2>v3.0.4</h2>
<ul>
<li><a href="https://github.com/advisories/GHSA-7hc6-8hq5-9q2m">Escape
multi-line filenames in list-files shell and csv output</a></li>
</ul>
<h2>v3.0.3</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/279">Add
missing predicate-quantifier</a></li>
</ul>
<h2>v3.0.2</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/224">Add
config parameter for predicate quantifier</a></li>
</ul>
<h2>v3.0.1</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/133">Compare
base and ref when token is empty</a></li>
</ul>
<h2>v3.0.0</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/210">Update to
Node.js 20</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/215">Update
all dependencies</a></li>
</ul>
<h2>v2.11.1</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/167">Update
@​actions/core to v1.10.0 - Fixes warning about deprecated
set-output</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/168">Document
need for pull-requests: read permission</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/164">Updating
to actions/checkout@v3</a></li>
</ul>
<h2>v2.11.0</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/157">Set
list-files input parameter as not required</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/161">Update
Node.js</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/162">Fix
incorrect handling of Unicode characters in exec()</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/163">Use
Octokit pagination</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/160">Updates
real world links</a></li>
</ul>
<h2>v2.10.2</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/dorny/paths-filter/commit/ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d"><code>ceb8a2b</code></a>
Update CHANGELOG.md for v4.0.3 and v3.0.4 (<a
href="https://redirect.github.com/dorny/paths-filter/issues/327">#327</a>)</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/ef09b88f3eacdbec6ce135a7c9a193a6849545c1"><code>ef09b88</code></a>
Document safe handling of file list outputs in workflows (<a
href="https://redirect.github.com/dorny/paths-filter/issues/326">#326</a>)</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/44adc5b06dc135dba334efce9bf3cf0624512d2d"><code>44adc5b</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/4711b7a31b4aa89103d8c6ffab2e3b8e7b6381c7"><code>4711b7a</code></a>
feat: add 'some-with-excludes' predicate quantifier (<a
href="https://redirect.github.com/dorny/paths-filter/issues/322">#322</a>)</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/93c889f9e58fca66f35a0c83d8673ac7e88bb70a"><code>93c889f</code></a>
fix: escape multi-line filenames in list-files shell and csv output</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/b41dfa943b1939b9b646f67753bfe35cf6e4de03"><code>b41dfa9</code></a>
docs: add contents permission to PR example (<a
href="https://redirect.github.com/dorny/paths-filter/issues/248">#248</a>)</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/9af6e5a9d010d1ae8ec570390b3d793e2b70a402"><code>9af6e5a</code></a>
fix: scope base-ignored warning to API path (<a
href="https://redirect.github.com/dorny/paths-filter/issues/319">#319</a>)</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/cae9006b65a1a53044b518c68e13e835c54948a7"><code>cae9006</code></a>
docs: update outputs in readme to account for the 'every'
predicate-quantifie...</li>
<li>See full diff in <a
href="https://github.com/dorny/paths-filter/compare/7b450fff21473bca461d4b92ce414b9d0420d706...ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dorny/paths-filter&package-manager=github_actions&previous-version=4.0.2&new-version=4.0.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

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

---

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

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 01:10:35 -07:00
11ee185999 fix(checkpoint): widen Store put value type to Mapping[str, Any] (#8617)
TypedDict values don't structurally satisfy dict[str, Any] since dict
implies full mutability. Mapping[str, Any] accepts both plain dicts and
TypedDicts while still requiring string keys, matching what put()
actually needs from callers.

Fixes #8616

Verified by running lint/type/test locally across checkpoint,
checkpoint-sqlite, checkpoint-postgres, prebuilt, sdk-py, and a scoped
langgraph subset.

LinkedIn: https://linkedin.com/in/lisandro-navarra

---------

Co-authored-by: Mason Daugherty <github@mdrxy.com>
2026-08-28 08:05:04 -05:00
Sreekara YachamaneniandGitHub d5f4b2aa96 release(sdk-py): 0.4.4 (#8738)
Bumps the Python SDK version from 0.4.3 to 0.4.4.
2026-08-27 17:14:54 -04:00
Sreekara YachamaneniandGitHub 5a77be5e8b Merge commit from fork
* authz fix for custom auth

* add back resource param

* auth on multiple resources
2026-08-27 13:28:59 -07:00
Mason DaughertyGitHubopen-swe[bot] <open-swe@users.noreply.github.com>
bdb8a9c7a4 feat: route LangSmith traces from thread streams (#8723)
## Description
Expose the existing `langsmith_tracing` option on Python sync and async
thread-stream run starts and forward it through the protocol.

## Release Note
Python thread streams can route traces to an additional LangSmith
project per run.

## Test Plan
- [x] Verify sync and async run-start payloads include tracing settings

## Related PRs
- langchain-ai/agent-protocol#95
- langchain-ai/langgraphjs#2745
- langchain-ai/langgraph-api#4033

Made by [Open
SWE](https://openswe.vercel.app/agents/f9e34294-b9c3-52f0-815a-0102188e1181)

Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-08-26 16:57:39 -04:00
John KennedyGitHublangsmith-fleet[bot] <langsmith-fleet[bot]@users.noreply.github.com>
38031739e5 docs: add Corridor agent instructions (#8677)
Add a repository-wide `<corridor>` block to `AGENTS.md` requiring agents
to plan first and run Corridor `analyzePlan` before generating or
modifying code. The tags are explicit and balanced so Corridor-specific
guidance remains scoped.

Validation: `git diff --check` and a tag-balance assertion.

---------

Co-authored-by: langsmith-fleet[bot] <langsmith-fleet[bot]@users.noreply.github.com>
2026-08-24 14:42:27 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f09cfe8ffc chore(deps): bump langgraph-checkpoint-postgres from 3.0.5 to 3.1.1 in /libs/cli/uv-examples/monorepo in the uv group across 1 directory (#8646)
Bumps the uv group with 1 update in the /libs/cli/uv-examples/monorepo
directory:
[langgraph-checkpoint-postgres](https://github.com/langchain-ai/langgraph).

Updates `langgraph-checkpoint-postgres` from 3.0.5 to 3.1.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langgraph/releases">langgraph-checkpoint-postgres's
releases</a>.</em></p>
<blockquote>
<h2>langgraph-checkpoint-postgres==3.1.1</h2>
<p>Changes since checkpointpostgres==3.1.0</p>
<ul>
<li>release(checkpoint-postgres): 3.1.1 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8480">#8480</a>)</li>
<li>fix(checkpoint-postgres,checkpoint-sqlite): scope namespace matching
to segment boundaries (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8478">#8478</a>)</li>
<li>feat(checkpoint,checkpoint-postgres): add opt-in omit_expired to
skip expired rows on read (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8354">#8354</a>)</li>
<li>chore(deps): bump the minor-and-patch group in
/libs/checkpoint-postgres with 5 updates (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8250">#8250</a>)</li>
<li>chore(deps): bump langsmith from 0.8.0 to 0.8.18 in
/libs/checkpoint-postgres (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8171">#8171</a>)</li>
<li>docs: standardize package <code>README.md</code> structure (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8064">#8064</a>)</li>
<li>chore: migrate Python type checking to ty (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8002">#8002</a>)</li>
<li>chore(deps): bump the minor-and-patch group in
/libs/checkpoint-postgres with 7 updates (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7965">#7965</a>)</li>
<li>release(checkpoint): 4.1.1 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7890">#7890</a>)</li>
<li>chore(deps): bump idna from 3.11 to 3.15 in
/libs/checkpoint-postgres (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7861">#7861</a>)</li>
<li>chore(deps): bump langsmith from 0.7.31 to 0.8.0 in
/libs/checkpoint-postgres (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7785">#7785</a>)</li>
</ul>
<h2>langgraph-checkpoint-sqlite==3.1.1</h2>
<p>Changes since checkpointsqlite==3.1.0</p>
<ul>
<li>release(checkpoint-sqlite): 3.1.1 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8481">#8481</a>)</li>
<li>fix(checkpoint-postgres,checkpoint-sqlite): scope namespace matching
to segment boundaries (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8478">#8478</a>)</li>
<li>chore(deps): bump the minor-and-patch group in
/libs/checkpoint-sqlite with 4 updates (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8249">#8249</a>)</li>
<li>chore(deps): bump langsmith from 0.8.0 to 0.8.18 in
/libs/checkpoint-sqlite (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8177">#8177</a>)</li>
<li>docs: standardize package <code>README.md</code> structure (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8064">#8064</a>)</li>
<li>chore: migrate Python type checking to ty (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8002">#8002</a>)</li>
<li>chore(deps): bump the minor-and-patch group in
/libs/checkpoint-sqlite with 3 updates (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7961">#7961</a>)</li>
<li>release(checkpoint): 4.1.1 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7890">#7890</a>)</li>
<li>chore(deps): bump langsmith from 0.7.31 to 0.8.0 in
/libs/checkpoint-sqlite (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7786">#7786</a>)</li>
<li>chore(deps): bump idna from 3.11 to 3.15 in /libs/checkpoint-sqlite
(<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7862">#7862</a>)</li>
</ul>
<h2>langgraph-checkpoint-postgres==3.1.0</h2>
<p>Changes since checkpointpostgres==3.1.0a4</p>
<ul>
<li>release: bump alpha packages to official versions (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7775">#7775</a>)</li>
<li>chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in
/libs/checkpoint-postgres (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7761">#7761</a>)</li>
<li>chore(deps): bump langchain-core from 1.3.2 to 1.3.3 in
/libs/checkpoint-postgres (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7754">#7754</a>)</li>
<li>fix(checkpoint-postgres): add column aliases to seed-blob branch of
delta stage-2 UNION ALL (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7728">#7728</a>)</li>
</ul>
<h2>langgraph-checkpoint-sqlite==3.1.0</h2>
<p>Changes since checkpointsqlite==3.1.0a1</p>
<ul>
<li>release: bump alpha packages to official versions (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7775">#7775</a>)</li>
<li>chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in
/libs/checkpoint-sqlite (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7760">#7760</a>)</li>
<li>chore(deps): bump langchain-core from 1.2.28 to 1.3.3 in
/libs/checkpoint-sqlite (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7751">#7751</a>)</li>
<li>chore: remove keepset helper (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7745">#7745</a>)</li>
<li>chore(langgraph): add guide/conformance for delta channel
checkpointer (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7736">#7736</a>)</li>
</ul>
<h2>langgraph-checkpoint-postgres==3.1.0a4</h2>
<p>Changes since checkpointpostgres==3.1.0a3</p>
<ul>
<li>release: alpha bump (a4) for langgraph, checkpoint,
checkpoint-postgres (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/7701">#7701</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/b2926a0ff9589c28c7e01fe7cdbb337b86d5a4b4"><code>b2926a0</code></a>
release(checkpoint-sqlite): 3.1.1 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8481">#8481</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/fcdf520938469c8e0992ca2075d6a9582c33260f"><code>fcdf520</code></a>
release(checkpoint-postgres): 3.1.1 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8480">#8480</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/66ebe1a0da921e73f0f9f879ba105d314c079f7c"><code>66ebe1a</code></a>
fix(checkpoint-postgres,checkpoint-sqlite): scope namespace matching to
segme...</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/41341457342327166d72fc11952ab28fb61ec0bf"><code>4134145</code></a>
release(langgraph): 1.2.10 (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8462">#8462</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/30c4d58db86455128e42ddec96b1ba53c553ba22"><code>30c4d58</code></a>
chore(deps): bump jupyterlab from 4.5.9 to 4.5.10 in /libs/langgraph (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8440">#8440</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/1f2f88b2b74aa4e26c6a8be877dcb95bad2cef48"><code>1f2f88b</code></a>
chore(deps): bump js-yaml from 4.2.0 to 4.3.0 in
/libs/cli/js-monorepo-exampl...</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/270820363d56cf8a8e594d2d3b19d543230337fb"><code>2708203</code></a>
chore(deps): bump setuptools from 82.0.1 to 83.0.0 in /libs/cli (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8434">#8434</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/9f1e40bfeea28dee2155b4a57f5babd0a53534cf"><code>9f1e40b</code></a>
chore(deps): bump setuptools from 80.9.0 to 83.0.0 in /libs/langgraph
(<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8435">#8435</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/1e1ca88dad9c7e708263257fa9fc27a3fbdfff68"><code>1e1ca88</code></a>
feat(langgraph): type v3 stream_events return and native projections (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8389">#8389</a>)</li>
<li><a
href="https://github.com/langchain-ai/langgraph/commit/31f90df3e6b0268fa77fd2d118a917d420b84a68"><code>31f90df</code></a>
revert(langgraph): delete TracePolicy (<a
href="https://redirect.github.com/langchain-ai/langgraph/issues/8403">#8403</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/langchain-ai/langgraph/compare/checkpointpostgres==3.0.5...checkpointsqlite==3.1.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=langgraph-checkpoint-postgres&package-manager=uv&previous-version=3.0.5&new-version=3.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/langchain-ai/langgraph/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-20 07:02:48 +00:00
Connor BraaandGitHub 837212b969 release(sdk-py): 0.4.3 (#8657)
## Summary

Release `langgraph-sdk` 0.4.3, including `DecryptResult` support.

## Test plan

- `make format`
- `make lint`
- `make test`
2026-08-19 10:59:36 -07:00
Connor BraaandGitHub 70918557ca feat(sdk-py): add decrypt replacement result (#8598)
## Summary

- add `DecryptResult` with plaintext and optional replacement ciphertext
- keep raw decrypt return values backward compatible
- export the result from `langgraph_sdk`

## Merge order

Independent of langgraph-api#3884. Merge and release this SDK change
before LSD-1489 consumes the result in langgraph-api.

## Test plan

- `make format`
- `make lint`
- `make test`
2026-08-19 10:45:55 -07:00
1e44bda48f fix(langgraph): detect subgraphs from bytecode instead of source (#8569)
Fixes langchain-ai/langgraph#8559

`find_subgraph_pregel` runs once per node at build time and recovers
each node function's reachable values with `inspect.getsource` +
`ast.parse`; langchain-ai/langgraph#8559 measures that source parsing at
80% of `StateGraph.compile()`. This replaces it with a `dis` walk over
`func.__code__`, which reads the same information already in memory.

Closure cells and the globals named in `co_names` supply the values
directly, and a walk over the instruction stream recovers the attribute
paths the function actually takes. The closure alone cannot express
those: a captured `holder` whose graph lives at `holder.graph` is
reachable only if something records that `graph` is loaded off `holder`.

Both implementations over-declare — a node can reference a graph it
never invokes — and this one over-declares a different set. It no longer
reports a graph named only along an attribute path in code the compiler
removed; such a path cannot execute, so that entry was always a phantom.
Nothing that can actually run stopped being detected.
`find_subgraph_pregel` returns the first `PregelProtocol` it finds, so
the remaining extra candidates only widen detection.

## Release note

Subgraph auto-detection now reads node functions' bytecode instead of
parsing their source. Graph builds with many function-backed nodes are
substantially faster, and subgraphs are now detected inside functions
with no retrievable source — defined in a REPL or notebook cell, or via
`exec` — where detection previously failed silently and returned
nothing.

## Performance

Against
[langgraph-build-bench](<https://github.com/soarez/langgraph-build-bench>)
— 713 nodes, 500 state fields, 264 tools; CPython 3.12.8, Apple silicon:

```
before   build 1412 ms   subgraph detection 1132 ms  (80%)
after    build  286 ms   subgraph detection    4 ms   (2%)
```

**4.9x on total build, \~266x on detection.** The bench prints whole ms;
at full precision detection is 1139 ms -> 4.23 ms.

Co-authored-by: Elior Nataf Lackritz <elior.nataflackritz@langchain.dev>
2026-08-18 12:04:28 -07:00
ccurmeandGitHub 644815f9e5 release(langgraph): 1.2.11 (#8595) 2026-08-11 09:55:59 -04:00
ccurmeandGitHub 7d6b5790ba feat(langgraph): expose trace_policy on add_node (#8523) 2026-08-11 09:19:43 -04:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>John Kennedyopen-swe[bot] <open-swe@users.noreply.github.com>
d56666f7fb chore(deps): bump the minor-and-patch group across 1 directory with 7 updates (#8533)
Bumps the minor-and-patch group with 7 updates in the /libs/langgraph
directory:

| Package | From | To |
| --- | --- | --- |
| [langchain-core](https://github.com/langchain-ai/langchain) | `1.4.8`
| `1.5.3` |
| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.8.0` | `3.8.1`
|
| [syrupy](https://github.com/syrupy-project/syrupy) | `5.3.4` | `5.5.3`
|
| [redis](https://github.com/redis/redis-py) | `8.0.1` | `8.1.0` |
| [ruff](https://github.com/astral-sh/ruff) | `0.15.20` | `0.16.1` |
| [ty](https://github.com/astral-sh/ty) | `0.0.55` | `0.0.66` |
| [anyio](https://github.com/agronholm/anyio) | `4.14.1` | `4.14.2` |


Updates `langchain-core` from 1.4.8 to 1.5.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langchain/releases">langchain-core's
releases</a>.</em></p>
<blockquote>
<h2>langchain-core==1.5.3</h2>
<p>Changes since langchain-core==1.5.2</p>
<p>release(core): 1.5.3 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39145">#39145</a>)
fix(core): fall back to <code>LANGSMITH_API_KEY</code> for gateway (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39115">#39115</a>)</p>
<h2>langchain-core==1.5.2</h2>
<p>Changes since langchain-core==1.5.1</p>
<p>release(core): 1.5.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39108">#39108</a>)
fix(core): handle empty string in gateway env vars (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39107">#39107</a>)
chore: bump setuptools from 82.0.0 to 83.0.0 in /libs/core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39032">#39032</a>)
chore: bump jupyterlab from 4.5.9 to 4.5.10 in /libs/core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39033">#39033</a>)
chore: bump setuptools from 80.9.0 to 83.0.0 in /libs/text-splitters (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39029">#39029</a>)</p>
<h2>langchain-core==1.5.1</h2>
<p>Changes since langchain-core==1.5.0</p>
<p>release(core): 1.5.1 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39042">#39042</a>)
feat(anthropic,fireworks,openai): support langsmith gateway through env
var (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38742">#38742</a>)
fix(core): use <code>tool_call_schema</code> cache for
<code>BaseTool</code> token counting in
<code>count_tokens_approximately</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39020">#39020</a>)</p>
<h2>langchain-core==1.5.0</h2>
<p>Changes since langchain-core==1.4.9</p>
<p>release(core): 1.5.0 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38978">#38978</a>)
feat(core): add <code>reasoning_effort</code> as a standard chat model
parameter (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38887">#38887</a>)
chore: bump soupsieve from 2.8 to 2.8.4 in /libs/core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38750">#38750</a>)
chore: bump mistune from 3.2.1 to 3.3.0 in /libs/core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38783">#38783</a>)</p>
<h2>langchain-core==1.4.9</h2>
<p>Changes since langchain-core==1.4.8</p>
<p>release(core): 1.4.9 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38728">#38728</a>)
fix(core): improve langsmith loader error messages (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35648">#35648</a>)
fix(core): output parser bugs in xml.py and pydantic.py (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35641">#35641</a>)
style(core): fix some ruff preview rules (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38656">#38656</a>)
fix(core): avoid <code>dict</code> shadowing in language models (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38480">#38480</a>)
fix(core): <code>_parse_google_docstring</code> mishandling continuation
lines with colons (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35680">#35680</a>)
fix(core): add messages to bare <code>raise ValueError</code> calls (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38158">#38158</a>)
fix(core): use <code>asyncio.get_running_loop()</code> in async contexts
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38157">#38157</a>)
chore: bump langsmith from 0.8.0 to 0.8.18 in /libs/core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38319">#38319</a>)
chore: bump jupyterlab from 4.5.7 to 4.5.9 in /libs/core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38326">#38326</a>)
chore: bump vcrpy from 8.1.1 to 8.2.1 in /libs/core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38327">#38327</a>)</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langchain/commit/01d8481ae3d457ec3751cbb0331ea3a4b720fa90"><code>01d8481</code></a>
release(core): 1.5.3 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39145">#39145</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/b8a6e36d3f810302c66065ea1c2892da000de550"><code>b8a6e36</code></a>
chore(model-profiles): refresh model profile data (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39141">#39141</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/cdca311de2958e497cfd823a45ddb770d0ef94c0"><code>cdca311</code></a>
fix(core): fall back to <code>LANGSMITH_API_KEY</code> for gateway (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39115">#39115</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/a5a8762436658b218dbfc5efff9e8ab8fabbe62f"><code>a5a8762</code></a>
ci: annotate uv bump workflow with PR links (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39112">#39112</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/557c0a986d5068085a945dcb3c9ce27257c4add8"><code>557c0a9</code></a>
chore(deps): bump uv to 0.12.0 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39111">#39111</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/835c85ae236a2d33cd11de4c98d28cbc6ebbd72f"><code>835c85a</code></a>
release(anthropic): 1.5.3 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39109">#39109</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/c1ab807b1f62ad04274c28f2b7d8c3141d8ba1f2"><code>c1ab807</code></a>
release(core): 1.5.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39108">#39108</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/313223347f842274432d8a2968b4be407e2722d8"><code>3132233</code></a>
fix(anthropic): preserve empty thinking field in signature_delta
streaming (#...</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/b3a6d9a012681df8a8e33345c8255ca69ec0e437"><code>b3a6d9a</code></a>
chore(model-profiles): refresh model profile data (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39105">#39105</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/447b51abbccde236838524ee717682a0dd2a6c09"><code>447b51a</code></a>
fix(anthropic): strip unsupported fields from system message content
blocks (...</li>
<li>Additional commits viewable in <a
href="https://github.com/langchain-ai/langchain/compare/langchain-core==1.4.8...langchain-core==1.5.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `xxhash` from 3.8.0 to 3.8.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ifduyue/python-xxhash/releases">xxhash's
releases</a>.</em></p>
<blockquote>
<h2>v3.8.1</h2>
<ul>
<li>Register the &quot;benchmark&quot; pytest mark to avoid
PytestUnknownMarkWarning</li>
<li>Update C extension docstrings and remove stale comments</li>
</ul>
<hr />
<p>Full list of changes: <a
href="https://github.com/ifduyue/python-xxhash/compare/v3.8.0...v3.8.1">https://github.com/ifduyue/python-xxhash/compare/v3.8.0...v3.8.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ifduyue/python-xxhash/blob/master/CHANGELOG.rst">xxhash's
changelog</a>.</em></p>
<blockquote>
<p>v3.8.1 2026-07-06</p>
<pre><code>
- Register the &quot;benchmark&quot; pytest mark to avoid
PytestUnknownMarkWarning
- Update C extension docstrings and remove stale comments
</code></pre>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/0a1adf7b6a5f26b821272985a0a987cca5446c23"><code>0a1adf7</code></a>
Release v3.8.1</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/aa419ca1478219b7ba2ad18a8fe05ca9d29288bc"><code>aa419ca</code></a>
Prepare 3.8.1</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/e26b770f19b5eabd1c58d098206e5c9adfcef5d1"><code>e26b770</code></a>
docs: update C extension docstrings and remove stale comments</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/aa69707513c4ba8c52a4bebc23f0aada7844decc"><code>aa69707</code></a>
Register the “benchmark” pytest mark</li>
<li>See full diff in <a
href="https://github.com/ifduyue/python-xxhash/compare/v3.8.0...v3.8.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `syrupy` from 5.3.4 to 5.5.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/syrupy-project/syrupy/releases">syrupy's
releases</a>.</em></p>
<blockquote>
<h2>v5.5.3</h2>
<h2>What's Changed</h2>
<p>This release has no functional changes. It just fixes an issue where
the release tag pointed to the previous commit instead of the commit
with the updated pyproject.toml (see <a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1144">syrupy-project/syrupy#1144</a>).</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/syrupy-project/syrupy/compare/v5.5.2...v5.5.3">https://github.com/syrupy-project/syrupy/compare/v5.5.2...v5.5.3</a></p>
<h2>v5.5.2</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: Fix detecting <code>pytest-xdist</code> when loaded via
<code>PYTEST_PLUGINS</code> by <a
href="https://github.com/mgorny"><code>@​mgorny</code></a> in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1142">syrupy-project/syrupy#1142</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/mgorny"><code>@​mgorny</code></a> made
their first contribution in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1142">syrupy-project/syrupy#1142</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/syrupy-project/syrupy/compare/v5.5.1...v5.5.2">https://github.com/syrupy-project/syrupy/compare/v5.5.1...v5.5.2</a></p>
<h2>v5.5.1</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: Defer registering <code>pytest-xdist</code> hook
<code>pytest_testnodedown</code> to avoid &quot;unknown hook&quot; error
by <a
href="https://github.com/edgarrmondragon"><code>@​edgarrmondragon</code></a>
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1140">syrupy-project/syrupy#1140</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/edgarrmondragon"><code>@​edgarrmondragon</code></a>
made their first contribution in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1140">syrupy-project/syrupy#1140</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/syrupy-project/syrupy/compare/v5.5.0...v5.5.1">https://github.com/syrupy-project/syrupy/compare/v5.5.0...v5.5.1</a></p>
<h2>v5.5.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: detect unused snapshots under pytest-xdist by <a
href="https://github.com/frenck"><code>@​frenck</code></a> in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1132">syrupy-project/syrupy#1132</a></li>
</ul>
<blockquote>
<p><strong>NOTE</strong>: Test suites using pytest-xdist that previously
passed due to incomplete snapshot support may now fail if unused
snapshots are detected. You can use <code>--snapshot-warn-unused</code>
to downgrade unused snapshot detection from an error to a warning though
it's not recommended.</p>
</blockquote>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/syrupy-project/syrupy/compare/v5.4.0...v5.5.0">https://github.com/syrupy-project/syrupy/compare/v5.4.0...v5.5.0</a></p>
<h2>v5.4.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: add --snapshot-no-cleanup to keep unused snapshots on update
by <a href="https://github.com/frenck"><code>@​frenck</code></a> in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1126">syrupy-project/syrupy#1126</a></li>
<li>fix: honor boolean operators in -k snapshot selection by <a
href="https://github.com/frenck"><code>@​frenck</code></a> in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1127">syrupy-project/syrupy#1127</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/syrupy-project/syrupy/compare/v5.3.4...v5.4.0">https://github.com/syrupy-project/syrupy/compare/v5.3.4...v5.4.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/syrupy-project/syrupy/blob/main/CHANGELOG.md">syrupy's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/syrupy-project/syrupy/releases/tag/v5.5.3">v5.5.3</a>
(2026-07-11)</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): update astral-sh/setup-uv action to v8.3.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1143">syrupy-project/syrupy#1143</a></li>
<li>chore(deps): update astral-sh/setup-uv action to v8.3.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1145">syrupy-project/syrupy#1145</a></li>
<li>chore(deps): update dependency hypothesis to v6.156.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1147">syrupy-project/syrupy#1147</a></li>
<li>chore(deps): update dependency mypy to v2.2.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1148">syrupy-project/syrupy#1148</a></li>
<li>chore(deps): update dependency hypothesis to v6.156.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1150">syrupy-project/syrupy#1150</a></li>
<li>chore: closes <a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1144">#1144</a>
by <a href="https://github.com/noahnu"><code>@​noahnu</code></a> in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1146">syrupy-project/syrupy#1146</a></li>
<li>chore(deps): update astral-sh/setup-uv action to v8.3.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1149">syrupy-project/syrupy#1149</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/syrupy-project/syrupy/compare/v5.5.2...v5.5.3">https://github.com/syrupy-project/syrupy/compare/v5.5.2...v5.5.3</a></p>
<h2><a
href="https://github.com/syrupy-project/syrupy/releases/tag/v5.5.2">v5.5.2</a>
(2026-07-08)</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: Fix detecting <code>pytest-xdist</code> when loaded via
<code>PYTEST_PLUGINS</code> by <a
href="https://github.com/mgorny"><code>@​mgorny</code></a> in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1142">syrupy-project/syrupy#1142</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/mgorny"><code>@​mgorny</code></a> made
their first contribution in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1142">syrupy-project/syrupy#1142</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/syrupy-project/syrupy/compare/v5.5.1...v5.5.2">https://github.com/syrupy-project/syrupy/compare/v5.5.1...v5.5.2</a></p>
<h2><a
href="https://github.com/syrupy-project/syrupy/releases/tag/v5.5.1">v5.5.1</a>
(2026-07-06)</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: Defer registering <code>pytest-xdist</code> hook
<code>pytest_testnodedown</code> to avoid &quot;unknown hook&quot; error
by <a
href="https://github.com/edgarrmondragon"><code>@​edgarrmondragon</code></a>
in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1140">syrupy-project/syrupy#1140</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/edgarrmondragon"><code>@​edgarrmondragon</code></a>
made their first contribution in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1140">syrupy-project/syrupy#1140</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/syrupy-project/syrupy/compare/v5.5.0...v5.5.1">https://github.com/syrupy-project/syrupy/compare/v5.5.0...v5.5.1</a></p>
<h2><a
href="https://github.com/syrupy-project/syrupy/releases/tag/v5.5.0">v5.5.0</a>
(2026-07-06)</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: detect unused snapshots under pytest-xdist by <a
href="https://github.com/frenck"><code>@​frenck</code></a> in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1132">syrupy-project/syrupy#1132</a></li>
</ul>
<blockquote>
<p><strong>NOTE</strong>: Test suites using pytest-xdist that previously
passed due to incomplete snapshot support may now fail if unused
snapshots are detected. You can use <code>--snapshot-warn-unused</code>
to downgrade unused snapshot detection from an error to a warning though
it's not recommended.</p>
</blockquote>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/syrupy-project/syrupy/compare/v5.4.0...v5.5.0">https://github.com/syrupy-project/syrupy/compare/v5.4.0...v5.5.0</a></p>
<h2><a
href="https://github.com/syrupy-project/syrupy/releases/tag/v5.4.0">v5.4.0</a>
(2026-07-01)</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: add --snapshot-no-cleanup to keep unused snapshots on update
by <a href="https://github.com/frenck"><code>@​frenck</code></a> in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1126">syrupy-project/syrupy#1126</a></li>
<li>fix: honor boolean operators in -k snapshot selection by <a
href="https://github.com/frenck"><code>@​frenck</code></a> in <a
href="https://redirect.github.com/syrupy-project/syrupy/pull/1127">syrupy-project/syrupy#1127</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/3cd347306cf44db076d2e4f50f7dfd325d9b5a92"><code>3cd3473</code></a>
chore(release): 5.5.3 [skip ci]</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/fed7e9f69f4dd14b39360e626236c868147588d5"><code>fed7e9f</code></a>
chore(deps): update astral-sh/setup-uv action to v8.3.2 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1149">#1149</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/443fc11bf67ce588753cd4518ef056463cfe651b"><code>443fc11</code></a>
chore: closes <a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1144">#1144</a>
(<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1146">#1146</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/56bf157ce4135bde78ecc49cfa9532ffa41659e8"><code>56bf157</code></a>
chore(deps): update dependency hypothesis to v6.156.3 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1150">#1150</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/f9c725a5653677bfcafb53645c9a078f3aa79d87"><code>f9c725a</code></a>
chore(deps): update dependency mypy to v2.2.0 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1148">#1148</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/3af2ccf2feeadb3a0d4e3f418d22ad3395725c80"><code>3af2ccf</code></a>
chore(deps): update dependency hypothesis to v6.156.2 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1147">#1147</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/feaa22ca4c211dfcdd8d0d048112531fd6cb344c"><code>feaa22c</code></a>
chore(deps): update astral-sh/setup-uv action to v8.3.1 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1145">#1145</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/5c59701e411922a464497398f5df25d76f2f9dcd"><code>5c59701</code></a>
chore(deps): update astral-sh/setup-uv action to v8.3.0 (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1143">#1143</a>)</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/1cbf7167ff114e3012b1c139661777c1a0b692ee"><code>1cbf716</code></a>
chore(release): 5.5.2 [skip ci]</li>
<li><a
href="https://github.com/syrupy-project/syrupy/commit/4f83490d2ebf4ae22aeba6d9946979640151aa34"><code>4f83490</code></a>
fix: Fix detecting <code>pytest-xdist</code> when loaded via
<code>PYTEST_PLUGINS</code> (<a
href="https://redirect.github.com/syrupy-project/syrupy/issues/1142">#1142</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/syrupy-project/syrupy/compare/v5.3.4...v5.5.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `redis` from 8.0.1 to 8.1.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/redis/redis-py/releases">redis's
releases</a>.</em></p>
<blockquote>
<h2>8.1.0</h2>
<h1>Changes</h1>
<h2> Highlights</h2>
<h3>Async maintenance notifications</h3>
<p>redis-py now supports server-pushed <strong>maintenance
notifications</strong> in the asyncio stack for both
standalone and cluster clients, bringing the async client to parity with
the sync implementation.
When a Redis deployment signals maintenance events (such as node
migration or failover windows), the
async client reacts through the maintenance-notifications handler
(<code>redis/maint_notifications.py</code> and
its async integration under <code>redis/asyncio/</code>), allowing
applications to adapt connection handling
during maintenance without downtime. (<a
href="https://redirect.github.com/redis/redis-py/issues/4177">#4177</a>)</p>
<h3>Expanded command coverage</h3>
<p>This release adds a batch of new command surfaces across core data
types and modules:</p>
<ul>
<li><strong>Lists</strong> — <code>LMOVEM</code> / <code>BLMOVEM</code>
for moving multiple elements between lists (<a
href="https://redirect.github.com/redis/redis-py/issues/4174">#4174</a>).</li>
<li><strong>Sets</strong> — <code>SDIFFCARD</code> and
<code>SUNIONCARD</code> cardinality commands (<a
href="https://redirect.github.com/redis/redis-py/issues/4171">#4171</a>).</li>
<li><strong>Streams</strong> — <code>MAXCOUNT</code> /
<code>MAXSIZE</code> options for <code>XREAD</code> and
<code>XREADGROUP</code> (<a
href="https://redirect.github.com/redis/redis-py/issues/4173">#4173</a>).</li>
<li><strong>Time Series</strong> — <code>TS.READ</code> (<a
href="https://redirect.github.com/redis/redis-py/issues/4170">#4170</a>),
<code>TS.QUERYLABELS</code> (<a
href="https://redirect.github.com/redis/redis-py/issues/4197">#4197</a>),
<code>TS.NRANGE</code> / <code>TS.NREVRANGE</code> (<a
href="https://redirect.github.com/redis/redis-py/issues/4163">#4163</a>),
and an <code>exclude_empty</code> (<code>EXCLUDEEMPTY</code>) option for
<code>TS.MRANGE</code> / <code>TS.MREVRANGE</code> (<a
href="https://redirect.github.com/redis/redis-py/issues/4188">#4188</a>).</li>
<li><strong>Search</strong> — <code>FT.ALIASLIST</code> (<a
href="https://redirect.github.com/redis/redis-py/issues/4198">#4198</a>)
and a <code>COLLECT</code> reducer for aggregations (<a
href="https://redirect.github.com/redis/redis-py/issues/4179">#4179</a>).</li>
<li><strong>Sentinel</strong> — replica sentinel aliases (<a
href="https://redirect.github.com/redis/redis-py/issues/4127">#4127</a>).</li>
</ul>
<h2>🚀 New Features</h2>
<ul>
<li>Add replica sentinel aliases (<a
href="https://redirect.github.com/redis/redis-py/issues/4127">#4127</a>)</li>
<li>Add TS.NRANGE and TS.NREVRANGE support to the timeseries command
surface (<a
href="https://redirect.github.com/redis/redis-py/issues/4163">#4163</a>)</li>
<li>feat: add TS.READ command support to the timeseries module (<a
href="https://redirect.github.com/redis/redis-py/issues/4170">#4170</a>)</li>
<li>feat: add SDIFFCARD and SUNIONCARD command support (<a
href="https://redirect.github.com/redis/redis-py/issues/4171">#4171</a>)</li>
<li>feat: add MAXCOUNT/MAXSIZE support to XREAD and XREADGROUP (<a
href="https://redirect.github.com/redis/redis-py/issues/4173">#4173</a>)</li>
<li>feat: add LMOVEM and BLMOVEM commands for moving multiple list
elements (<a
href="https://redirect.github.com/redis/redis-py/issues/4174">#4174</a>)</li>
<li>feat: add async maintenance-notifications support for standalone and
cluster clients (<a
href="https://redirect.github.com/redis/redis-py/issues/4177">#4177</a>)</li>
<li>feat: add COLLECT reducer support to search aggregations (<a
href="https://redirect.github.com/redis/redis-py/issues/4179">#4179</a>)</li>
<li>feat: add exclude_empty (EXCLUDEEMPTY) option to TS.MRANGE and
TS.MREVRANGE (<a
href="https://redirect.github.com/redis/redis-py/issues/4188">#4188</a>)</li>
<li>feat: add TS.QUERYLABELS support to the timeseries command surface
(<a
href="https://redirect.github.com/redis/redis-py/issues/4197">#4197</a>)</li>
<li>feat: add FT.ALIASLIST support (<a
href="https://redirect.github.com/redis/redis-py/issues/4198">#4198</a>)</li>
</ul>
<h2>⚠️ Experimental</h2>
<ul>
<li>feat: add client-side HIMPORT fieldset support for standalone and
cluster clients (<a
href="https://redirect.github.com/redis/redis-py/issues/4205">#4205</a>)</li>
</ul>
<p>The feature considered unstable and <strong>public API might be
changed in the future minor version</strong></p>
<h2>🐛 Bug Fixes</h2>
<ul>
<li>fix: detect closed pooled connection without consuming pending push
data (RESP3 + hiredis) (<a
href="https://redirect.github.com/redis/redis-py/issues/4156">#4156</a>)</li>
<li>Fix Sentinel pool capacity loss after failover (<a
href="https://redirect.github.com/redis/redis-py/issues/4193">#4193</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/redis/redis-py/commit/e013126df18e476fbb8b8215f040f39bd3242683"><code>e013126</code></a>
Testing with 8.10 GA (<a
href="https://redirect.github.com/redis/redis-py/issues/4227">#4227</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/059d1e97d88dd7ed516628e0a9765ab8e0e299f1"><code>059d1e9</code></a>
Fixed TS.NRANGE commands to correctly apply aggregators (<a
href="https://redirect.github.com/redis/redis-py/issues/4225">#4225</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/d486a0a982dcdf316006474dc286ca65cbec5a9f"><code>d486a0a</code></a>
Fix FIELDNAME alias dropping first character of un-prefixed fields (<a
href="https://redirect.github.com/redis/redis-py/issues/4224">#4224</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/fb931042420baaa5fbb9021955e444f7afa66dc2"><code>fb93104</code></a>
feat: add client-side HIMPORT fieldset support for standalone and
cluster cli...</li>
<li><a
href="https://github.com/redis/redis-py/commit/9197609f48eb9713411a50534ca48210486a4bf9"><code>9197609</code></a>
Fix lat/lon swap in search querystring geo() helper (<a
href="https://redirect.github.com/redis/redis-py/issues/4223">#4223</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/14714a0812d3ff03ad34c89ce6f79e287a04e9fb"><code>14714a0</code></a>
fix: Fixed double decoding issue with unquote() (<a
href="https://redirect.github.com/redis/redis-py/issues/4222">#4222</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/227280a939718d09ff9d7c41f9785ffdc21bdc2a"><code>227280a</code></a>
Update lib version to 8.1.0</li>
<li><a
href="https://github.com/redis/redis-py/commit/88d16d0db10c852d1d292628b2c832f1ed117056"><code>88d16d0</code></a>
Decode ACL LOG string values on the default RESP3 legacy callback (<a
href="https://redirect.github.com/redis/redis-py/issues/4201">#4201</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/599fd75ca7d0745928280ff3a64ccd224dbf2b76"><code>599fd75</code></a>
feat: add FT.ALIASLIST support (<a
href="https://redirect.github.com/redis/redis-py/issues/4198">#4198</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/71e275e6eae94d202b49bccce10ef0d2a59050e7"><code>71e275e</code></a>
test: add VectorField RERANK serialization tests for sync and async
search (#...</li>
<li>Additional commits viewable in <a
href="https://github.com/redis/redis-py/compare/v8.0.1...v8.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.15.20 to 0.16.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.16.1</h2>
<h2>Release Notes</h2>
<p>Released on 2026-07-30.</p>
<h3>Preview features</h3>
<ul>
<li>Add an option to opt out of human-readable names (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27160">#27160</a>)</li>
<li>[<code>flake8-pytest-style</code>] Make fixes safe by default and
unsafe only when comments are present (<code>PT018</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27201">#27201</a>)</li>
<li>[<code>pyupgrade</code>] Skip fix when a defaulted
<code>TypeVar</code> precedes a non-defaulted one (<code>UP040</code>,
<code>UP046</code>, <code>UP047</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27133">#27133</a>)</li>
<li>[<code>ruff</code>] Fix false positive with unpacked arguments
(<code>RUF065</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26959">#26959</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Bump <code>gen-lsp-types</code> to gracefully handle unknown
enumeration values in LSP messages (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27230">#27230</a>)</li>
<li>[<code>flake8-bugbear</code>] Mark <code>range</code> as immutable
(<code>B008</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27247">#27247</a>)</li>
<li>[<code>flake8-comprehensions</code>] NFKC-normalize keyword names in
<code>C408</code> fix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26813">#26813</a>)</li>
<li>[<code>flake8-return</code>] Fix false positive when variable is
read in <code>finally</code> clause (<code>RET504</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25441">#25441</a>)</li>
<li>[<code>pydocstyle</code>] Skip section detection inside RST
directive bodies (<code>D214</code>, <code>D405</code>,
<code>D413</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23635">#23635</a>)</li>
<li>[<code>refurb</code>] Parenthesize <code>yield</code> arguments in
the <code>FURB192</code> fix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27192">#27192</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-pytest-style</code>] Mark <code>PT022</code> fixes as
unsafe (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26440">#26440</a>)</li>
<li>[<code>refurb</code>] Mark fixes that remove unknown separators as
unsafe (<code>FURB105</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27200">#27200</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix indexing of excluded nested Ruff workspaces (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27303">#27303</a>)</li>
<li>Lint TOML files in the LSP (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26862">#26862</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Cover <code>pycon</code> Markdown formatting (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27153">#27153</a>)</li>
<li>[<code>flake8-bandit</code>] Document <code>TYPE_CHECKING</code>
exception (<code>S101</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27004">#27004</a>)</li>
<li>[<code>flake8-import-conventions</code>] Document that
<code>extend-aliases</code> can override default aliases (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27191">#27191</a>)</li>
<li>[<code>pylint</code>] Add missing fix safety gotchas for
<code>non-augmented-assignment</code> (<code>PLR6104</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27250">#27250</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Reduce syntax error noise by swallowing dedents like indents (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27170">#27170</a>)</li>
<li>Vendor latest annotate-snippets (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27033">#27033</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/bxff"><code>@​bxff</code></a></li>
<li><a
href="https://github.com/anishgirianish"><code>@​anishgirianish</code></a></li>
<li><a href="https://github.com/Avasam"><code>@​Avasam</code></a></li>
<li><a href="https://github.com/epage"><code>@​epage</code></a></li>
<li><a href="https://github.com/LHMQ878"><code>@​LHMQ878</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.16.1</h2>
<p>Released on 2026-07-30.</p>
<h3>Preview features</h3>
<ul>
<li>Add an option to opt out of human-readable names (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27160">#27160</a>)</li>
<li>[<code>flake8-pytest-style</code>] Make fixes safe by default and
unsafe only when comments are present (<code>PT018</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27201">#27201</a>)</li>
<li>[<code>pyupgrade</code>] Skip fix when a defaulted
<code>TypeVar</code> precedes a non-defaulted one (<code>UP040</code>,
<code>UP046</code>, <code>UP047</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27133">#27133</a>)</li>
<li>[<code>ruff</code>] Fix false positive with unpacked arguments
(<code>RUF065</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26959">#26959</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Bump <code>gen-lsp-types</code> to gracefully handle unknown
enumeration values in LSP messages (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27230">#27230</a>)</li>
<li>[<code>flake8-bugbear</code>] Mark <code>range</code> as immutable
(<code>B008</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27247">#27247</a>)</li>
<li>[<code>flake8-comprehensions</code>] NFKC-normalize keyword names in
<code>C408</code> fix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26813">#26813</a>)</li>
<li>[<code>flake8-return</code>] Fix false positive when variable is
read in <code>finally</code> clause (<code>RET504</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25441">#25441</a>)</li>
<li>[<code>pydocstyle</code>] Skip section detection inside RST
directive bodies (<code>D214</code>, <code>D405</code>,
<code>D413</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23635">#23635</a>)</li>
<li>[<code>refurb</code>] Parenthesize <code>yield</code> arguments in
the <code>FURB192</code> fix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27192">#27192</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-pytest-style</code>] Mark <code>PT022</code> fixes as
unsafe (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26440">#26440</a>)</li>
<li>[<code>refurb</code>] Mark fixes that remove unknown separators as
unsafe (<code>FURB105</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27200">#27200</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix indexing of excluded nested Ruff workspaces (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27303">#27303</a>)</li>
<li>Lint TOML files in the LSP (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26862">#26862</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Cover <code>pycon</code> Markdown formatting (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27153">#27153</a>)</li>
<li>[<code>flake8-bandit</code>] Document <code>TYPE_CHECKING</code>
exception (<code>S101</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27004">#27004</a>)</li>
<li>[<code>flake8-import-conventions</code>] Document that
<code>extend-aliases</code> can override default aliases (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27191">#27191</a>)</li>
<li>[<code>pylint</code>] Add missing fix safety gotchas for
<code>non-augmented-assignment</code> (<code>PLR6104</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27250">#27250</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Reduce syntax error noise by swallowing dedents like indents (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27170">#27170</a>)</li>
<li>Vendor latest annotate-snippets (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27033">#27033</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/bxff"><code>@​bxff</code></a></li>
<li><a
href="https://github.com/anishgirianish"><code>@​anishgirianish</code></a></li>
<li><a href="https://github.com/Avasam"><code>@​Avasam</code></a></li>
<li><a href="https://github.com/epage"><code>@​epage</code></a></li>
<li><a href="https://github.com/LHMQ878"><code>@​LHMQ878</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/80790b348b5188e7fc253665540f442c6ec7dd05"><code>80790b3</code></a>
Bump 0.16.1 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27330">#27330</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/63830f3e97b56ca3be0dd8f1092f76c4acc63213"><code>63830f3</code></a>
[ty] Borrow from constraint set storage less often (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27328">#27328</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/f40dca98a7f1b6fff0cee5ecf1e6364d5a8bdc15"><code>f40dca9</code></a>
[ty] Preserve forwarded expanded-variadic diagnostic sources (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27266">#27266</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/0d804975a2645d6e4a795cf501fd764b88aa47e3"><code>0d80497</code></a>
Lint TOML files in the LSP (<a
href="https://redirect.github.com/astral-sh/ruff/issues/26862">#26862</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d91586bd5b30f77f6614d57b73fc7dbea9051a0e"><code>d91586b</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27293">#27293</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/7da4b8b8d78fd6df2b3e06d8466d9cd49822900d"><code>7da4b8b</code></a>
[ty] Respect bounds and constraints in generic materializations (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27228">#27228</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/b20daf741241a6829ff8963a203f7847561deb62"><code>b20daf7</code></a>
[ty] refactor: add helper function to send partial results (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27249">#27249</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/4d4c8fa1c75b00561ea24eefefb13eb5ff80e01f"><code>4d4c8fa</code></a>
[ty] Emit diagnostic when specializing a non-generic class (<a
href="https://redirect.github.com/astral-sh/ruff/issues/26883">#26883</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/7c3e2db97deb5c5edd6e4303403ef6caf2bde8be"><code>7c3e2db</code></a>
[ty] Fix enum class container assignability (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27318">#27318</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d5ef97fcd03e108f7510f84b8ed85bb4051311fe"><code>d5ef97f</code></a>
[<code>flake8-return</code>] Fix false positive when variable is read in
<code>finally</code> claus...</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.15.20...0.16.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `ty` from 0.0.55 to 0.0.66
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/releases">ty's
releases</a>.</em></p>
<blockquote>
<h2>0.0.66</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-03.</p>
<h3>LSP server</h3>
<ul>
<li>Index <code>with</code>-statement targets as symbols (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27256">#27256</a>)</li>
<li>Trigger signature help after completing callable with parentheses
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/27084">#27084</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Pydantic: Recognize models installed on extra search paths (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27429">#27429</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Detect <code>__aenter__</code> and <code>__aexit__</code> that do
not return awaitables (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27414">#27414</a>)</li>
<li>Diagnose dataclass fields after inherited defaults (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27327">#27327</a>)</li>
<li>Emit diagnostic when specializing a non-generic class (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26883">#26883</a>)</li>
<li>Improve error context for incompatible callable signatures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27422">#27422</a>)</li>
<li>Preserve forwarded expanded-variadic diagnostic sources (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27266">#27266</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Avoid over-materializing user-defined <code>TypeIs</code> return
types (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26864">#26864</a>)</li>
<li>Fix enum class container assignability (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27318">#27318</a>)</li>
<li>Hide stub-only helpers from implicit builtin lookup (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27423">#27423</a>)</li>
<li>Move <code>Unknown</code> out of the experimental
<code>ty_extensions</code> API (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27430">#27430</a>)</li>
<li>Preserve <code>TypeVarTuple</code> context during
<code>Generic</code> recovery (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27381">#27381</a>)</li>
<li>Preserve exact numeric types in covariant collections (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27311">#27311</a>)</li>
<li>Reject <code>ClassVar</code> and <code>Final</code> qualifiers in
<code>NamedTuple</code> fields (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27380">#27380</a>)</li>
<li>Reject out-of-scope <code>ParamSpec</code> components (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27378">#27378</a>)</li>
<li>Reject specializing non-generic subclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27377">#27377</a>)</li>
<li>Respect bounds and constraints in generic materializations (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27228">#27228</a>)</li>
<li>Sync vendored typeshed stubs (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27401">#27401</a>).
<a
href="https://github.com/python/typeshed/compare/b00c387c669cb50d5d388d77b74c2e832e147fe8...1b116673774d062a4af7b0a0b3d05533a6be55d0">Typeshed
diff</a></li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/dhruvmanila"><code>@​dhruvmanila</code></a></li>
<li><a href="https://github.com/carljm"><code>@​carljm</code></a></li>
<li><a
href="https://github.com/Punisheroot"><code>@​Punisheroot</code></a></li>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a
href="https://github.com/cheparity"><code>@​cheparity</code></a></li>
<li><a
href="https://github.com/BitWeaverDev"><code>@​BitWeaverDev</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ribru17"><code>@​ribru17</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
</ul>
<h2>Install ty 0.0.66</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/blob/main/CHANGELOG.md">ty's
changelog</a>.</em></p>
<blockquote>
<h2>0.0.66</h2>
<p>Released on 2026-08-03.</p>
<h3>LSP server</h3>
<ul>
<li>Index <code>with</code>-statement targets as symbols (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27256">#27256</a>)</li>
<li>Trigger signature help after completing callable with parentheses
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/27084">#27084</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Pydantic: Recognize models installed on extra search paths (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27429">#27429</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Detect <code>__aenter__</code> and <code>__aexit__</code> that do
not return awaitables (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27414">#27414</a>)</li>
<li>Diagnose dataclass fields after inherited defaults (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27327">#27327</a>)</li>
<li>Emit diagnostic when specializing a non-generic class (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26883">#26883</a>)</li>
<li>Improve error context for incompatible callable signatures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27422">#27422</a>)</li>
<li>Preserve forwarded expanded-variadic diagnostic sources (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27266">#27266</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Avoid over-materializing user-defined <code>TypeIs</code> return
types (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26864">#26864</a>)</li>
<li>Fix enum class container assignability (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27318">#27318</a>)</li>
<li>Hide stub-only helpers from implicit builtin lookup (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27423">#27423</a>)</li>
<li>Move <code>Unknown</code> out of the experimental
<code>ty_extensions</code> API (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27430">#27430</a>)</li>
<li>Preserve <code>TypeVarTuple</code> context during
<code>Generic</code> recovery (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27381">#27381</a>)</li>
<li>Preserve exact numeric types in covariant collections (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27311">#27311</a>)</li>
<li>Reject <code>ClassVar</code> and <code>Final</code> qualifiers in
<code>NamedTuple</code> fields (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27380">#27380</a>)</li>
<li>Reject out-of-scope <code>ParamSpec</code> components (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27378">#27378</a>)</li>
<li>Reject specializing non-generic subclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27377">#27377</a>)</li>
<li>Respect bounds and constraints in generic materializations (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27228">#27228</a>)</li>
<li>Sync vendored typeshed stubs (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27401">#27401</a>).
<a
href="https://github.com/python/typeshed/compare/b00c387c669cb50d5d388d77b74c2e832e147fe8...1b116673774d062a4af7b0a0b3d05533a6be55d0">Typeshed
diff</a></li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/dhruvmanila"><code>@​dhruvmanila</code></a></li>
<li><a href="https://github.com/carljm"><code>@​carljm</code></a></li>
<li><a
href="https://github.com/Punisheroot"><code>@​Punisheroot</code></a></li>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a
href="https://github.com/cheparity"><code>@​cheparity</code></a></li>
<li><a
href="https://github.com/BitWeaverDev"><code>@​BitWeaverDev</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ribru17"><code>@​ribru17</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
</ul>
<h2>0.0.65</h2>
<p>Released on 2026-07-29.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ty/commit/3e28e58af75c3b16403c05ab401ae7347b65c5e2"><code>3e28e58</code></a>
Bump version to 0.0.66 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4166">#4166</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/87de836dfef2d3e1990440752e30e24cfb572f4e"><code>87de836</code></a>
Bump version to 0.0.65 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4113">#4113</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/d784bad352f4640e7f788eac4dfb0353ca199902"><code>d784bad</code></a>
README: Add link to Stable milestone (<a
href="https://redirect.github.com/astral-sh/ty/issues/4112">#4112</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/b4c1978dbdf18501ed03139e33ee8afaef251ec3"><code>b4c1978</code></a>
Update actions/setup-python action to v7 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4110">#4110</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/8d216a39dad99c4443396a08a77da00502cd7e58"><code>8d216a3</code></a>
Update actions/checkout action to v7.0.1 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4107">#4107</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/06f44e9039cb2764346c4bceaff4021ac143de9e"><code>06f44e9</code></a>
Update dependency prek to v0.4.10 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4108">#4108</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/b3665fde4804424576a30078bc0b7c101c5e2242"><code>b3665fd</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4109">#4109</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5e64a131b436a4e1f40e6317c526f4fc73fab38b"><code>5e64a13</code></a>
Bump version to 0.0.64 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4097">#4097</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/46f4915e67aad965b1b4e7478a75378e8e52ff6d"><code>46f4915</code></a>
Bump version to 0.0.63 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4071">#4071</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/df75992e7fd0cc73cb0f66e864df3f6e4fc4e1a6"><code>df75992</code></a>
Bump version to 0.0.62 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4057">#4057</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ty/compare/0.0.55...0.0.66">compare
view</a></li>
</ul>
</details>
<br />

Updates `anyio` from 4.14.1 to 4.14.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/agronholm/anyio/releases">anyio's
releases</a>.</em></p>
<blockquote>
<h2>4.14.2</h2>
<ul>
<li>Changed <code>ByteReceiveStream.receive()</code> implementations to
raise a <code>ValueError</code> when <code>max_bytes</code> is not a
positive integer (<a
href="https://redirect.github.com/agronholm/anyio/pull/1191">#1191</a>)</li>
<li>Fixed <code>CapacityLimiter.total_tokens</code> rejecting
<code>float(&quot;inf&quot;)</code> when the limiter was instantiated
outside of an event loop. The adapter setter checked for infinity by
identity (<code>value is math.inf</code>), so only the exact
<code>math.inf</code> singleton was accepted, while every backend setter
(using <code>math.isinf()</code>) accepts any positive infinity (<a
href="https://redirect.github.com/agronholm/anyio/pull/1189">#1189</a>;
PR by <a
href="https://github.com/greymoth-jp"><code>@​greymoth-jp</code></a>).</li>
<li>Fixed <code>to_process.run_sync()</code> deadlocking when the worker
function writes enough data to <code>sys.stderr</code> to fill the
(undrained) pipe buffer. The worker process now redirects
<code>sys.stderr</code> to <code>os.devnull</code> as well, matching the
documented behavior</li>
<li>Fixed <code>TLSStream.wrap()</code> matching an internationalized
(unicode) host name against the peer certificate using IDNA 2003 (via
the standard library) instead of IDNA 2008, which could cause the host
name to be matched against the wrong certificate (<a
href="https://redirect.github.com/agronholm/anyio/pull/1208">#1208</a>)</li>
<li>Fixed <code>anyio.open_process()</code> (and
<code>run_process()</code>) ignoring the <code>extra_groups</code>
argument, as it mistakenly passed the value of the <code>group</code>
argument instead (<a
href="https://redirect.github.com/agronholm/anyio/pull/1209">#1209</a>)</li>
<li>Fixed <code>CapacityLimiter.acquire_nowait()</code> and
<code>CapacityLimiter.acquire_nowait_on_behalf_of()</code> raising
<code>trio.WouldBlock</code> instead of <code>anyio.WouldBlock</code> on
the <code>trio</code> backend when there are no tokens available (<a
href="https://redirect.github.com/agronholm/anyio/pull/1218">#1218</a>)</li>
<li>Fixed <code>CapacityLimiter</code> on the asyncio backend
over-granting tokens (<code>borrowed_tokens</code> exceeding
<code>total_tokens</code> and <code>available_tokens</code> going
negative) when a non-blocking acquire was made in the window between a
token being released and the notified waiter resuming. The freed token
is now reserved for the woken waiter right away, so the non-blocking
acquire correctly raises <code>WouldBlock</code> (<a
href="https://redirect.github.com/agronholm/anyio/issues/1170">#1170</a>;
PR by <a
href="https://github.com/gaoflow"><code>@​gaoflow</code></a>)</li>
<li>Fixed unnecessary CPU spin when delivering cancellation from
<code>CancelScope</code> on asyncio under certain conditions, including
improper cancel scope nesting (<a
href="https://redirect.github.com/agronholm/anyio/issues/1111">#1111</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/agronholm/anyio/commit/c384f99687c64c59ed8a11c3a0f11a2d57daff71"><code>c384f99</code></a>
Bumped up the version</li>
<li><a
href="https://github.com/agronholm/anyio/commit/dbba29d1ade7936f18fb71ba24aa92978673482a"><code>dbba29d</code></a>
Fixed 100% CPU spin on cancel scope misuse (<a
href="https://redirect.github.com/agronholm/anyio/issues/1217">#1217</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/6bbc6c33caabc13af5bc4256f745027cf8d5d7b8"><code>6bbc6c3</code></a>
Fix CapacityLimiter over-granting tokens on asyncio (<a
href="https://redirect.github.com/agronholm/anyio/issues/1172">#1172</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/6f82b2537cbbe98f3df3f295499056ab7de0b15b"><code>6f82b25</code></a>
Refactored TestTLSStream.test_receive_invalid_max_bytes() to be less
flaky</li>
<li><a
href="https://github.com/agronholm/anyio/commit/be24b0414f67f604bcbdd5ea3bcc56ab920d872e"><code>be24b04</code></a>
Relaxed timeouts to fix test flakiness</li>
<li><a
href="https://github.com/agronholm/anyio/commit/81135065749b4f60c06619b9caaf0a11871c1ddf"><code>8113506</code></a>
Fix test flakiness caused by slow callback duration logging</li>
<li><a
href="https://github.com/agronholm/anyio/commit/1e988b617b69588e33fecb75e36a9837245f562f"><code>1e988b6</code></a>
Fixed CapacityLimiter raising trio.WouldBlock instead of
anyio.WouldBlock (<a
href="https://redirect.github.com/agronholm/anyio/issues/1">#1</a>...</li>
<li><a
href="https://github.com/agronholm/anyio/commit/44713f345cd29dd4e7d76553c134543a1296cc62"><code>44713f3</code></a>
Pin setup-uv to a commit sha across downstream jobs (<a
href="https://redirect.github.com/agronholm/anyio/issues/1213">#1213</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/f1b7301c8264b0d2e8d24a5788fd29e93dea4040"><code>f1b7301</code></a>
Fixed stderr writes in a worker subprocess causing a deadlock (<a
href="https://redirect.github.com/agronholm/anyio/issues/1207">#1207</a>)</li>
<li><a
href="https://github.com/agronholm/anyio/commit/212be93c2cf2c841e753e95e5e2c543ee7feca90"><code>212be93</code></a>
Fix flaky test_tcp_listener_same_port using a hardcoded port (<a
href="https://redirect.github.com/agronholm/anyio/issues/1206">#1206</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/agronholm/anyio/compare/4.14.1...4.14.2">compare
view</a></li>
</ul>
</details>
<br />

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: John Kennedy <65985482+jkennedyvz@users.noreply.github.com>
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-08-08 12:02:52 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>John Kennedyopen-swe[bot] <open-swe@users.noreply.github.com>
6a2822d3c7 chore(deps): bump the minor-and-patch group across 1 directory with 5 updates (#8532)
Bumps the minor-and-patch group with 5 updates in the /libs/sdk-py
directory:

| Package | From | To |
| --- | --- | --- |
| [langchain-core](https://github.com/langchain-ai/langchain) | `1.4.8`
| `1.5.3` |
| [ruff](https://github.com/astral-sh/ruff) | `0.15.20` | `0.16.1` |
| [codespell](https://github.com/codespell-project/codespell) | `2.4.2`
| `2.4.3` |
| [ty](https://github.com/astral-sh/ty) | `0.0.55` | `0.0.66` |
| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.8.0` | `3.8.1`
|


Updates `langchain-core` from 1.4.8 to 1.5.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langchain/releases">langchain-core's
releases</a>.</em></p>
<blockquote>
<h2>langchain-core==1.5.3</h2>
<p>Changes since langchain-core==1.5.2</p>
<p>release(core): 1.5.3 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39145">#39145</a>)
fix(core): fall back to <code>LANGSMITH_API_KEY</code> for gateway (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39115">#39115</a>)</p>
<h2>langchain-core==1.5.2</h2>
<p>Changes since langchain-core==1.5.1</p>
<p>release(core): 1.5.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39108">#39108</a>)
fix(core): handle empty string in gateway env vars (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39107">#39107</a>)
chore: bump setuptools from 82.0.0 to 83.0.0 in /libs/core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39032">#39032</a>)
chore: bump jupyterlab from 4.5.9 to 4.5.10 in /libs/core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39033">#39033</a>)
chore: bump setuptools from 80.9.0 to 83.0.0 in /libs/text-splitters (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39029">#39029</a>)</p>
<h2>langchain-core==1.5.1</h2>
<p>Changes since langchain-core==1.5.0</p>
<p>release(core): 1.5.1 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39042">#39042</a>)
feat(anthropic,fireworks,openai): support langsmith gateway through env
var (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38742">#38742</a>)
fix(core): use <code>tool_call_schema</code> cache for
<code>BaseTool</code> token counting in
<code>count_tokens_approximately</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39020">#39020</a>)</p>
<h2>langchain-core==1.5.0</h2>
<p>Changes since langchain-core==1.4.9</p>
<p>release(core): 1.5.0 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38978">#38978</a>)
feat(core): add <code>reasoning_effort</code> as a standard chat model
parameter (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38887">#38887</a>)
chore: bump soupsieve from 2.8 to 2.8.4 in /libs/core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38750">#38750</a>)
chore: bump mistune from 3.2.1 to 3.3.0 in /libs/core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38783">#38783</a>)</p>
<h2>langchain-core==1.4.9</h2>
<p>Changes since langchain-core==1.4.8</p>
<p>release(core): 1.4.9 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38728">#38728</a>)
fix(core): improve langsmith loader error messages (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35648">#35648</a>)
fix(core): output parser bugs in xml.py and pydantic.py (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35641">#35641</a>)
style(core): fix some ruff preview rules (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38656">#38656</a>)
fix(core): avoid <code>dict</code> shadowing in language models (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38480">#38480</a>)
fix(core): <code>_parse_google_docstring</code> mishandling continuation
lines with colons (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35680">#35680</a>)
fix(core): add messages to bare <code>raise ValueError</code> calls (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38158">#38158</a>)
fix(core): use <code>asyncio.get_running_loop()</code> in async contexts
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38157">#38157</a>)
chore: bump langsmith from 0.8.0 to 0.8.18 in /libs/core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38319">#38319</a>)
chore: bump jupyterlab from 4.5.7 to 4.5.9 in /libs/core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38326">#38326</a>)
chore: bump vcrpy from 8.1.1 to 8.2.1 in /libs/core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/38327">#38327</a>)</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langchain/commit/01d8481ae3d457ec3751cbb0331ea3a4b720fa90"><code>01d8481</code></a>
release(core): 1.5.3 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39145">#39145</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/b8a6e36d3f810302c66065ea1c2892da000de550"><code>b8a6e36</code></a>
chore(model-profiles): refresh model profile data (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39141">#39141</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/cdca311de2958e497cfd823a45ddb770d0ef94c0"><code>cdca311</code></a>
fix(core): fall back to <code>LANGSMITH_API_KEY</code> for gateway (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39115">#39115</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/a5a8762436658b218dbfc5efff9e8ab8fabbe62f"><code>a5a8762</code></a>
ci: annotate uv bump workflow with PR links (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39112">#39112</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/557c0a986d5068085a945dcb3c9ce27257c4add8"><code>557c0a9</code></a>
chore(deps): bump uv to 0.12.0 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39111">#39111</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/835c85ae236a2d33cd11de4c98d28cbc6ebbd72f"><code>835c85a</code></a>
release(anthropic): 1.5.3 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39109">#39109</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/c1ab807b1f62ad04274c28f2b7d8c3141d8ba1f2"><code>c1ab807</code></a>
release(core): 1.5.2 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39108">#39108</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/313223347f842274432d8a2968b4be407e2722d8"><code>3132233</code></a>
fix(anthropic): preserve empty thinking field in signature_delta
streaming (#...</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/b3a6d9a012681df8a8e33345c8255ca69ec0e437"><code>b3a6d9a</code></a>
chore(model-profiles): refresh model profile data (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/39105">#39105</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/447b51abbccde236838524ee717682a0dd2a6c09"><code>447b51a</code></a>
fix(anthropic): strip unsupported fields from system message content
blocks (...</li>
<li>Additional commits viewable in <a
href="https://github.com/langchain-ai/langchain/compare/langchain-core==1.4.8...langchain-core==1.5.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.15.20 to 0.16.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.16.1</h2>
<h2>Release Notes</h2>
<p>Released on 2026-07-30.</p>
<h3>Preview features</h3>
<ul>
<li>Add an option to opt out of human-readable names (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27160">#27160</a>)</li>
<li>[<code>flake8-pytest-style</code>] Make fixes safe by default and
unsafe only when comments are present (<code>PT018</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27201">#27201</a>)</li>
<li>[<code>pyupgrade</code>] Skip fix when a defaulted
<code>TypeVar</code> precedes a non-defaulted one (<code>UP040</code>,
<code>UP046</code>, <code>UP047</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27133">#27133</a>)</li>
<li>[<code>ruff</code>] Fix false positive with unpacked arguments
(<code>RUF065</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26959">#26959</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Bump <code>gen-lsp-types</code> to gracefully handle unknown
enumeration values in LSP messages (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27230">#27230</a>)</li>
<li>[<code>flake8-bugbear</code>] Mark <code>range</code> as immutable
(<code>B008</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27247">#27247</a>)</li>
<li>[<code>flake8-comprehensions</code>] NFKC-normalize keyword names in
<code>C408</code> fix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26813">#26813</a>)</li>
<li>[<code>flake8-return</code>] Fix false positive when variable is
read in <code>finally</code> clause (<code>RET504</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25441">#25441</a>)</li>
<li>[<code>pydocstyle</code>] Skip section detection inside RST
directive bodies (<code>D214</code>, <code>D405</code>,
<code>D413</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23635">#23635</a>)</li>
<li>[<code>refurb</code>] Parenthesize <code>yield</code> arguments in
the <code>FURB192</code> fix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27192">#27192</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-pytest-style</code>] Mark <code>PT022</code> fixes as
unsafe (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26440">#26440</a>)</li>
<li>[<code>refurb</code>] Mark fixes that remove unknown separators as
unsafe (<code>FURB105</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27200">#27200</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix indexing of excluded nested Ruff workspaces (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27303">#27303</a>)</li>
<li>Lint TOML files in the LSP (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26862">#26862</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Cover <code>pycon</code> Markdown formatting (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27153">#27153</a>)</li>
<li>[<code>flake8-bandit</code>] Document <code>TYPE_CHECKING</code>
exception (<code>S101</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27004">#27004</a>)</li>
<li>[<code>flake8-import-conventions</code>] Document that
<code>extend-aliases</code> can override default aliases (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27191">#27191</a>)</li>
<li>[<code>pylint</code>] Add missing fix safety gotchas for
<code>non-augmented-assignment</code> (<code>PLR6104</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27250">#27250</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Reduce syntax error noise by swallowing dedents like indents (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27170">#27170</a>)</li>
<li>Vendor latest annotate-snippets (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27033">#27033</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/bxff"><code>@​bxff</code></a></li>
<li><a
href="https://github.com/anishgirianish"><code>@​anishgirianish</code></a></li>
<li><a href="https://github.com/Avasam"><code>@​Avasam</code></a></li>
<li><a href="https://github.com/epage"><code>@​epage</code></a></li>
<li><a href="https://github.com/LHMQ878"><code>@​LHMQ878</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.16.1</h2>
<p>Released on 2026-07-30.</p>
<h3>Preview features</h3>
<ul>
<li>Add an option to opt out of human-readable names (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27160">#27160</a>)</li>
<li>[<code>flake8-pytest-style</code>] Make fixes safe by default and
unsafe only when comments are present (<code>PT018</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27201">#27201</a>)</li>
<li>[<code>pyupgrade</code>] Skip fix when a defaulted
<code>TypeVar</code> precedes a non-defaulted one (<code>UP040</code>,
<code>UP046</code>, <code>UP047</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27133">#27133</a>)</li>
<li>[<code>ruff</code>] Fix false positive with unpacked arguments
(<code>RUF065</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26959">#26959</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Bump <code>gen-lsp-types</code> to gracefully handle unknown
enumeration values in LSP messages (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27230">#27230</a>)</li>
<li>[<code>flake8-bugbear</code>] Mark <code>range</code> as immutable
(<code>B008</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27247">#27247</a>)</li>
<li>[<code>flake8-comprehensions</code>] NFKC-normalize keyword names in
<code>C408</code> fix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26813">#26813</a>)</li>
<li>[<code>flake8-return</code>] Fix false positive when variable is
read in <code>finally</code> clause (<code>RET504</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25441">#25441</a>)</li>
<li>[<code>pydocstyle</code>] Skip section detection inside RST
directive bodies (<code>D214</code>, <code>D405</code>,
<code>D413</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23635">#23635</a>)</li>
<li>[<code>refurb</code>] Parenthesize <code>yield</code> arguments in
the <code>FURB192</code> fix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27192">#27192</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-pytest-style</code>] Mark <code>PT022</code> fixes as
unsafe (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26440">#26440</a>)</li>
<li>[<code>refurb</code>] Mark fixes that remove unknown separators as
unsafe (<code>FURB105</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27200">#27200</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix indexing of excluded nested Ruff workspaces (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27303">#27303</a>)</li>
<li>Lint TOML files in the LSP (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26862">#26862</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Cover <code>pycon</code> Markdown formatting (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27153">#27153</a>)</li>
<li>[<code>flake8-bandit</code>] Document <code>TYPE_CHECKING</code>
exception (<code>S101</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27004">#27004</a>)</li>
<li>[<code>flake8-import-conventions</code>] Document that
<code>extend-aliases</code> can override default aliases (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27191">#27191</a>)</li>
<li>[<code>pylint</code>] Add missing fix safety gotchas for
<code>non-augmented-assignment</code> (<code>PLR6104</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27250">#27250</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Reduce syntax error noise by swallowing dedents like indents (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27170">#27170</a>)</li>
<li>Vendor latest annotate-snippets (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27033">#27033</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/bxff"><code>@​bxff</code></a></li>
<li><a
href="https://github.com/anishgirianish"><code>@​anishgirianish</code></a></li>
<li><a href="https://github.com/Avasam"><code>@​Avasam</code></a></li>
<li><a href="https://github.com/epage"><code>@​epage</code></a></li>
<li><a href="https://github.com/LHMQ878"><code>@​LHMQ878</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/80790b348b5188e7fc253665540f442c6ec7dd05"><code>80790b3</code></a>
Bump 0.16.1 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27330">#27330</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/63830f3e97b56ca3be0dd8f1092f76c4acc63213"><code>63830f3</code></a>
[ty] Borrow from constraint set storage less often (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27328">#27328</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/f40dca98a7f1b6fff0cee5ecf1e6364d5a8bdc15"><code>f40dca9</code></a>
[ty] Preserve forwarded expanded-variadic diagnostic sources (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27266">#27266</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/0d804975a2645d6e4a795cf501fd764b88aa47e3"><code>0d80497</code></a>
Lint TOML files in the LSP (<a
href="https://redirect.github.com/astral-sh/ruff/issues/26862">#26862</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d91586bd5b30f77f6614d57b73fc7dbea9051a0e"><code>d91586b</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27293">#27293</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/7da4b8b8d78fd6df2b3e06d8466d9cd49822900d"><code>7da4b8b</code></a>
[ty] Respect bounds and constraints in generic materializations (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27228">#27228</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/b20daf741241a6829ff8963a203f7847561deb62"><code>b20daf7</code></a>
[ty] refactor: add helper function to send partial results (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27249">#27249</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/4d4c8fa1c75b00561ea24eefefb13eb5ff80e01f"><code>4d4c8fa</code></a>
[ty] Emit diagnostic when specializing a non-generic class (<a
href="https://redirect.github.com/astral-sh/ruff/issues/26883">#26883</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/7c3e2db97deb5c5edd6e4303403ef6caf2bde8be"><code>7c3e2db</code></a>
[ty] Fix enum class container assignability (<a
href="https://redirect.github.com/astral-sh/ruff/issues/27318">#27318</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d5ef97fcd03e108f7510f84b8ed85bb4051311fe"><code>d5ef97f</code></a>
[<code>flake8-return</code>] Fix false positive when variable is read in
<code>finally</code> claus...</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.15.20...0.16.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `codespell` from 2.4.2 to 2.4.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/codespell-project/codespell/releases">codespell's
releases</a>.</em></p>
<blockquote>
<h2>v2.4.3</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>Add 'radback' to dictionary with correction by <a
href="https://github.com/Flo3561"><code>@​Flo3561</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3883">codespell-project/codespell#3883</a></li>
<li>Add 'repetirion' to dictionary corrections by <a
href="https://github.com/Flo3561"><code>@​Flo3561</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3885">codespell-project/codespell#3885</a></li>
<li>Need to specify a version of Python version after all by <a
href="https://github.com/DimitriPapadopoulos"><code>@​DimitriPapadopoulos</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3887">codespell-project/codespell#3887</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3889">codespell-project/codespell#3889</a></li>
<li>Add cases for &quot;modulle&quot; -&gt; &quot;module&quot; by <a
href="https://github.com/utzcoz"><code>@​utzcoz</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3888">codespell-project/codespell#3888</a></li>
<li>Add case &quot;auido&quot; -&gt; &quot;audio&quot; by <a
href="https://github.com/utzcoz"><code>@​utzcoz</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3890">codespell-project/codespell#3890</a></li>
<li>Add credentilas-&gt;credentials and friends by <a
href="https://github.com/peternewman"><code>@​peternewman</code></a> in
<a
href="https://redirect.github.com/codespell-project/codespell/pull/3895">codespell-project/codespell#3895</a></li>
<li>Add the case &quot;cubid&quot; -&gt; &quot;cubic&quot; by <a
href="https://github.com/utzcoz"><code>@​utzcoz</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3891">codespell-project/codespell#3891</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3897">codespell-project/codespell#3897</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3900">codespell-project/codespell#3900</a></li>
<li>Bump codecov/codecov-action from 5 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3902">codespell-project/codespell#3902</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3904">codespell-project/codespell#3904</a></li>
<li>Add <code>magntiude-&gt;magnitude</code> by <a
href="https://github.com/nathanjmcdougall"><code>@​nathanjmcdougall</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3899">codespell-project/codespell#3899</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3909">codespell-project/codespell#3909</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3912">codespell-project/codespell#3912</a></li>
<li>Add the case &quot;instanc&quot; -&gt; &quot;instance&quot; by <a
href="https://github.com/utzcoz"><code>@​utzcoz</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3896">codespell-project/codespell#3896</a></li>
<li>gampad -&gt; gamepad (and plural) by <a
href="https://github.com/julianstirling"><code>@​julianstirling</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3906">codespell-project/codespell#3906</a></li>
<li>Add typos of <code>monotonic</code> and <code>monotonicity</code> by
<a
href="https://github.com/nathanjmcdougall"><code>@​nathanjmcdougall</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3898">codespell-project/codespell#3898</a></li>
<li>Add spelling correction for multipile(s)/vulnerabities. by <a
href="https://github.com/cfi-gb"><code>@​cfi-gb</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3905">codespell-project/codespell#3905</a></li>
<li>Add 'simpilfy -&gt; simplify' by <a
href="https://github.com/alexreinking"><code>@​alexreinking</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3913">codespell-project/codespell#3913</a></li>
<li>fix(packaging): prevent unwanted files and tests from being
installed by <a
href="https://github.com/mikelolasagasti"><code>@​mikelolasagasti</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3911">codespell-project/codespell#3911</a></li>
<li>Add skarhoj-&gt;SKAARHOJ to dictionary corrections by <a
href="https://github.com/peternewman"><code>@​peternewman</code></a> in
<a
href="https://redirect.github.com/codespell-project/codespell/pull/3908">codespell-project/codespell#3908</a></li>
<li>Improve the dictionary by <a
href="https://github.com/algonell"><code>@​algonell</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3914">codespell-project/codespell#3914</a></li>
<li>Add spelling correction for accorss/accors. by <a
href="https://github.com/cfi-gb"><code>@​cfi-gb</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3916">codespell-project/codespell#3916</a></li>
<li>Bump autofix-ci/action from 1.3.3 to 1.3.4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3921">codespell-project/codespell#3921</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3923">codespell-project/codespell#3923</a></li>
<li>Add <code>influecer-&gt;influencer</code> and <code>influnce*</code>
typos to dictionary by <a
href="https://github.com/nathanjmcdougall"><code>@​nathanjmcdougall</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3925">codespell-project/codespell#3925</a></li>
<li>Add typos for <code>excavate</code> and variants by <a
href="https://github.com/nathanjmcdougall"><code>@​nathanjmcdougall</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3926">codespell-project/codespell#3926</a></li>
<li>Dict: Add corrections for memoy by <a
href="https://github.com/mdeweerd"><code>@​mdeweerd</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3924">codespell-project/codespell#3924</a></li>
<li><code>overheda -&gt; overhead</code> by <a
href="https://github.com/George-Ogden"><code>@​George-Ogden</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3919">codespell-project/codespell#3919</a></li>
<li><code>inclusize-&gt;inclusive</code> and variants by <a
href="https://github.com/George-Ogden"><code>@​George-Ogden</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3918">codespell-project/codespell#3918</a></li>
<li>Add spelling corrections for authorization by <a
href="https://github.com/cfi-gb"><code>@​cfi-gb</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3922">codespell-project/codespell#3922</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3927">codespell-project/codespell#3927</a></li>
<li>Don't fix Voight by <a
href="https://github.com/DimitriPapadopoulos"><code>@​DimitriPapadopoulos</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3929">codespell-project/codespell#3929</a></li>
<li>Add spelling corrections for interstect and interstection by <a
href="https://github.com/korli"><code>@​korli</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3928">codespell-project/codespell#3928</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3930">codespell-project/codespell#3930</a></li>
<li>Improve output in interactive mode by <a
href="https://github.com/darkmattercoder"><code>@​darkmattercoder</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3884">codespell-project/codespell#3884</a></li>
<li>feat: support codespell:ignore-next-line directive by <a
href="https://github.com/SAY-5"><code>@​SAY-5</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3931">codespell-project/codespell#3931</a></li>
<li>Add woork-&gt;work and formace-&gt;format and friends by <a
href="https://github.com/peternewman"><code>@​peternewman</code></a> in
<a
href="https://redirect.github.com/codespell-project/codespell/pull/3828">codespell-project/codespell#3828</a></li>
<li>shortctu -&gt; shortcut by <a
href="https://github.com/George-Ogden"><code>@​George-Ogden</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3934">codespell-project/codespell#3934</a></li>
<li>A couple typos by <a
href="https://github.com/DimitriPapadopoulos"><code>@​DimitriPapadopoulos</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3935">codespell-project/codespell#3935</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3937">codespell-project/codespell#3937</a></li>
<li>[pre-commit.ci] pre-commit autoupdate by <a
href="https://github.com/pre-commit-ci"><code>@​pre-commit-ci</code></a>[bot]
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3942">codespell-project/codespell#3942</a></li>
<li>reclaculate-&gt;recalculate by <a
href="https://github.com/adamgann"><code>@​adamgann</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3936">codespell-project/codespell#3936</a></li>
<li>Add spelling correction for improprt. by <a
href="https://github.com/cfi-gb"><code>@​cfi-gb</code></a> in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3939">codespell-project/codespell#3939</a></li>
<li>Dictionary plasic-plastic by <a
href="https://github.com/julianstirling"><code>@​julianstirling</code></a>
in <a
href="https://redirect.github.com/codespell-project/codespell/pull/3938">codespell-project/codespell#3938</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/codespell-project/codespell/commit/57b21406f092110c18776e39b0bda50d37c945c8"><code>57b2140</code></a>
Read only [tool.codespell] from TOML config (<a
href="https://redirect.github.com/codespell-project/codespell/issues/3975">#3975</a>)</li>
<li><a
href="https://github.com/codespell-project/codespell/commit/23b8d940332bcff6369872b53964d4137c586728"><code>23b8d94</code></a>
[pre-commit.ci] pre-commit autoupdate</li>
<li><a
href="https://github.com/codespell-project/codespell/commit/926c4d6ff083acc62bc04c102e0a9b2091d754f1"><code>926c4d6</code></a>
[pre-commit.ci] pre-commit autoupdate</li>
<li><a
href="https://github.com/codespell-project/codespell/commit/820a3011e0bfe3f90789ba41e751a26656bea7ab"><code>820a301</code></a>
Merge pull request <a
href="https://redirect.github.com/codespell-project/codespell/issues/3967">#3967</a>
from codespell-project/peternewman-patch-1</li>
<li><a
href="https://github.com/codespell-project/codespell/commit/9fe42c964c90f65a9a2841847af4e093c67ec817"><code>9fe42c9</code></a>
Add common misspellings for reseeve-&gt;reserve to dictionary</li>
<li><a
href="https://github.com/codespell-project/codespell/commit/725173c815cee1b781b85ec51eb43dc4f51dcd0f"><code>725173c</code></a>
[pre-commit.ci] pre-commit autoupdate</li>
<li><a
href="https://github.com/codespell-project/codespell/commit/86c13ee4dce0010e8d8119ded33694806e37ca8f"><code>86c13ee</code></a>
[pre-commit.ci] pre-commit autoupdate</li>
<li><a
href="https://github.com/codespell-project/codespell/commit/7b9f36ce634c551107a3a4a5c25782a2245d7658"><code>7b9f36c</code></a>
Bump actions/checkout from 6 to 7</li>
<li><a
href="https://github.com/codespell-project/codespell/commit/bcc1b804a83b8a146586101431b063c07cfcc699"><code>bcc1b80</code></a>
Add spelling corrections for simpe and variants.</li>
<li><a
href="https://github.com/codespell-project/codespell/commit/89584cc1479d0f8dbfd501925673b6be6d460fe1"><code>89584cc</code></a>
[pre-commit.ci] pre-commit autoupdate</li>
<li>Additional commits viewable in <a
href="https://github.com/codespell-project/codespell/compare/v2.4.2...v2.4.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `ty` from 0.0.55 to 0.0.66
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/releases">ty's
releases</a>.</em></p>
<blockquote>
<h2>0.0.66</h2>
<h2>Release Notes</h2>
<p>Released on 2026-08-03.</p>
<h3>LSP server</h3>
<ul>
<li>Index <code>with</code>-statement targets as symbols (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27256">#27256</a>)</li>
<li>Trigger signature help after completing callable with parentheses
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/27084">#27084</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Pydantic: Recognize models installed on extra search paths (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27429">#27429</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Detect <code>__aenter__</code> and <code>__aexit__</code> that do
not return awaitables (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27414">#27414</a>)</li>
<li>Diagnose dataclass fields after inherited defaults (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27327">#27327</a>)</li>
<li>Emit diagnostic when specializing a non-generic class (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26883">#26883</a>)</li>
<li>Improve error context for incompatible callable signatures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27422">#27422</a>)</li>
<li>Preserve forwarded expanded-variadic diagnostic sources (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27266">#27266</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Avoid over-materializing user-defined <code>TypeIs</code> return
types (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26864">#26864</a>)</li>
<li>Fix enum class container assignability (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27318">#27318</a>)</li>
<li>Hide stub-only helpers from implicit builtin lookup (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27423">#27423</a>)</li>
<li>Move <code>Unknown</code> out of the experimental
<code>ty_extensions</code> API (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27430">#27430</a>)</li>
<li>Preserve <code>TypeVarTuple</code> context during
<code>Generic</code> recovery (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27381">#27381</a>)</li>
<li>Preserve exact numeric types in covariant collections (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27311">#27311</a>)</li>
<li>Reject <code>ClassVar</code> and <code>Final</code> qualifiers in
<code>NamedTuple</code> fields (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27380">#27380</a>)</li>
<li>Reject out-of-scope <code>ParamSpec</code> components (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27378">#27378</a>)</li>
<li>Reject specializing non-generic subclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27377">#27377</a>)</li>
<li>Respect bounds and constraints in generic materializations (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27228">#27228</a>)</li>
<li>Sync vendored typeshed stubs (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27401">#27401</a>).
<a
href="https://github.com/python/typeshed/compare/b00c387c669cb50d5d388d77b74c2e832e147fe8...1b116673774d062a4af7b0a0b3d05533a6be55d0">Typeshed
diff</a></li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/dhruvmanila"><code>@​dhruvmanila</code></a></li>
<li><a href="https://github.com/carljm"><code>@​carljm</code></a></li>
<li><a
href="https://github.com/Punisheroot"><code>@​Punisheroot</code></a></li>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a
href="https://github.com/cheparity"><code>@​cheparity</code></a></li>
<li><a
href="https://github.com/BitWeaverDev"><code>@​BitWeaverDev</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ribru17"><code>@​ribru17</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
</ul>
<h2>Install ty 0.0.66</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/blob/main/CHANGELOG.md">ty's
changelog</a>.</em></p>
<blockquote>
<h2>0.0.66</h2>
<p>Released on 2026-08-03.</p>
<h3>LSP server</h3>
<ul>
<li>Index <code>with</code>-statement targets as symbols (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27256">#27256</a>)</li>
<li>Trigger signature help after completing callable with parentheses
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/27084">#27084</a>)</li>
</ul>
<h3>Library support</h3>
<ul>
<li>Pydantic: Recognize models installed on extra search paths (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27429">#27429</a>)</li>
</ul>
<h3>Diagnostics</h3>
<ul>
<li>Detect <code>__aenter__</code> and <code>__aexit__</code> that do
not return awaitables (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27414">#27414</a>)</li>
<li>Diagnose dataclass fields after inherited defaults (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27327">#27327</a>)</li>
<li>Emit diagnostic when specializing a non-generic class (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26883">#26883</a>)</li>
<li>Improve error context for incompatible callable signatures (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27422">#27422</a>)</li>
<li>Preserve forwarded expanded-variadic diagnostic sources (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27266">#27266</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Avoid over-materializing user-defined <code>TypeIs</code> return
types (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26864">#26864</a>)</li>
<li>Fix enum class container assignability (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27318">#27318</a>)</li>
<li>Hide stub-only helpers from implicit builtin lookup (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27423">#27423</a>)</li>
<li>Move <code>Unknown</code> out of the experimental
<code>ty_extensions</code> API (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27430">#27430</a>)</li>
<li>Preserve <code>TypeVarTuple</code> context during
<code>Generic</code> recovery (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27381">#27381</a>)</li>
<li>Preserve exact numeric types in covariant collections (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27311">#27311</a>)</li>
<li>Reject <code>ClassVar</code> and <code>Final</code> qualifiers in
<code>NamedTuple</code> fields (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27380">#27380</a>)</li>
<li>Reject out-of-scope <code>ParamSpec</code> components (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27378">#27378</a>)</li>
<li>Reject specializing non-generic subclasses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27377">#27377</a>)</li>
<li>Respect bounds and constraints in generic materializations (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27228">#27228</a>)</li>
<li>Sync vendored typeshed stubs (<a
href="https://redirect.github.com/astral-sh/ruff/pull/27401">#27401</a>).
<a
href="https://github.com/python/typeshed/compare/b00c387c669cb50d5d388d77b74c2e832e147fe8...1b116673774d062a4af7b0a0b3d05533a6be55d0">Typeshed
diff</a></li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/dhruvmanila"><code>@​dhruvmanila</code></a></li>
<li><a href="https://github.com/carljm"><code>@​carljm</code></a></li>
<li><a
href="https://github.com/Punisheroot"><code>@​Punisheroot</code></a></li>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a
href="https://github.com/cheparity"><code>@​cheparity</code></a></li>
<li><a
href="https://github.com/BitWeaverDev"><code>@​BitWeaverDev</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/ribru17"><code>@​ribru17</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
</ul>
<h2>0.0.65</h2>
<p>Released on 2026-07-29.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ty/commit/3e28e58af75c3b16403c05ab401ae7347b65c5e2"><code>3e28e58</code></a>
Bump version to 0.0.66 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4166">#4166</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/87de836dfef2d3e1990440752e30e24cfb572f4e"><code>87de836</code></a>
Bump version to 0.0.65 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4113">#4113</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/d784bad352f4640e7f788eac4dfb0353ca199902"><code>d784bad</code></a>
README: Add link to Stable milestone (<a
href="https://redirect.github.com/astral-sh/ty/issues/4112">#4112</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/b4c1978dbdf18501ed03139e33ee8afaef251ec3"><code>b4c1978</code></a>
Update actions/setup-python action to v7 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4110">#4110</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/8d216a39dad99c4443396a08a77da00502cd7e58"><code>8d216a3</code></a>
Update actions/checkout action to v7.0.1 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4107">#4107</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/06f44e9039cb2764346c4bceaff4021ac143de9e"><code>06f44e9</code></a>
Update dependency prek to v0.4.10 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4108">#4108</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/b3665fde4804424576a30078bc0b7c101c5e2242"><code>b3665fd</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/4109">#4109</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5e64a131b436a4e1f40e6317c526f4fc73fab38b"><code>5e64a13</code></a>
Bump version to 0.0.64 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4097">#4097</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/46f4915e67aad965b1b4e7478a75378e8e52ff6d"><code>46f4915</code></a>
Bump version to 0.0.63 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4071">#4071</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/df75992e7fd0cc73cb0f66e864df3f6e4fc4e1a6"><code>df75992</code></a>
Bump version to 0.0.62 (<a
href="https://redirect.github.com/astral-sh/ty/issues/4057">#4057</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ty/compare/0.0.55...0.0.66">compare
view</a></li>
</ul>
</details>
<br />

Updates `xxhash` from 3.8.0 to 3.8.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ifduyue/python-xxhash/releases">xxhash's
releases</a>.</em></p>
<blockquote>
<h2>v3.8.1</h2>
<ul>
<li>Register the &quot;benchmark&quot; pytest mark to avoid
PytestUnknownMarkWarning</li>
<li>Update C extension docstrings and remove stale comments</li>
</ul>
<hr />
<p>Full list of changes: <a
href="https://github.com/ifduyue/python-xxhash/compare/v3.8.0...v3.8.1">https://github.com/ifduyue/python-xxhash/compare/v3.8.0...v3.8.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ifduyue/python-xxhash/blob/master/CHANGELOG.rst">xxhash's
changelog</a>.</em></p>
<blockquote>
<p>v3.8.1 2026-07-06</p>
<pre><code>
- Register the &quot;benchmark&quot; pytest mark to avoid
PytestUnknownMarkWarning
- Update C extension docstrings and remove stale comments
</code></pre>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/0a1adf7b6a5f26b821272985a0a987cca5446c23"><code>0a1adf7</code></a>
Release v3.8.1</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/aa419ca1478219b7ba2ad18a8fe05ca9d29288bc"><code>aa419ca</code></a>
Prepare 3.8.1</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/e26b770f19b5eabd1c58d098206e5c9adfcef5d1"><code>e26b770</code></a>
docs: update C extension docstrings and remove stale comments</li>
<li><a
href="https://github.com/ifduyue/python-xxhash/commit/aa69707513c4ba8c52a4bebc23f0aada7844decc"><code>aa69707</code></a>
Register the “benchmark” pytest mark</li>
<li>See full diff in <a
href="https://github.com/ifduyue/python-xxhash/compare/v3.8.0...v3.8.1">compare
view</a></li>
</ul>
</details>
<br />

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: John Kennedy <65985482+jkennedyvz@users.noreply.github.com>
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
2026-08-08 12:01:48 -07:00
Elior Nataf LackritzandGitHub fde3068970 release(checkpoint-postgres): 3.1.2 (#8565)
Version bump only. No library code changes in this PR.

Unreleased since `checkpointpostgres==3.1.1`:

- #8535 - find plain-value seeds when walking delta history

Follows `checkpoint==4.2.0`, which is already live on PyPI. No
dependency change needed here, since
`langgraph-checkpoint>=4.1.0,<5.0.0` already admits 4.2.0.
2026-08-07 16:32:21 -04:00
Elior Nataf LackritzandGitHub f55e77274d release(checkpoint): 4.2.0 (#8563)
Version bump only. No library code changes in this PR.

Unreleased since `checkpoint==4.1.1`:

- #8526 - collect writes at plain-value seed in delta channel history
- #8354 - add opt-in `TTLConfig.omit_expired` to skip expired rows on
read

Minor rather than patch because #8354 adds a new public `TTLConfig` key.
Note that the checkpoint-postgres half of #8354 already shipped in
`checkpointpostgres==3.1.1`, so the currently released Postgres saver
honors an option that no released `langgraph-checkpoint` declares. This
closes that gap.

`langgraph-checkpoint-postgres` 3.1.2 (#8535) follows once this is live
on PyPI.
2026-08-07 15:59:52 -04:00
a90ab44358 fix(checkpoint): collect writes at plain-value seed in delta channel history (#8526)
Fixes langchain-ai/langgraph#8384

`InMemorySaver.get_delta_channel_history` skipped the writes stored at
the ancestor it seeded from whenever that ancestor's blob was a plain
value rather than a `_DeltaSnapshot`, silently dropping the first write
made after migrating a thread to `DeltaChannel`.

### Why the old rule was wrong

A stored blob is the value *entering* its checkpoint; the writes stored
under that same checkpoint are what produce its child. That's true for
`_DeltaSnapshot` blobs and pre-delta plain values alike, so there was
never a reason to treat them differently.

Writes at ancestors *older* than the seed genuinely are subsumed by the
seed value — but that's already guaranteed by terminating the walk,
since the channel leaves `remaining` once its seed is found. The removed
check re-solved that and overreached by one checkpoint.

`BaseCheckpointSaver`, `SqliteSaver` and `PostgresSaver` never had this
check. `InMemorySaver` was the only outlier.

### How I verified it

Built a differential harness running the same migration scenarios
through `InMemorySaver`, the `BaseCheckpointSaver` reference walk, and
`SqliteSaver`. **4 of 11 scenarios agreed before this change; 11 of 11
after.** The loss is wider than one write — on the `add_messages` →
`DeltaChannel` path it drops a real user message.

Suites: `libs/checkpoint` 156 passed, `libs/langgraph` 1972 passed,
`libs/checkpoint-sqlite` 117 passed, `libs/checkpoint-postgres` passed
against PG 16. `make format`, `make lint` clean in each.

### Two things worth a closer look in review

**1. I inverted two existing assertions** in
`TestPreDeltaBlobTerminator` (`libs/checkpoint/tests/test_memory.py`).
They encoded the old rule. Their fixture is the real migration shape — a
plain-value blob carrying pending writes, with a delta-era child — which
I confirmed against a dumped checkpoint chain from the issue's repro, so
the assertions were wrong rather than the fixture being unrealistic. I
added an ancestor *older* than the seed so the terminator still guards
what it legitimately should: older writes stay excluded, the seed's own
writes replay.

**2. The new conformance test fails against Postgres**, for a reason
unrelated to this change. Postgres `aput` leaves an inline `True` marker
in `channel_values` only for `_DeltaSnapshot`; plain non-primitive
values are popped with no marker, and seed detection is `(checkpoint ->
'channel_values' -> ch) IS NOT NULL`. So Postgres can't locate a
plain-value seed at all:

```
seed stored as plain list:      InMemorySaver -> [10, 20]    AsyncPostgresSaver -> no seed key
seed stored as _DeltaSnapshot:  InMemorySaver -> found       AsyncPostgresSaver -> found
```

The pre-existing `test_history_migration_plain_value_as_seed` already
fails there too — conformance CI only validates `InMemorySaver`, so
nobody was watching. Values still come out correct today (with no seed
the walk runs to the root and replays everything), but early termination
is lost: 1 write replayed on `InMemorySaver` vs 7 on Postgres for the
same 6-turn thread. Filing separately rather than folding a
write-path/format decision into this PR.

### Note on scope

This touches three packages: the fix in `libs/checkpoint`, graph-level
regression tests in `libs/langgraph` (the bug is only observable through
a graph read), and the contract test in `libs/checkpoint-conformance` so
third-party savers are covered too.

---------

Co-authored-by: PiedPiper911 <32931126+PiedPiper911@users.noreply.github.com>
2026-08-07 12:29:41 -04:00
63 changed files with 12616 additions and 7785 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ jobs:
sdk_py: ${{ steps.filter.outputs.sdk_py || 'true' }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4
- uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4
if: github.event_name != 'workflow_dispatch'
id: filter
with:
+6
View File
@@ -76,7 +76,12 @@ __pypackages__/
# Environments
.env
.env.*
.envrc
*.crt
*.key
*.pem
credentials.json
.venv
.venvs
env/
@@ -98,6 +103,7 @@ dmypy.json
.vercel
.turbo
node_modules/
.editorconfig
.scratch
.worktrees/
+8
View File
@@ -2,6 +2,14 @@
This repository is a monorepo. Each library lives in a subdirectory under `libs/`.
<corridor>
## Corridor security analysis
When Corridor's `analyzePlan` tool is available, create a plan and use the tool to analyze it before generating or modifying code. Apply the resulting security guidance before writing code.
</corridor>
When you modify code in any library, run the following commands in that library's directory before creating a pull request:
- `make format` run code formatters
+8
View File
@@ -2,6 +2,14 @@
This repository is a monorepo. Each library lives in a subdirectory under `libs/`.
<corridor>
## Corridor security analysis
Before generating or modifying code, create a plan and use Corridor's `analyzePlan` tool to analyze it. Apply the resulting security guidance before writing code.
</corridor>
When you modify code in any library, run the following commands in that library's directory before creating a pull request:
- `make format` run code formatters
@@ -6,9 +6,12 @@ import traceback
from collections.abc import Callable
from uuid import uuid4
from langgraph.checkpoint.base import BaseCheckpointSaver
from langgraph.checkpoint.base import BaseCheckpointSaver, Checkpoint
from langgraph.checkpoint.base.id import uuid6
from langgraph.checkpoint.serde.types import _DeltaSnapshot
from langgraph.checkpoint.conformance.spec._delta_fixtures import build_delta_chain
from langgraph.checkpoint.conformance.test_utils import generate_metadata
async def test_history_returns_writes_oldest_first(
@@ -48,8 +51,6 @@ async def test_history_seed_is_nearest_snapshot(
result = await saver.aget_delta_channel_history(config=head, channels=["ch"])
assert "seed" in result["ch"], "Expected seed from snapshot at step 3"
seed = result["ch"]["seed"]
from langgraph.checkpoint.serde.types import _DeltaSnapshot
actual_value = seed.value if isinstance(seed, _DeltaSnapshot) else seed
assert actual_value == 3, f"Expected seed value 3 (step 3), got {actual_value}"
writes = result["ch"]["writes"]
@@ -81,11 +82,6 @@ async def test_history_multi_channel(
tid = str(uuid4())
configs: list = []
parent_cfg = None
from langgraph.checkpoint.base import Checkpoint
from langgraph.checkpoint.base.id import uuid6
from langgraph.checkpoint.serde.types import _DeltaSnapshot
from langgraph.checkpoint.conformance.test_utils import generate_metadata
for step in range(5):
config = {"configurable": {"thread_id": tid, "checkpoint_ns": ""}}
@@ -161,11 +157,6 @@ async def test_history_migration_plain_value_as_seed(
channel_values[ch] (not a _DeltaSnapshot). The walk should treat it as the
seed and terminate there.
"""
from langgraph.checkpoint.base import Checkpoint
from langgraph.checkpoint.base.id import uuid6
from langgraph.checkpoint.conformance.test_utils import generate_metadata
tid = str(uuid4())
configs: list = []
parent_cfg = None
@@ -208,6 +199,74 @@ async def test_history_migration_plain_value_as_seed(
assert values == [2], f"Expected [2], got {values}"
async def test_history_seed_ancestor_own_writes_are_replayed(
saver: BaseCheckpointSaver,
) -> None:
"""Writes stored AT the seed ancestor must be included in `writes`.
A stored value is the state ENTERING its checkpoint; the writes stored
under that same checkpoint are what produced its child and are therefore
NOT subsumed by it. Only writes at ancestors OLDER than the seed are
subsumed, and the walk terminates before reaching them.
This holds for plain-value seeds (migration from a pre-delta channel type)
exactly as it does for `_DeltaSnapshot` seeds. Skipping the seed
ancestor's own writes silently drops the first post-migration write.
"""
tid = str(uuid4())
configs: list = []
parent_cfg = None
# Each step's write is labelled by the role it plays, so the assertion
# below reads directly rather than by step index.
writes_by_step = {
0: "older-than-seed", # subsumed by the value stored at step 1
1: "at-seed", # the seed's own write, produced step 2
2: "after-seed", # delta-era write on the path to the head
3: "pending-at-head", # pending for the next step, never replayed
}
# Steps 0 and 1 store a plain value; 1 is the nearest, so it is the seed.
values_by_step = {0: [10], 1: [10, 20]}
for step in range(4):
config = {"configurable": {"thread_id": tid, "checkpoint_ns": ""}}
if parent_cfg:
config["configurable"]["checkpoint_id"] = parent_cfg["configurable"][
"checkpoint_id"
]
cv: dict = {}
cvs: dict = {}
if step in values_by_step:
cv["ch"] = values_by_step[step]
cvs["ch"] = step + 1
cp = Checkpoint(
v=1,
id=str(uuid6(clock_seq=-1)),
ts="",
channel_values=cv,
channel_versions=cvs,
versions_seen={},
updated_channels=None,
)
parent_cfg = await saver.aput(config, cp, generate_metadata(step=step), cvs)
configs.append(parent_cfg)
await saver.aput_writes(
parent_cfg, [("ch", writes_by_step[step])], str(uuid4())
)
head = configs[-1]
result = await saver.aget_delta_channel_history(config=head, channels=["ch"])
assert "seed" in result["ch"], "Expected seed from plain value at step 1"
assert result["ch"]["seed"] == [10, 20], (
f"Expected nearest plain value [10, 20], got {result['ch']['seed']}"
)
values = [w[2] for w in result["ch"]["writes"]]
assert values == ["at-seed", "after-seed"], (
f'Expected ["at-seed", "after-seed"], got {values}'
)
ALL_DELTA_CHANNEL_HISTORY_TESTS = [
test_history_returns_writes_oldest_first,
test_history_seed_is_nearest_snapshot,
@@ -216,6 +275,7 @@ ALL_DELTA_CHANNEL_HISTORY_TESTS = [
test_history_empty_channels_returns_empty,
test_history_walk_to_root_no_seed,
test_history_migration_plain_value_as_seed,
test_history_seed_ancestor_own_writes_are_replayed,
]
+1048 -601
View File
File diff suppressed because it is too large Load Diff
@@ -7,7 +7,7 @@ import logging
import re
import threading
from collections import defaultdict
from collections.abc import Callable, Iterable, Iterator, Sequence
from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence
from contextlib import contextmanager
from datetime import datetime
from typing import (
@@ -354,7 +354,7 @@ class BasePostgresStore(Generic[C]):
(
_namespace_to_text(op.namespace),
op.key,
Jsonb(cast(dict, op.value)),
Jsonb(dict(cast(Mapping[str, Any], op.value))),
)
)
if op.ttl is not None:
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "langgraph-checkpoint-postgres"
version = "3.1.1"
version = "3.1.2"
description = "Library with a Postgres implementation of LangGraph checkpoint saver."
authors = []
requires-python = ">=3.10"
+1161 -665
View File
File diff suppressed because it is too large Load Diff
@@ -7,7 +7,7 @@ import re
import sqlite3
import threading
from collections import defaultdict
from collections.abc import Callable, Iterable, Iterator, Sequence
from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence
from contextlib import contextmanager
from typing import Any, Literal, NamedTuple, cast
@@ -387,7 +387,7 @@ class BaseSqliteStore:
[
_namespace_to_text(op.namespace),
op.key,
orjson.dumps(cast(dict, op.value)),
orjson.dumps(dict(cast(Mapping[str, Any], op.value))),
expires_at,
op.ttl,
]
+1098 -602
View File
File diff suppressed because it is too large Load Diff
+11 -18
View File
@@ -39,7 +39,12 @@ You must pass these when invoking the graph as part of the configurable part of
```python
{"configurable": {"thread_id": "1"}} # valid config
{"configurable": {"thread_id": "1", "checkpoint_id": "0c62ca34-ac19-445d-bbb0-5b4984975b2a"}} # also valid config
{
"configurable": {
"thread_id": "1",
"checkpoint_id": "0c62ca34-ac19-445d-bbb0-5b4984975b2a",
}
} # also valid config
```
### Serde
@@ -79,24 +84,12 @@ checkpoint = {
"v": 4,
"ts": "2024-07-31T20:14:19.804150+00:00",
"id": "1ef4f797-8335-6428-8001-8a1503f9b875",
"channel_values": {
"my_key": "meow",
"node": "node"
},
"channel_versions": {
"__start__": 2,
"my_key": 3,
"start:node": 3,
"node": 3
},
"channel_values": {"my_key": "meow", "node": "node"},
"channel_versions": {"__start__": 2, "my_key": 3, "start:node": 3, "node": 3},
"versions_seen": {
"__input__": {},
"__start__": {
"__start__": 1
},
"node": {
"start:node": 2
}
"__input__": {},
"__start__": {"__start__": 1},
"node": {"start:node": 2},
},
}
@@ -10,6 +10,7 @@ from typing import (
NamedTuple,
TypedDict,
TypeVar,
cast,
)
from langchain_core.runnables import RunnableConfig
@@ -781,7 +782,7 @@ def get_serializable_checkpoint_metadata(
"""Get checkpoint metadata in a backwards-compatible manner."""
checkpoint_metadata = get_checkpoint_metadata(config, metadata)
if "writes" in checkpoint_metadata:
checkpoint_metadata.pop("writes")
cast(dict[str, Any], checkpoint_metadata).pop("writes")
return checkpoint_metadata
@@ -148,17 +148,16 @@ class InMemorySaver(
whose stored blob is non-empty. Other channels keep walking until
they find their own terminator or hit the root.
Pre-delta plain-value blobs subsume their ancestor's pending
writes (the value already includes them); `_DeltaSnapshot` blobs
do not (snapshot is the value AT that ancestor, prior to its own
pending writes that produce the child).
A blob is the value AT its ancestor, prior to the writes stored
under that same ancestor (those writes produce its child, which
is on the path to the target). This holds for `_DeltaSnapshot`
blobs and for pre-delta plain values alike, so the seed
ancestor's own writes are always collected. Writes at ancestors
older than the seed are subsumed by the seed value and are never
reached — the walk terminates there.
"""
if not channels:
return {}
# Imported lazily to avoid a hard checkpoint→serde-types coupling at
# module import; only this override needs the runtime check.
from langgraph.checkpoint.serde.types import _DeltaSnapshot
thread_id = config["configurable"]["thread_id"]
checkpoint_ns = config["configurable"].get("checkpoint_ns", "")
checkpoint_id = config["configurable"].get("checkpoint_id", "")
@@ -205,11 +204,6 @@ class InMemorySaver(
):
if ch not in remaining:
continue
blob_value = blob_value_by_ch.get(ch)
if blob_value is not None and not isinstance(
blob_value, _DeltaSnapshot
):
continue
collected_by_ch[ch].append(
(tid, ch, self.serde.loads_typed(serialized))
)
@@ -12,7 +12,7 @@ Core types:
from __future__ import annotations
from abc import ABC, abstractmethod
from collections.abc import Iterable
from collections.abc import Iterable, Mapping
from datetime import datetime
from typing import (
Any,
@@ -473,10 +473,10 @@ class PutOp(NamedTuple):
the full path would effectively be `"documents/user123/report1"`
"""
value: dict[str, Any] | None
value: Mapping[str, Any] | None
"""The data to store, or `None` to mark the item for deletion.
The value must be a dictionary with string keys and JSON-serializable values.
The value must be a mapping with string keys and JSON-serializable values.
Setting this to `None` signals that the item should be deleted.
Example:
@@ -857,7 +857,7 @@ class BaseStore(ABC):
self,
namespace: tuple[str, ...],
key: str,
value: dict[str, Any],
value: Mapping[str, Any],
index: Literal[False] | list[str] | None = None,
*,
ttl: float | None | NotProvided = NOT_PROVIDED,
@@ -869,7 +869,7 @@ class BaseStore(ABC):
Example: `("documents", "user123")`
key: Unique identifier within the namespace. Together with namespace forms
the complete path to the item.
value: Dictionary containing the item's data. Must contain string keys
value: Mapping containing the item's data. Must contain string keys
and JSON-serializable values.
index: Controls how the item's fields are indexed for search:
@@ -1110,7 +1110,7 @@ class BaseStore(ABC):
self,
namespace: tuple[str, ...],
key: str,
value: dict[str, Any],
value: Mapping[str, Any],
index: Literal[False] | list[str] | None = None,
*,
ttl: float | None | NotProvided = NOT_PROVIDED,
@@ -1122,7 +1122,7 @@ class BaseStore(ABC):
Example: `("documents", "user123")`
key: Unique identifier within the namespace. Together with namespace forms
the complete path to the item.
value: Dictionary containing the item's data. Must contain string keys
value: Mapping containing the item's data. Must contain string keys
and JSON-serializable values.
index: Controls how the item's fields are indexed for search:
@@ -5,7 +5,7 @@ from __future__ import annotations
import asyncio
import functools
import weakref
from collections.abc import Callable, Iterable
from collections.abc import Callable, Iterable, Mapping
from typing import Any, Literal, TypeVar
from langgraph.store.base import (
@@ -132,7 +132,7 @@ class AsyncBatchedBaseStore(BaseStore):
self,
namespace: tuple[str, ...],
key: str,
value: dict[str, Any],
value: Mapping[str, Any],
index: Literal[False] | list[str] | None = None,
*,
ttl: float | None | NotProvided = NOT_PROVIDED,
@@ -231,7 +231,7 @@ class AsyncBatchedBaseStore(BaseStore):
self,
namespace: tuple[str, ...],
key: str,
value: dict[str, Any],
value: Mapping[str, Any],
index: Literal[False] | list[str] | None = None,
*,
ttl: float | None | NotProvided = NOT_PROVIDED,
@@ -11,7 +11,7 @@ from __future__ import annotations
import asyncio
import functools
import json
from collections.abc import Awaitable, Callable, Sequence
from collections.abc import Awaitable, Callable, Mapping, Sequence
from typing import Any
from langchain_core.embeddings import Embeddings
@@ -244,6 +244,9 @@ def get_text_at_path(obj: Any, path: str | list[str]) -> list[str]:
- Multi-field selection: "{field1,field2}"
- Nested paths in multi-field: "{field1,nested.field2}"
"""
if isinstance(obj, Mapping) and not isinstance(obj, dict):
obj = dict(obj)
if not path or path == "$":
return [json.dumps(obj, sort_keys=True, ensure_ascii=False)]
@@ -408,7 +408,7 @@ class InMemoryStore(BaseStore):
self._vectors[namespace].pop(key, None)
else:
self._data[namespace][key] = Item(
value=op.value,
value=dict(op.value),
key=key,
namespace=namespace,
created_at=datetime.now(timezone.utc),
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "langgraph-checkpoint"
version = "4.1.1"
version = "4.2.0"
description = "Library with base interfaces for LangGraph checkpoint savers."
authors = []
requires-python = ">=3.10"
+47 -18
View File
@@ -577,9 +577,19 @@ class TestPreDeltaBlobTerminator:
"""
def _build_mixed_thread(self) -> tuple[InMemorySaver, str, str, str, str]:
"""Three-checkpoint chain: cp1 (pre-delta, blob=[A]), cp2 (delta,
write=B), cp3 (delta, write=C). Reconstructing at cp3 must yield
seed=[A] + writes=[B, C].
"""Four-checkpoint chain spanning the migration boundary:
* `cp0` — pre-delta ancestor OLDER than the seed. Its write
(`OLDER-WRITE`) is already folded into `cp1`'s stored value, so the
walk must terminate at `cp1` and never reach it.
* `cp1` — pre-delta, blob `["A"]`. That value is the state ENTERING
`cp1`; the write stored under `cp1` (`PRE-DELTA-WRITE`) is what
produced `cp2` and is NOT subsumed by the blob.
* `cp2` — delta-era, no stored value, write `B`.
* `cp3` — target, delta-era, write `PENDING-AT-TARGET`.
Reconstructing at `cp3` must yield seed `["A"]` plus writes
`["PRE-DELTA-WRITE", "B"]`.
Returns `(saver, thread_id, ns, channel, cp3_id)`.
"""
@@ -587,16 +597,21 @@ class TestPreDeltaBlobTerminator:
serde = JsonPlusSerializer()
thread_id, ns, channel = "t1", "", "messages"
v0 = "00000000000000000000000000000000.0"
v1 = "00000000000000000000000000000001.0"
v2 = "00000000000000000000000000000002.0"
v3 = "00000000000000000000000000000003.0"
# Pre-delta: cp1 stored a real blob for the channel.
# Pre-delta: cp0 and cp1 stored real blobs for the channel.
saver.blobs[(thread_id, ns, channel, v0)] = serde.dumps_typed([])
saver.blobs[(thread_id, ns, channel, v1)] = serde.dumps_typed(["A"])
# Delta-era: cp2 and cp3 store "empty"; real writes in checkpoint_writes.
saver.blobs[(thread_id, ns, channel, v2)] = ("empty", b"")
saver.blobs[(thread_id, ns, channel, v3)] = ("empty", b"")
cp0 = empty_checkpoint()
cp0["id"] = "cp0"
cp0["channel_versions"][channel] = v0
cp1 = empty_checkpoint()
cp1["id"] = "cp1"
cp1["channel_versions"][channel] = v1
@@ -608,16 +623,24 @@ class TestPreDeltaBlobTerminator:
cp3["channel_versions"][channel] = v3
saver.storage[thread_id][ns] = {
"cp1": (serde.dumps_typed(cp1), serde.dumps_typed({}), None),
"cp0": (serde.dumps_typed(cp0), serde.dumps_typed({}), None),
"cp1": (serde.dumps_typed(cp1), serde.dumps_typed({}), "cp0"),
"cp2": (serde.dumps_typed(cp2), serde.dumps_typed({}), "cp1"),
"cp3": (serde.dumps_typed(cp3), serde.dumps_typed({}), "cp2"),
}
# Write under cp1 would be from the pre-delta era and MUST be ignored
# (the blob already captures it). We add one and assert it is not
# folded into the reconstructed result.
saver.writes[(thread_id, ns, "cp1")][("task0", 0)] = (
# Write under cp0 is older than the seed — cp1's blob already folded
# it in, and the terminator must stop before reaching it.
saver.writes[(thread_id, ns, "cp0")][("task0", 0)] = (
"task0",
channel,
serde.dumps_typed("OLDER-WRITE"),
"",
)
# Write under cp1 postdates cp1's blob (it is what produced cp2, which
# stores no value of its own) and MUST be replayed.
saver.writes[(thread_id, ns, "cp1")][("task1", 0)] = (
"task1",
channel,
serde.dumps_typed("PRE-DELTA-WRITE"),
"",
)
@@ -651,15 +674,19 @@ class TestPreDeltaBlobTerminator:
# Seed came from the pre-delta blob at cp1.
assert result["seed"] == ["A"]
# Delta-era writes from cp2 replay through the reducer on top of seed.
# cp3 is the target — its own write is pending for the NEXT step and
# must be excluded.
# The seed ancestor's own write and the delta-era write from cp2 both
# replay through the reducer on top of the seed, oldest first. cp3 is
# the target — its own write is pending for the NEXT step and must be
# excluded.
values = [v for _, _, v in result["writes"]]
assert values == ["B"]
assert values == ["PRE-DELTA-WRITE", "B"]
def test_pre_delta_blob_terminates_walk_before_older_writes(self) -> None:
"""Writes stored at the pre-delta ancestor itself must not be replayed
(the blob subsumes them)."""
def test_seed_bounds_walk_without_dropping_its_own_writes(self) -> None:
"""The seed terminator bounds the walk: writes at ancestors OLDER than
the seed are already folded into the seed value and must not be
replayed. The seed ancestor's own write is not one of them — it
postdates the stored value and produced the next checkpoint.
"""
saver, thread_id, ns, channel, target = self._build_mixed_thread()
config: RunnableConfig = {
"configurable": {
@@ -674,7 +701,9 @@ class TestPreDeltaBlobTerminator:
]
values = [v for _, _, v in result["writes"]]
# The pre-delta write under cp1 must not appear (the blob subsumes it).
assert "PRE-DELTA-WRITE" not in values
# Older than the seed — subsumed by cp1's blob, so the walk stops first.
assert "OLDER-WRITE" not in values
# Stored AT the seed ancestor — not subsumed, so it must be replayed.
assert "PRE-DELTA-WRITE" in values
# And the pending write at the target is never folded in.
assert "PENDING-AT-TARGET" not in values
+15 -1
View File
@@ -1,7 +1,9 @@
import asyncio
import json
from collections.abc import Iterable
from collections import UserDict
from collections.abc import Iterable, Mapping
from datetime import datetime
from types import MappingProxyType
from typing import Any
import pytest
@@ -137,6 +139,18 @@ def test_get_text_at_path() -> None:
assert get_text_at_path(nested_data, "nested[{invalid}]") == []
@pytest.mark.parametrize(
"mapping",
[
UserDict({"text": "searchable"}),
MappingProxyType({"text": "searchable"}),
],
)
def test_get_text_at_path_with_non_dict_mapping(mapping: Mapping[str, str]) -> None:
assert get_text_at_path(mapping, "$") == ['{"text": "searchable"}']
assert get_text_at_path(mapping, "text") == ["searchable"]
async def test_async_batch_store(mocker: MockerFixture) -> None:
abatch = mocker.stub()
+1392 -703
View File
File diff suppressed because it is too large Load Diff
+6 -6
View File
@@ -21,8 +21,8 @@
"test:all": "yarn test && yarn test:int && yarn lint:langgraph"
},
"dependencies": {
"@langchain/core": "^1.2.4",
"@langchain/langgraph": "^1.4.8"
"@langchain/core": "^1.2.9",
"@langchain/langgraph": "^1.4.13"
},
"resolutions": {
"@langchain/langgraph-checkpoint": "1.0.4"
@@ -32,15 +32,15 @@
"@eslint/js": "^10.0.1",
"@tsconfig/recommended": "^1.0.13",
"@types/jest": "^30.0.0",
"@typescript-eslint/eslint-plugin": "^8.65.0",
"@typescript-eslint/parser": "^8.65.0",
"@typescript-eslint/eslint-plugin": "^8.68.0",
"@typescript-eslint/parser": "^8.68.0",
"dotenv": "^17.4.2",
"eslint": "^10.8.0",
"eslint": "^10.9.1",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-no-instanceof": "^1.0.1",
"eslint-plugin-prettier": "^5.5.6",
"jest": "^30.4.2",
"jest": "^30.5.0",
"prettier": "^3.9.6",
"ts-jest": "^29.4.12",
"typescript": "^7.0.2"
File diff suppressed because it is too large Load Diff
@@ -9,8 +9,8 @@
},
"dependencies": {
"@js-monorepo-example/shared": "*",
"@langchain/core": "^1.2.4",
"@langchain/langgraph": "^1.4.8"
"@langchain/core": "^1.2.9",
"@langchain/langgraph": "^1.4.13"
},
"devDependencies": {
"typescript": "^7.0.2"
+4 -4
View File
@@ -17,18 +17,18 @@
"lint": "eslint 'apps/**/*.ts' 'libs/**/*.ts'"
},
"devDependencies": {
"turbo": "^2.10.8",
"turbo": "^2.10.12",
"typescript": "^7.0.2",
"@tsconfig/recommended": "^1.0.13",
"@eslint/eslintrc": "^3.3.6",
"@eslint/js": "^10.0.1",
"eslint": "^10.8.0",
"eslint": "^10.9.1",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-no-instanceof": "^1.0.1",
"eslint-plugin-prettier": "^5.5.6",
"@typescript-eslint/eslint-plugin": "^8.65.0",
"@typescript-eslint/parser": "^8.65.0",
"@typescript-eslint/eslint-plugin": "^8.68.0",
"@typescript-eslint/parser": "^8.68.0",
"prettier": "^3.9.6"
}
}
+133 -128
View File
@@ -103,10 +103,10 @@
resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-9.0.0.tgz#4d0a3f127058043bf2e7ee169eaf30ed901302f3"
integrity sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==
"@langchain/core@^1.2.4":
version "1.2.4"
resolved "https://registry.yarnpkg.com/@langchain/core/-/core-1.2.4.tgz#3916181e00f93b2e3b5801ab8273c07d144d75ce"
integrity sha512-GIrJktdsFPx8gM0C3VyikkeYGZAV7iRIzUJuS5tFatiKLExybou0LI0MuxH9kksN38quyfWdQDl20lIEAEVkVA==
"@langchain/core@^1.2.9":
version "1.2.9"
resolved "https://registry.yarnpkg.com/@langchain/core/-/core-1.2.9.tgz#4f5fb27ba07c51ce4fb8e1dc32eb36945737afa1"
integrity sha512-conzSEj9Zu1AyXJLXsSbgrtxtxinmI1yGqQ5CIJZSoV5rvv+yvQE/vgBnoySpBQ/bl3YPgj2FL/gbDjWykLSfg==
dependencies:
"@cfworker/json-schema" "^4.0.2"
"@standard-schema/spec" "^1.1.0"
@@ -116,28 +116,28 @@
p-queue "^6.6.2"
zod "^3.25.76 || ^4"
"@langchain/langgraph-checkpoint@^1.1.3":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-1.1.3.tgz#891f2f9a2e96cf2ab0920f9240f9ad1e0a86a4ab"
integrity sha512-wgzdQNeEsdw1e+4lvlj0tdq/RYR/k1vPin10g0ymGoehZDDgd9nvIllGXSXN4TFgF9sf5qQP/KTkOcLfeseIhA==
"@langchain/langgraph-checkpoint@^1.1.5":
version "1.1.5"
resolved "https://registry.yarnpkg.com/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-1.1.5.tgz#c793177f9afcce31a1e9922f317f88fec1254282"
integrity sha512-BwDwl5VeTOh6CVuiIPgsUgfK51vTJDMSbFcSCUfjJWsl8/DPdK/mbv+ejxJstkSk/BlSPMP4JfXWcN6jD2ea2Q==
"@langchain/langgraph-sdk@~1.9.26":
version "1.9.28"
resolved "https://registry.yarnpkg.com/@langchain/langgraph-sdk/-/langgraph-sdk-1.9.28.tgz#1664cc7b6f2c1509ddffecf17d805a26e70a7e1a"
integrity sha512-4j3XuM0PvtmAbL8mPfBS99ez3+ytRfgbOpAR/nOeaejTRF3Q9dNw2QnaGLGng8wLPtGLoSj+SYgUOVxy9Bv9vg==
"@langchain/langgraph-sdk@~1.10.0":
version "1.10.0"
resolved "https://registry.yarnpkg.com/@langchain/langgraph-sdk/-/langgraph-sdk-1.10.0.tgz#6ec1364a97caf615983161ae1f00b196897b9cd6"
integrity sha512-cPPkh+hMNgeOaGtJRrqs1AjZde45cG2+Ma9Sc10wz2RyvT8SKToCKS+VvkS18SsLajnmq6/FKVmthq6rnUVYOw==
dependencies:
"@langchain/protocol" "^0.0.18"
"@langchain/protocol" "^0.0.19"
"@types/json-schema" "^7.0.15"
p-queue "^9.0.1"
p-retry "^7.1.1"
"@langchain/langgraph@^1.4.8":
version "1.4.8"
resolved "https://registry.yarnpkg.com/@langchain/langgraph/-/langgraph-1.4.8.tgz#65ef5635b5554cd32f502a3808b92d8371998a99"
integrity sha512-DN1Np1XefdBEbp1qBKlt39cwoL743AAGpR5Ipja0gY2YbWvsoQnOTIrjnj/orSAhaUYsdTKS8VSWdFzsHZo6Ig==
"@langchain/langgraph@^1.4.13":
version "1.4.13"
resolved "https://registry.yarnpkg.com/@langchain/langgraph/-/langgraph-1.4.13.tgz#168ab4f05c212fd5ab4b2816bcad2e963b345101"
integrity sha512-LO1ak6jNQ9jR13tm7Ay4Yh2/otrH7LNVUwWTAI7WJigVdW5Fb6LuYSZUzVn4S7sVSiyVFfnrUcDTd8c7eAzPrQ==
dependencies:
"@langchain/langgraph-checkpoint" "^1.1.3"
"@langchain/langgraph-sdk" "~1.9.26"
"@langchain/langgraph-checkpoint" "^1.1.5"
"@langchain/langgraph-sdk" "~1.10.0"
"@langchain/protocol" "^0.0.18"
"@standard-schema/spec" "1.1.0"
@@ -146,6 +146,11 @@
resolved "https://registry.yarnpkg.com/@langchain/protocol/-/protocol-0.0.18.tgz#6d96155e7263c958fbce6d4b7241b4725b72fbad"
integrity sha512-XW1egQtPfsGI41w2AMZNFZrUIwFSQHTjVMZs0OaTpCAvht/QLoaPN8FQcsysMVypOhupG28J29yOorrc70otBQ==
"@langchain/protocol@^0.0.19":
version "0.0.19"
resolved "https://registry.yarnpkg.com/@langchain/protocol/-/protocol-0.0.19.tgz#7fe43fed115dc34b3b4c246e8d5283fbcbfab7b0"
integrity sha512-9hKcRrH7cBX6gfutdfXPoft1OCchHe4FEpALoDJMl5Qu+n/YG5ynZmyu8+8cxORlPwHBoKTxggvXz+76M1yX1Q==
"@pkgr/core@^0.3.6":
version "0.3.6"
resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.3.6.tgz#3569708bd4be4d8870ba32bf1c456dac81600d97"
@@ -166,35 +171,35 @@
resolved "https://registry.yarnpkg.com/@tsconfig/recommended/-/recommended-1.0.13.tgz#269fce3ad04ca70b93269ff44cca81b950f542da"
integrity sha512-sySRuBfMKyKO/j2ZAhR8kSembhjuPEV4Ra3AHtmWLq51+iGaudr45crPSzNC5b7/Ctrh9dfUpBuTlYrH6rM58Q==
"@turbo/darwin-64@2.10.8":
version "2.10.8"
resolved "https://registry.yarnpkg.com/@turbo/darwin-64/-/darwin-64-2.10.8.tgz#0ae7cde6b95b82b0a4fe406ffea64bdfcf68a0ee"
integrity sha512-po+7rfJfUnFXjWlcoN2RwhErgzCdRtBc1T26vYPcywHlggmCQiQe1uWaE4j+BibI2uY9/2pDoFzMN0rmSaPFOw==
"@turbo/darwin-64@2.10.12":
version "2.10.12"
resolved "https://registry.yarnpkg.com/@turbo/darwin-64/-/darwin-64-2.10.12.tgz#719ac12ae47caf7b4be855d672582cdbfde177ea"
integrity sha512-9nKgKoF6ZOUsM+or0OtNf+TTJSfGvDNP7ZFv/ZGWVwOSCkumyctQiTeHwB4UNljHTnC41AqylgbunLDHoccNrA==
"@turbo/darwin-arm64@2.10.8":
version "2.10.8"
resolved "https://registry.yarnpkg.com/@turbo/darwin-arm64/-/darwin-arm64-2.10.8.tgz#18a9127c0a0d9c5ad7de49bdb27e7032f8946334"
integrity sha512-+zB2btDJ00lnPRuqOvpVvgl4x34k/djZQGZTTCfjn7JgNCl8QFY5Njo5+dqkY1g/+9gbbsnAvWm9CmJg9ebcXA==
"@turbo/darwin-arm64@2.10.12":
version "2.10.12"
resolved "https://registry.yarnpkg.com/@turbo/darwin-arm64/-/darwin-arm64-2.10.12.tgz#ac2d3dde3a2407f8359ca2e3152690280cff2714"
integrity sha512-H4Elb1jqTZVeIC9bbcNwjSzemZ6RegoTOVHeuV5Osirt2Z8UguTyisMEkvZjPVZgMeN9J4ERZBFad40tFnkb7w==
"@turbo/linux-64@2.10.8":
version "2.10.8"
resolved "https://registry.yarnpkg.com/@turbo/linux-64/-/linux-64-2.10.8.tgz#1677672f5760d272c0a0608686fe8b8b29491fdb"
integrity sha512-K1dxqiVisyN7cViVsfQLs6xscQbYuI8aO2nbUhFURDACgEDfZRdP/b4CCxeosBJpcMfhYyiibWqJorCnvz9kKg==
"@turbo/linux-64@2.10.12":
version "2.10.12"
resolved "https://registry.yarnpkg.com/@turbo/linux-64/-/linux-64-2.10.12.tgz#264a0ec88a1f69f93cf57dab20be1b4c50bf226c"
integrity sha512-lr7KIotukvjZwEXiFSYAeOH3BWzjFVBbSzTbv0fuGFsNukYyH0+g1hB5ecqnJkgkYU+KHEMG1edOhnjiKON1wQ==
"@turbo/linux-arm64@2.10.8":
version "2.10.8"
resolved "https://registry.yarnpkg.com/@turbo/linux-arm64/-/linux-arm64-2.10.8.tgz#dbdb5aef9e53bb4c88357dafc19f79138ec29253"
integrity sha512-Gi77ibVnrE1fEmvr+/wBD/yvRqhwp/RQuCp2+//lv1U1wNFFyVg0V7Wj8FG9FXPFAw5QHReo8rxc9+wBSDZjzA==
"@turbo/linux-arm64@2.10.12":
version "2.10.12"
resolved "https://registry.yarnpkg.com/@turbo/linux-arm64/-/linux-arm64-2.10.12.tgz#3ee53d1f930d2bb65708e904971be0e765381e37"
integrity sha512-f0pZDTtvzB5SuNwuXBaKbZHUCMCukgc8nMlHEuvLmj91Fzec+MEbr3cAvGNor5htEDqZnO6Lxt9N/GPI/77oGA==
"@turbo/windows-64@2.10.8":
version "2.10.8"
resolved "https://registry.yarnpkg.com/@turbo/windows-64/-/windows-64-2.10.8.tgz#451c3b5421c9ce573c764b1efacae5ad4d1312ee"
integrity sha512-znnLO1haJPYTHoKMKwlAvlkjRiYbbhBzME6wIGaMd+fwir23U6jVd1ecaTWWi1fbnRVqxMfgDBKseQ/hLKb83g==
"@turbo/windows-64@2.10.12":
version "2.10.12"
resolved "https://registry.yarnpkg.com/@turbo/windows-64/-/windows-64-2.10.12.tgz#ac0a0b7794f9a541e68e930383f48747f7e648ab"
integrity sha512-SDOueJRjS/QcykWf2KCRtTLmIl5YMKsLbXkXQGhDwcTXvKXZiS5ih5lBl/gkwZIpYFjqA/rAlfMzlAFcVHNe0g==
"@turbo/windows-arm64@2.10.8":
version "2.10.8"
resolved "https://registry.yarnpkg.com/@turbo/windows-arm64/-/windows-arm64-2.10.8.tgz#5661ca9b75713aece06d319493e48a366a4cd05c"
integrity sha512-VN30vh3b3Czh2WzYHNTfF1FE0YMZ5aHsLO8dBMGHJewA6792wX6iJR8ZxlzFW6WdOu0gEAKIvlYhfyT81Wkm4Q==
"@turbo/windows-arm64@2.10.12":
version "2.10.12"
resolved "https://registry.yarnpkg.com/@turbo/windows-arm64/-/windows-arm64-2.10.12.tgz#50eb6c20a20d0aab216d2b6aa13cc3100ea44106"
integrity sha512-0i0mVUa4kKk+/B3RwEwPMf9CB+T7ul56hn5FFHNA4VUNTOoLBEd6aNf3FaKfCatDNZ6cicCEf6if9QUTVyzzcA==
"@types/esrecurse@^4.3.1":
version "4.3.1"
@@ -216,110 +221,110 @@
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
"@typescript-eslint/eslint-plugin@^8.65.0":
version "8.65.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.65.0.tgz#0a58df6fea8c0bf6b396f518077099bc8b762bb5"
integrity sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==
"@typescript-eslint/eslint-plugin@^8.68.0":
version "8.68.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.68.0.tgz#a8fbdb1cf49aafaf16071b646daad890151bd149"
integrity sha512-WASHDpCm6qO5jj9g1a+8NiW5+GCkAyLReR56/4VruYmNgfUmqpxOfZ2Yfb8xGfJPWv5Qi6LSD8sXdces3vbp/Q==
dependencies:
"@eslint-community/regexpp" "^4.12.2"
"@typescript-eslint/scope-manager" "8.65.0"
"@typescript-eslint/type-utils" "8.65.0"
"@typescript-eslint/utils" "8.65.0"
"@typescript-eslint/visitor-keys" "8.65.0"
"@typescript-eslint/scope-manager" "8.68.0"
"@typescript-eslint/type-utils" "8.68.0"
"@typescript-eslint/utils" "8.68.0"
"@typescript-eslint/visitor-keys" "8.68.0"
ignore "^7.0.5"
natural-compare "^1.4.0"
ts-api-utils "^2.5.0"
"@typescript-eslint/parser@^8.65.0":
version "8.65.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.65.0.tgz#5295c1058c0a1dd746ef28baaf9c0341dbdf03dc"
integrity sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==
"@typescript-eslint/parser@^8.68.0":
version "8.68.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.68.0.tgz#61de31481354c50457bc9621a7ed746779f09ee7"
integrity sha512-fHq2VC1kpyYfvEcbiMjOpySY4WS7voEp89yAThrHRX5sm9j2lzYppCb2umFMEed4fWcyeLjHxrz0mpjNBaBxMQ==
dependencies:
"@typescript-eslint/scope-manager" "8.65.0"
"@typescript-eslint/types" "8.65.0"
"@typescript-eslint/typescript-estree" "8.65.0"
"@typescript-eslint/visitor-keys" "8.65.0"
"@typescript-eslint/scope-manager" "8.68.0"
"@typescript-eslint/types" "8.68.0"
"@typescript-eslint/typescript-estree" "8.68.0"
"@typescript-eslint/visitor-keys" "8.68.0"
debug "^4.4.3"
"@typescript-eslint/project-service@8.65.0":
version "8.65.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.65.0.tgz#65fbbc9a1591abffaeab5513200f848271cb0aa5"
integrity sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==
"@typescript-eslint/project-service@8.68.0":
version "8.68.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.68.0.tgz#ea4b2869f59165c420cd7a4bbebc38039794e8cc"
integrity sha512-5GQtWZCXFcFYux955pvoS02WLc49pXNlvIxocKjS0clvwo3in1RdlzVKyiqQH9vE5AKWFLTaUgeQkOrTS+0Qxw==
dependencies:
"@typescript-eslint/tsconfig-utils" "^8.65.0"
"@typescript-eslint/types" "^8.65.0"
"@typescript-eslint/tsconfig-utils" "^8.68.0"
"@typescript-eslint/types" "^8.68.0"
debug "^4.4.3"
"@typescript-eslint/scope-manager@8.65.0":
version "8.65.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.65.0.tgz#9547202ce7e608e7b6283df585703b980a0ea70d"
integrity sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==
"@typescript-eslint/scope-manager@8.68.0":
version "8.68.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.68.0.tgz#e5a13a1159497faeab4e48279bf07576045b1499"
integrity sha512-T5eXpcaJNg8bhjHJ8Rjp68Vq/QBteYtTKY8TZqVNPaUbuz0f6jI9t6aDkylwvalpAB9XTTFeFOjrjXAZ3YvmVA==
dependencies:
"@typescript-eslint/types" "8.65.0"
"@typescript-eslint/visitor-keys" "8.65.0"
"@typescript-eslint/types" "8.68.0"
"@typescript-eslint/visitor-keys" "8.68.0"
"@typescript-eslint/tsconfig-utils@8.65.0":
version "8.65.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.65.0.tgz#36f168fcdbb1295f7446ff0379667f98c3cf1bf3"
integrity sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==
"@typescript-eslint/tsconfig-utils@8.68.0":
version "8.68.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.68.0.tgz#594d7a3c5952055b3c431fc563ca7fd1defcce18"
integrity sha512-F7zrGQfiJHojPwi8vhxZQC1tWtJzvL74cK/nqri2lk8YUXvYaYwl263xOJ69jDWPUk1hmcdoayFwk9lX09npVw==
"@typescript-eslint/tsconfig-utils@^8.65.0":
version "8.66.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.66.0.tgz#3a89066c507aa30541dc176804685b4b444e1e52"
integrity sha512-9D5gLYZG4rOjcoag8MQ/fWI8WqA9wcPDyOGyWtWFhvM1lHRbliqUSPIY5J3zqCU1tvSwzXxnnjhQhz5Ne7mJ4g==
"@typescript-eslint/tsconfig-utils@^8.68.0":
version "8.69.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.69.0.tgz#d3b0ccc781ab252a90a0b3989b9d1eb85ab59469"
integrity sha512-xNqK7YTDZsLniQMV/4rpFR8Z5JlqeRvVjuG1YgF/mdPVH84HSD19L8CczMA0qg2RfwEV231GHH3VnToJDo4MfQ==
"@typescript-eslint/type-utils@8.65.0":
version "8.65.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.65.0.tgz#d316d7522d93cff4cd14f305e02f3df2d804f9c1"
integrity sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==
"@typescript-eslint/type-utils@8.68.0":
version "8.68.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.68.0.tgz#8f3e838dbd740909db27053857468cd037b00220"
integrity sha512-X77zqoY1EjeWGs/0JNxeaMfp5C5lIz4Tw8y66F1Ne8Faq6g424sBNYM6xBAqElfGZPLpWS+CZAp0DXyKDzWiHg==
dependencies:
"@typescript-eslint/types" "8.65.0"
"@typescript-eslint/typescript-estree" "8.65.0"
"@typescript-eslint/utils" "8.65.0"
"@typescript-eslint/types" "8.68.0"
"@typescript-eslint/typescript-estree" "8.68.0"
"@typescript-eslint/utils" "8.68.0"
debug "^4.4.3"
ts-api-utils "^2.5.0"
"@typescript-eslint/types@8.65.0":
version "8.65.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.65.0.tgz#3e86738416a777c8b8925ab46745f48ecf904c9f"
integrity sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==
"@typescript-eslint/types@8.68.0":
version "8.68.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.68.0.tgz#3f9d4e62fbe5728f09403cdc7b4d58af842ac1af"
integrity sha512-9RnpsGJjrAllCMefGVVsImJM24YurhC0Q1h4UbvivtvOqXmR/vEJge2OoE++z9m6hyg8T1Q8t5SNT6tHSbrxcg==
"@typescript-eslint/types@^8.65.0":
version "8.66.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.66.0.tgz#3cacab94d3b564c1d48c56eb37b89f89a6d48479"
integrity sha512-H6gcYaSDOyvL3AD/jHUtUFo2jqGgn/F6nuyuZSu0QTesxL+cP4dQoIMrODRofuJC09g64+WgZ6tE19Y1N2YIFQ==
"@typescript-eslint/types@^8.68.0":
version "8.69.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.69.0.tgz#5d9ad3f707c2e4f70a2db540031104df3e63bcf5"
integrity sha512-K3VrubUPhlo9VDBS6QdI8YB5j7ClpqLRdefcz6PFrhnwicehBweqQ9Evhl4l+FYz0HdDmMqIiSX0aldGRYtDCA==
"@typescript-eslint/typescript-estree@8.65.0":
version "8.65.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.65.0.tgz#f1f514808f6aa713e2d678ae8ff592a65e1632af"
integrity sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==
"@typescript-eslint/typescript-estree@8.68.0":
version "8.68.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.68.0.tgz#bf4165029825138ac27231a3ff02923ecd977f38"
integrity sha512-OKKsD0tYmoNiU5PW2zehO1yO56jYOm1ShYlxon/Z0SJNidAkdVg86eg9ruRuoXf8xfnuWZGbwDsStkoXbZtIIA==
dependencies:
"@typescript-eslint/project-service" "8.65.0"
"@typescript-eslint/tsconfig-utils" "8.65.0"
"@typescript-eslint/types" "8.65.0"
"@typescript-eslint/visitor-keys" "8.65.0"
"@typescript-eslint/project-service" "8.68.0"
"@typescript-eslint/tsconfig-utils" "8.68.0"
"@typescript-eslint/types" "8.68.0"
"@typescript-eslint/visitor-keys" "8.68.0"
debug "^4.4.3"
minimatch "^10.2.2"
semver "^7.7.3"
tinyglobby "^0.2.15"
ts-api-utils "^2.5.0"
"@typescript-eslint/utils@8.65.0":
version "8.65.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.65.0.tgz#afedd974a0c8deeef553b509df5800bafd615a72"
integrity sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==
"@typescript-eslint/utils@8.68.0":
version "8.68.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.68.0.tgz#00547f2c8de8aca2a3c21752a9711f73206fd36d"
integrity sha512-PB5gJMMOg0Q5P1tsgWtEAqQacJXq0qEqRHDX/YJ4FaTMLfZPpHB3gjl2EJuiZyPABxmj4ZQYiY9m1bdAJ5y7tQ==
dependencies:
"@eslint-community/eslint-utils" "^4.9.1"
"@typescript-eslint/scope-manager" "8.65.0"
"@typescript-eslint/types" "8.65.0"
"@typescript-eslint/typescript-estree" "8.65.0"
"@typescript-eslint/scope-manager" "8.68.0"
"@typescript-eslint/types" "8.68.0"
"@typescript-eslint/typescript-estree" "8.68.0"
"@typescript-eslint/visitor-keys@8.65.0":
version "8.65.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.65.0.tgz#e3704c13cb4a1c22454c1abf28ff4737e15018c6"
integrity sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==
"@typescript-eslint/visitor-keys@8.68.0":
version "8.68.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.68.0.tgz#78db3c9bb258a0309d9e2b1b617127c3a8fb1f54"
integrity sha512-YR65gGdGvTUAWLldC3xLOvOzamdGzB4A5/N8rehEaHs3Zvoe39BhgY+u0SPch1OvrVTfLcc55wsSgK2NcnTS/A==
dependencies:
"@typescript-eslint/types" "8.65.0"
"@typescript-eslint/types" "8.68.0"
eslint-visitor-keys "^5.0.0"
"@typescript/typescript-aix-ppc64@7.0.2":
@@ -881,10 +886,10 @@ eslint-visitor-keys@^5.0.0, eslint-visitor-keys@^5.0.1:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz#9e3c9489697824d2d4ce3a8ad12628f91e9f59be"
integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==
eslint@^10.8.0:
version "10.8.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-10.8.0.tgz#e6d19907a3f090a53a022261ba34c5ff6d04908b"
integrity sha512-nuKKvN+oIBO0koN7Tm7dlkmnkc21mtt0QJLwAKzjLq14y6lRTdVG36MZHJ8eQHwdJMwZbQNMlPOYedMq/oVJvQ==
eslint@^10.9.1:
version "10.9.1"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-10.9.1.tgz#409da5c41a5536d5a849f8555a18ca7ef1eb963b"
integrity sha512-9VaAkDURekixUQJy0oJYl2DcN6oKMfxay7XzaGYAWQwsb6qfKf+x76R2k1L8kb1boc+FyCAaTA9GmiKaaiaF+A==
dependencies:
"@eslint-community/eslint-utils" "^4.8.0"
"@eslint-community/regexpp" "^4.12.2"
@@ -1908,17 +1913,17 @@ tsconfig-paths@^3.15.0:
minimist "^1.2.6"
strip-bom "^3.0.0"
turbo@^2.10.8:
version "2.10.8"
resolved "https://registry.yarnpkg.com/turbo/-/turbo-2.10.8.tgz#09457cb7db79710586da455a29bccc05f15b1b72"
integrity sha512-9+8YX5QOkGXzZxcIykTHgaooRHGMWO+jfdyRK0o+rN0U7hBIig2MrJ8r/aNzIPDPhdA73SGb0O+tIztaModTMg==
turbo@^2.10.12:
version "2.10.12"
resolved "https://registry.yarnpkg.com/turbo/-/turbo-2.10.12.tgz#22f552bd88182d58365960a02e5f45e628fb965b"
integrity sha512-AswgMPnpOoaVZHrrSBejETzEbuIA69OVGwfkHwfrY0A23VjWXBANzgq9+OymWOHAIArB7D1+1z498WY8fGg1Jw==
optionalDependencies:
"@turbo/darwin-64" "2.10.8"
"@turbo/darwin-arm64" "2.10.8"
"@turbo/linux-64" "2.10.8"
"@turbo/linux-arm64" "2.10.8"
"@turbo/windows-64" "2.10.8"
"@turbo/windows-arm64" "2.10.8"
"@turbo/darwin-64" "2.10.12"
"@turbo/darwin-arm64" "2.10.12"
"@turbo/linux-64" "2.10.12"
"@turbo/linux-arm64" "2.10.12"
"@turbo/windows-64" "2.10.12"
"@turbo/windows-arm64" "2.10.12"
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
+16
View File
@@ -970,6 +970,22 @@ def python_config_to_docker_uv_lock(
f"{uv_export_project_dir}/uv.lock",
)
)
for package_root in sorted(
plan.all_workspace_roots,
key=lambda root: root.as_posix(),
):
if package_root == plan.project_root:
continue
package_relative_path = pathlib.PurePosixPath(
package_root.relative_to(plan.project_root).as_posix()
)
package_pyproject_path = package_relative_path / "pyproject.toml"
docker_plan.add_raw(
copy_from_project_root(
package_pyproject_path,
f"{uv_export_project_dir}/{package_pyproject_path.as_posix()}",
)
)
docker_plan.add_instruction("WORKDIR", uv_export_project_dir)
docker_plan.add_instruction(
"RUN",
+13
View File
@@ -1403,6 +1403,19 @@ def test_config_to_docker_uv_lock():
"COPY --from=uv-workspace-root uv.lock /tmp/uv_export/project/uv.lock"
in docker
)
workspace_pyprojects = [
"apps/agent/pyproject.toml",
"libs/extra/pyproject.toml",
"libs/shared/pyproject.toml",
]
export_instruction = "RUN uv export --package agent"
for pyproject_path in workspace_pyprojects:
copy_instruction = (
"COPY --from=uv-workspace-root "
f"{pyproject_path} /tmp/uv_export/project/{pyproject_path}"
)
assert copy_instruction in docker
assert docker.index(copy_instruction) < docker.index(export_instruction)
assert additional_contexts == {"uv-workspace-root": str(project_root.resolve())}
assert (
+6 -6
View File
@@ -266,20 +266,20 @@ wheels = [
[[package]]
name = "langgraph-checkpoint"
version = "4.0.1"
version = "4.2.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "langchain-core" },
{ name = "ormsgpack" },
]
sdist = { url = "https://files.pythonhosted.org/packages/b1/44/a8df45d1e8b4637e29789fa8bae1db022c953cc7ac80093cfc52e923547e/langgraph_checkpoint-4.0.1.tar.gz", hash = "sha256:b433123735df11ade28829e40ce25b9be614930cd50245ff2af60629234befd9", size = 158135, upload-time = "2026-02-27T21:06:16.092Z" }
sdist = { url = "https://files.pythonhosted.org/packages/dc/e1/089c4c9e0a2fec7f883f82ae8e6a727138d50074cfeb6644bc2d13b1019b/langgraph_checkpoint-4.2.0.tar.gz", hash = "sha256:51a593b6bee684b0818e5d6e58e28ab340c6db7794575056ce7bd1b746a84ed7", size = 180239, upload-time = "2026-08-07T20:05:03.756Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/65/4c/09a4a0c42f5d2fc38d6c4d67884788eff7fd2cfdf367fdf7033de908b4c0/langgraph_checkpoint-4.0.1-py3-none-any.whl", hash = "sha256:e3adcd7a0e0166f3b48b8cf508ce0ea366e7420b5a73aa81289888727769b034", size = 50453, upload-time = "2026-02-27T21:06:14.293Z" },
{ url = "https://files.pythonhosted.org/packages/05/71/3b475f09bd57d3a5649792c66353312b4432afd843f301739dfcebd157f0/langgraph_checkpoint-4.2.0-py3-none-any.whl", hash = "sha256:0547fd228935a0b758865de3a3d6d7a2537c308895d0f9ab092ce9151b5da942", size = 56833, upload-time = "2026-08-07T20:05:02.655Z" },
]
[[package]]
name = "langgraph-checkpoint-postgres"
version = "3.0.5"
version = "3.1.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "langgraph-checkpoint" },
@@ -287,9 +287,9 @@ dependencies = [
{ name = "psycopg" },
{ name = "psycopg-pool" },
]
sdist = { url = "https://files.pythonhosted.org/packages/95/7a/8f439966643d32111248a225e6cb33a182d07c90de780c4dbfc1e0377832/langgraph_checkpoint_postgres-3.0.5.tar.gz", hash = "sha256:a8fd7278a63f4f849b5cbc7884a15ca8f41e7d5f7467d0a66b31e8c24492f7eb", size = 127856, upload-time = "2026-03-18T21:25:29.785Z" }
sdist = { url = "https://files.pythonhosted.org/packages/06/92/1e8959f8cd1b56e672fde3227f6fd642be85af6c5fd662d73921074aa39d/langgraph_checkpoint_postgres-3.1.1.tar.gz", hash = "sha256:d320e147ddad8c374cd546df0b52b532dd54d0541dd9fd23fc738cbd5de76f41", size = 150413, upload-time = "2026-07-30T19:15:39.014Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/e8/87/b0f98b33a67204bca9d5619bcd9574222f6b025cf3c125eedcec9a50ecbc/langgraph_checkpoint_postgres-3.0.5-py3-none-any.whl", hash = "sha256:86d7040a88fd70087eaafb72251d796696a0a2d856168f5c11ef620771411552", size = 42907, upload-time = "2026-03-18T21:25:28.75Z" },
{ url = "https://files.pythonhosted.org/packages/03/32/ba457698a48a0e18d786caa770033067049fbe36d6846f8e50f13b594b51/langgraph_checkpoint_postgres-3.1.1-py3-none-any.whl", hash = "sha256:6e353aecd8150de144fef8e51a49076f58b7d6830d4cf51392b7ad4d79832ba7", size = 50778, upload-time = "2026-07-30T19:15:37.405Z" },
]
[[package]]
+1472 -1135
View File
File diff suppressed because it is too large Load Diff
@@ -3,6 +3,7 @@ from __future__ import annotations
import asyncio
import enum
import inspect
import logging
import sys
import warnings
from collections.abc import (
@@ -63,6 +64,26 @@ try:
except ImportError:
_StreamingCallbackHandler = None # type: ignore
logger = logging.getLogger(__name__)
def _trace_payload(value: Any, transform: Callable[[Any], Any] | None) -> Any:
"""Return the payload to record on a run for `value`.
When `transform` is unset this is a passthrough, so unspecified nodes record exactly
as before. When set it always runs (regardless of tracing), but never affects
execution: if it raises, the untransformed value is recorded instead.
"""
if transform is None:
return value
try:
return transform(value)
except Exception:
logger.exception(
"trace input/output processor raised; recording untransformed payload"
)
return value
def _set_config_context(
config: RunnableConfig, run: Any = None
@@ -572,6 +593,7 @@ class RunnableSeq(Runnable):
*steps: RunnableLike,
name: str | None = None,
trace_inputs: Callable[[Any], Any] | None = None,
trace_outputs: Callable[[Any], Any] | None = None,
) -> None:
"""Create a new RunnableSeq.
@@ -597,6 +619,7 @@ class RunnableSeq(Runnable):
self.steps = steps_flat
self.name = name
self.trace_inputs = trace_inputs
self.trace_outputs = trace_outputs
def __or__(
self,
@@ -658,7 +681,7 @@ class RunnableSeq(Runnable):
# start the root run
run_manager = callback_manager.on_chain_start(
None,
self.trace_inputs(input) if self.trace_inputs is not None else input,
_trace_payload(input, self.trace_inputs),
name=config.get("run_name") or self.get_name(),
run_id=config.pop("run_id", None),
)
@@ -689,7 +712,7 @@ class RunnableSeq(Runnable):
run_manager.on_chain_error(e)
raise
else:
run_manager.on_chain_end(input)
run_manager.on_chain_end(_trace_payload(input, self.trace_outputs))
return input
async def ainvoke(
@@ -705,7 +728,7 @@ class RunnableSeq(Runnable):
# start the root run
run_manager = await callback_manager.on_chain_start(
None,
self.trace_inputs(input) if self.trace_inputs is not None else input,
_trace_payload(input, self.trace_inputs),
name=config.get("run_name") or self.get_name(),
run_id=config.pop("run_id", None),
)
@@ -742,7 +765,7 @@ class RunnableSeq(Runnable):
await run_manager.on_chain_error(e)
raise
else:
await run_manager.on_chain_end(input)
await run_manager.on_chain_end(_trace_payload(input, self.trace_outputs))
return input
def stream(
@@ -758,7 +781,7 @@ class RunnableSeq(Runnable):
# start the root run
run_manager = callback_manager.on_chain_start(
None,
self.trace_inputs(input) if self.trace_inputs is not None else input,
_trace_payload(input, self.trace_inputs),
name=config.get("run_name") or self.get_name(),
run_id=config.pop("run_id", None),
)
@@ -803,7 +826,7 @@ class RunnableSeq(Runnable):
run_manager.on_chain_error(e)
raise
else:
run_manager.on_chain_end(output)
run_manager.on_chain_end(_trace_payload(output, self.trace_outputs))
async def astream(
self,
@@ -818,7 +841,7 @@ class RunnableSeq(Runnable):
# start the root run
run_manager = await callback_manager.on_chain_start(
None,
self.trace_inputs(input) if self.trace_inputs is not None else input,
_trace_payload(input, self.trace_inputs),
name=config.get("run_name") or self.get_name(),
run_id=config.pop("run_id", None),
)
@@ -873,7 +896,9 @@ class RunnableSeq(Runnable):
await run_manager.on_chain_error(e)
raise
else:
await run_manager.on_chain_end(output)
await run_manager.on_chain_end(
_trace_payload(output, self.trace_outputs)
)
else:
try:
async with AsyncExitStack() as stack:
@@ -903,7 +928,9 @@ class RunnableSeq(Runnable):
await run_manager.on_chain_error(e)
raise
else:
await run_manager.on_chain_end(output)
await run_manager.on_chain_end(
_trace_payload(output, self.trace_outputs)
)
def _consume_iter(it: Iterator[Any]) -> Any:
+9 -1
View File
@@ -9,7 +9,13 @@ from langgraph.store.base import BaseStore
from langgraph._internal._typing import EMPTY_SEQ
from langgraph.runtime import Runtime
from langgraph.types import CachePolicy, RetryPolicy, StreamWriter, TimeoutPolicy
from langgraph.types import (
CachePolicy,
RetryPolicy,
StreamWriter,
TimeoutPolicy,
TracePolicy,
)
from langgraph.typing import ContextT, NodeInputT, NodeInputT_contra
@@ -93,3 +99,5 @@ class StateNodeSpec(Generic[NodeInputT, ContextT]):
ends: tuple[str, ...] | dict[str, str] | None = EMPTY_SEQ
defer: bool = False
timeout: TimeoutPolicy | None = None
trace_policy: TracePolicy | None = None
"""Optional policy controlling what this node records on its trace run."""
+14
View File
@@ -85,6 +85,7 @@ from langgraph.types import (
RetryPolicy,
Send,
TimeoutPolicy,
TracePolicy,
ensure_valid_checkpointer,
)
from langgraph.typing import ContextT, InputT, NodeInputT, OutputT, StateT
@@ -384,6 +385,7 @@ class StateGraph(Generic[StateT, ContextT, InputT, OutputT]):
error_handler: StateNode[Any, ContextT] | None = None,
destinations: dict[str, str] | tuple[str, ...] | None = None,
timeout: float | timedelta | TimeoutPolicy | None = None,
trace_policy: TracePolicy | None = None,
**kwargs: Unpack[DeprecatedKwargs],
) -> Self:
"""Add a new node to the `StateGraph`, input schema is inferred as the state schema.
@@ -453,6 +455,7 @@ class StateGraph(Generic[StateT, ContextT, InputT, OutputT]):
error_handler: StateNode[Any, ContextT] | None = None,
destinations: dict[str, str] | tuple[str, ...] | None = None,
timeout: float | timedelta | TimeoutPolicy | None = None,
trace_policy: TracePolicy | None = None,
**kwargs: Unpack[DeprecatedKwargs],
) -> Self:
"""Add a new node to the `StateGraph` where input schema is specified.
@@ -527,6 +530,7 @@ class StateGraph(Generic[StateT, ContextT, InputT, OutputT]):
error_handler: StateNode[Any, ContextT] | None = None,
destinations: dict[str, str] | tuple[str, ...] | None = None,
timeout: float | timedelta | TimeoutPolicy | None = None,
trace_policy: TracePolicy | None = None,
**kwargs: Unpack[DeprecatedKwargs],
) -> Self:
"""Add a new node to the `StateGraph`, input schema is inferred as the state schema.
@@ -596,6 +600,7 @@ class StateGraph(Generic[StateT, ContextT, InputT, OutputT]):
error_handler: StateNode[Any, ContextT] | None = None,
destinations: dict[str, str] | tuple[str, ...] | None = None,
timeout: float | timedelta | TimeoutPolicy | None = None,
trace_policy: TracePolicy | None = None,
**kwargs: Unpack[DeprecatedKwargs],
) -> Self:
"""Add a new node to the `StateGraph`, input schema is specified.
@@ -672,6 +677,7 @@ class StateGraph(Generic[StateT, ContextT, InputT, OutputT]):
error_handler: StateNode[Any, ContextT] | None = None,
destinations: dict[str, str] | tuple[str, ...] | None = None,
timeout: float | timedelta | TimeoutPolicy | None = None,
trace_policy: TracePolicy | None = None,
**kwargs: Unpack[DeprecatedKwargs],
) -> Self:
"""Add a new node to the `StateGraph`.
@@ -691,6 +697,10 @@ class StateGraph(Generic[StateT, ContextT, InputT, OutputT]):
If a sequence is provided, the first matching policy will be applied.
cache_policy: The cache policy for the node.
error_handler: Optional node-level error handler callable for this node.
trace_policy: Optional policy controlling how this node's run is traced. Its
`process_inputs` callable transforms the node's input before it is
recorded (e.g. to omit or summarize large message history) without
changing the value passed to the node. Does not affect execution.
destinations: Destinations that indicate where a node can route to.
Useful for edgeless graphs with nodes that return `Command` objects.
@@ -880,6 +890,7 @@ class StateGraph(Generic[StateT, ContextT, InputT, OutputT]):
ends=ends,
defer=defer,
timeout=timeout,
trace_policy=trace_policy,
)
elif inferred_input_schema is not None:
self.nodes[node] = StateNodeSpec(
@@ -892,6 +903,7 @@ class StateGraph(Generic[StateT, ContextT, InputT, OutputT]):
ends=ends,
defer=defer,
timeout=timeout,
trace_policy=trace_policy,
)
else:
self.nodes[node] = StateNodeSpec[StateT, ContextT](
@@ -904,6 +916,7 @@ class StateGraph(Generic[StateT, ContextT, InputT, OutputT]):
ends=ends,
defer=defer,
timeout=timeout,
trace_policy=trace_policy,
)
input_schema = input_schema or inferred_input_schema
@@ -1530,6 +1543,7 @@ class CompiledStateGraph(
error_handler_node=node.error_handler_node,
bound=node.runnable, # type: ignore[arg-type]
timeout=node.timeout,
trace_policy=node.trace_policy,
)
else:
raise RuntimeError
+17 -3
View File
@@ -16,7 +16,7 @@ from langgraph._internal._timeout import coerce_timeout_policy
from langgraph.pregel._utils import find_subgraph_pregel
from langgraph.pregel._write import ChannelWrite
from langgraph.pregel.protocol import PregelProtocol
from langgraph.types import CachePolicy, RetryPolicy, TimeoutPolicy
from langgraph.types import CachePolicy, RetryPolicy, TimeoutPolicy, TracePolicy
READ_TYPE = Callable[[str | Sequence[str], bool], Any | dict[str, Any]]
INPUT_CACHE_KEY_TYPE = tuple[Callable[..., Any], tuple[str, ...]]
@@ -138,6 +138,9 @@ class PregelNode:
metadata: Mapping[str, Any] | None
"""Metadata to attach to the node for tracing."""
trace_policy: TracePolicy | None
"""Optional policy controlling what this node records on its trace run."""
is_error_handler: bool
"""Whether this node is registered as an error handler node."""
@@ -156,6 +159,7 @@ class PregelNode:
writers: list[Runnable] | None = None,
tags: list[str] | None = None,
metadata: Mapping[str, Any] | None = None,
trace_policy: TracePolicy | None = None,
bound: Runnable[Any, Any] | None = None,
retry_policy: RetryPolicy | Sequence[RetryPolicy] | None = None,
cache_policy: CachePolicy | None = None,
@@ -177,6 +181,7 @@ class PregelNode:
self.timeout = coerce_timeout_policy(timeout)
self.tags = tags
self.metadata = metadata
self.trace_policy = trace_policy
self.is_error_handler = is_error_handler
self.error_handler_node = error_handler_node
if subgraphs is not None:
@@ -222,14 +227,23 @@ class PregelNode:
def node(self) -> Runnable[Any, Any] | None:
"""Get a runnable that combines `bound` and `writers`."""
writers = self.flat_writers
trace_inputs = self.trace_policy.process_inputs if self.trace_policy else None
trace_outputs = self.trace_policy.process_outputs if self.trace_policy else None
if self.bound is DEFAULT_BOUND and not writers:
return None
elif self.bound is DEFAULT_BOUND and len(writers) == 1:
return writers[0]
elif self.bound is DEFAULT_BOUND:
return RunnableSeq(*writers)
return RunnableSeq(
*writers, trace_inputs=trace_inputs, trace_outputs=trace_outputs
)
elif writers:
return RunnableSeq(self.bound, *writers)
return RunnableSeq(
self.bound,
*writers,
trace_inputs=trace_inputs,
trace_outputs=trace_outputs,
)
else:
return self.bound
+71 -141
View File
@@ -1,11 +1,10 @@
from __future__ import annotations
import ast
import inspect
import dis
import re
import textwrap
from collections.abc import Callable, Sequence
from functools import partial
from types import CodeType, FunctionType
from typing import Any
from langchain_core.runnables import (
@@ -17,7 +16,6 @@ from langchain_core.runnables import (
from langchain_core.runnables.base import RunnableBindingBase
from langchain_core.runnables.config import run_in_executor
from langgraph.checkpoint.base import ChannelVersions
from typing_extensions import override
from langgraph._internal._runnable import RunnableCallable, RunnableSeq
from langgraph._internal._timeout import sync_timeout_unsupported
@@ -137,155 +135,87 @@ def validate_timeout_supported(runnable: Runnable, *, name: str) -> None:
raise sync_timeout_unsupported(name)
# Values treated as dead ends when deciding whether to walk a function's
# bytecode. A container can hold a graph, but `find_subgraph_pregel` does not
# look inside one, so skipping it costs nothing while that holds. Matched by
# exact type, since a subclass of a builtin can carry attributes.
_LEAF_TYPES = frozenset(
{
int,
float,
complex,
bool,
str,
bytes,
bytearray,
list,
tuple,
dict,
set,
frozenset,
type(None),
}
)
def get_function_nonlocals(func: Callable) -> list[Any]:
"""Get the nonlocal variables accessed by a function.
"""Get the values a function reaches from outside its own scope.
Args:
func: The function to check.
Returns:
List[Any]: The nonlocal variables accessed by the function.
Every captured cell value, the globals the function names, and each
value along an attribute path it loads. Over-approximates: a value can
come back without the function reaching it at runtime.
"""
try:
code = inspect.getsource(func)
tree = ast.parse(textwrap.dedent(code))
visitor = FunctionNonLocals()
visitor.visit(tree)
values: list[Any] = []
closure = (
inspect.getclosurevars(func.__wrapped__)
if hasattr(func, "__wrapped__") and callable(func.__wrapped__)
else inspect.getclosurevars(func)
)
candidates = {**closure.globals, **closure.nonlocals}
for k, v in candidates.items():
if k in visitor.nonlocals:
values.append(v)
for kk in visitor.nonlocals:
if "." in kk and kk.startswith(k):
vv = v
for part in kk.split(".")[1:]:
if vv is None:
break
else:
try:
vv = getattr(vv, part)
except AttributeError:
break
else:
values.append(vv)
except (SyntaxError, TypeError, OSError, SystemError):
func = getattr(func, "__func__", func) # bound method -> function
wrapped = getattr(func, "__wrapped__", None)
if callable(wrapped):
func = getattr(wrapped, "__func__", wrapped)
if not isinstance(func, FunctionType):
return []
code = func.__code__
cells: dict[str, Any] = {}
for name, cell in zip(code.co_freevars, func.__closure__ or ()):
try:
cells[name] = cell.cell_contents
except ValueError:
continue # empty cell: a recursive def not yet bound
# Every captured value counts, referenced or not: over-declaring costs an
# introspection entry, under-declaring drops the subgraph's checkpoints and
# stream events. Checking each cell against the bytecode would cost more and
# only trade the cheap error for the expensive one.
values: list[Any] = list(cells.values())
global_ns = func.__globals__
globals_ = {name: global_ns[name] for name in code.co_names if name in global_ns}
if all(type(v) in _LEAF_TYPES for v in (*cells.values(), *globals_.values())):
return values
# Nested code objects hold the references made by inner defs, lambdas and
# comprehensions, which resolve against the namespaces gathered above.
codes = [code]
for c in codes:
codes.extend(k for k in c.co_consts if isinstance(k, CodeType))
value: Any = None
for instruction in dis.get_instructions(c):
opname = instruction.opname
if opname == "LOAD_GLOBAL":
value = globals_.get(instruction.argval)
elif opname == "LOAD_DEREF":
value = cells.get(instruction.argval)
elif opname in ("LOAD_ATTR", "LOAD_METHOD"):
value = getattr(value, instruction.argval, None)
else:
value = None # anything else ends the chain: `a, b.c` is not `a.c`
continue
if value is not None:
values.append(value)
return values
class FunctionNonLocals(ast.NodeVisitor):
"""Get the nonlocal variables accessed of a function."""
def __init__(self) -> None:
self.nonlocals: set[str] = set()
@override
def visit_FunctionDef(self, node: ast.FunctionDef) -> Any:
"""Visit a function definition.
Args:
node: The node to visit.
Returns:
Any: The result of the visit.
"""
visitor = NonLocals()
visitor.visit(node)
self.nonlocals.update(visitor.loads - visitor.stores)
@override
def visit_AsyncFunctionDef(self, node: ast.AsyncFunctionDef) -> Any:
"""Visit an async function definition.
Args:
node: The node to visit.
Returns:
Any: The result of the visit.
"""
visitor = NonLocals()
visitor.visit(node)
self.nonlocals.update(visitor.loads - visitor.stores)
@override
def visit_Lambda(self, node: ast.Lambda) -> Any:
"""Visit a lambda function.
Args:
node: The node to visit.
Returns:
Any: The result of the visit.
"""
visitor = NonLocals()
visitor.visit(node)
self.nonlocals.update(visitor.loads - visitor.stores)
class NonLocals(ast.NodeVisitor):
"""Get nonlocal variables accessed."""
def __init__(self) -> None:
self.loads: set[str] = set()
self.stores: set[str] = set()
@override
def visit_Name(self, node: ast.Name) -> Any:
"""Visit a name node.
Args:
node: The node to visit.
Returns:
Any: The result of the visit.
"""
if isinstance(node.ctx, ast.Load):
self.loads.add(node.id)
elif isinstance(node.ctx, ast.Store):
self.stores.add(node.id)
@override
def visit_Attribute(self, node: ast.Attribute) -> Any:
"""Visit an attribute node.
Args:
node: The node to visit.
Returns:
Any: The result of the visit.
"""
if isinstance(node.ctx, ast.Load):
parent = node.value
attr_expr = node.attr
while isinstance(parent, ast.Attribute):
attr_expr = parent.attr + "." + attr_expr
parent = parent.value
if isinstance(parent, ast.Name):
self.loads.add(parent.id + "." + attr_expr)
self.loads.discard(parent.id)
elif isinstance(parent, ast.Call):
if isinstance(parent.func, ast.Name):
self.loads.add(parent.func.id)
else:
parent = parent.func
attr_expr = ""
while isinstance(parent, ast.Attribute):
if attr_expr:
attr_expr = parent.attr + "." + attr_expr
else:
attr_expr = parent.attr
parent = parent.value
if isinstance(parent, ast.Name):
self.loads.add(parent.id + "." + attr_expr)
def is_xxh3_128_hexdigest(value: str) -> bool:
"""Check if the given string matches the format of xxh3_128_hexdigest."""
return bool(re.fullmatch(r"[0-9a-f]{32}", value))
+3 -3
View File
@@ -2,7 +2,7 @@ from __future__ import annotations
from abc import abstractmethod
from collections.abc import AsyncIterator, Callable, Iterator, Sequence
from typing import Any, Generic, Literal, cast, overload
from typing import Any, Generic, Literal, overload
from langchain_core.runnables import Runnable, RunnableConfig
from langchain_core.runnables.graph import Graph as DrawableGraph
@@ -277,12 +277,12 @@ class StreamProtocol:
modes: set[StreamMode]
__call__: Callable[[Self, StreamChunk], None]
__call__: Callable[[StreamChunk], None]
def __init__(
self,
__call__: Callable[[StreamChunk], None],
modes: set[StreamMode],
) -> None:
self.__call__ = cast(Callable[[Self, StreamChunk], None], __call__)
self.__call__ = __call__
self.modes = modes
+57 -11
View File
@@ -3,7 +3,7 @@ from __future__ import annotations
import asyncio
from collections.abc import AsyncIterator, Awaitable, Callable, Iterator, Mapping
from types import MappingProxyType, TracebackType
from typing import TYPE_CHECKING, Any
from typing import TYPE_CHECKING, Any, NoReturn
from langchain_core._api import beta
@@ -33,6 +33,26 @@ async def _adrive_until_done(pump: Callable[[], Awaitable[bool]]) -> None:
pass
def _raise_missing_projection(run: object, name: str) -> NoReturn:
"""Raise after normal attribute lookup fails for a projection.
Registered native projections are installed directly on the run instance
during `__init__`, so `__getattr__` is never called for them. At this point
the requested name is necessarily missing; the mux is inspected only to
include the valid registered projection names in the error message.
Read `_mux` directly from `__dict__` because it may not exist yet on a
partially initialized instance. Accessing `run._mux` in that case would
invoke `__getattr__` again and recurse indefinitely.
"""
mux = run.__dict__.get("_mux")
registered = sorted(mux.native_keys) if mux is not None else []
raise AttributeError(
f"{type(run).__name__!r} object has no attribute {name!r} "
f"(registered projections: {', '.join(registered) or 'none'})"
)
@beta(message="The v3 streaming protocol on Pregel is experimental.")
class GraphRunStream:
"""Sync run stream with caller-driven pumping.
@@ -54,15 +74,32 @@ class GraphRunStream:
experimental and may change.
"""
# Native projections always registered by `stream_events(version="v3")`.
# Attached dynamically by the `setattr` loop in `__init__`; declared here
# so type checkers see them. Opt-in native projections (`updates`,
# `custom`, `checkpoints`, `debug`, `tasks`) are only present when their
# transformer is registered, so they are reached via `extensions[...]`.
# Native projections, attached dynamically by the `setattr` loop in
# `__init__` and declared here so type checkers see them.
#
# Always registered by `stream_events(version="v3")`:
values: StreamChannel[dict[str, Any]]
messages: StreamChannel[ChatModelStream]
lifecycle: StreamChannel[LifecyclePayload]
subgraphs: StreamChannel[SubgraphRunStream]
# Registered on demand via `compile(transformers=...)` or
# `stream_events(transformers=...)`; reading one whose transformer was not
# registered raises AttributeError. Projections contributed by transformers
# outside this package are covered by `__getattr__` instead.
updates: StreamChannel[dict[str, Any]]
custom: StreamChannel[Any]
checkpoints: StreamChannel[dict[str, Any]]
debug: StreamChannel[dict[str, Any]]
tasks: StreamChannel[dict[str, Any]]
def __getattr__(self, name: str) -> StreamChannel[Any]:
"""Type the projections of transformers declared outside this package.
Projection names come from a registry, so no annotation here can name
them all. The cost is that a misspelling type-checks too, and fails at
runtime instead.
"""
_raise_missing_projection(self, name)
def __init__(
self,
@@ -345,15 +382,24 @@ class AsyncGraphRunStream:
experimental and may change.
"""
# Native projections always registered by `astream_events(version="v3")`.
# Attached dynamically by the `setattr` loop in `__init__`; declared here
# so type checkers see them. Opt-in native projections (`updates`,
# `custom`, `checkpoints`, `debug`, `tasks`) are only present when their
# transformer is registered, so they are reached via `extensions[...]`.
# Native projections, attached dynamically by the `setattr` loop in
# `__init__` and declared here so type checkers see them.
#
# Always registered by `astream_events(version="v3")`:
values: StreamChannel[dict[str, Any]]
messages: StreamChannel[AsyncChatModelStream]
lifecycle: StreamChannel[LifecyclePayload]
subgraphs: StreamChannel[AsyncSubgraphRunStream]
# Registered on demand; see `GraphRunStream`.
updates: StreamChannel[dict[str, Any]]
custom: StreamChannel[Any]
checkpoints: StreamChannel[dict[str, Any]]
debug: StreamChannel[dict[str, Any]]
tasks: StreamChannel[dict[str, Any]]
def __getattr__(self, name: str) -> StreamChannel[Any]:
"""Type projections declared elsewhere. See `GraphRunStream`."""
_raise_missing_projection(self, name)
def __init__(
self,
+40
View File
@@ -70,6 +70,8 @@ __all__ = (
"RetryPolicy",
"TimeoutPolicy",
"CachePolicy",
"TracePolicy",
"omit_payload",
"Interrupt",
"StateUpdate",
"PregelTask",
@@ -527,6 +529,44 @@ class CachePolicy(Generic[KeyFuncT]):
"""Time to live for the cache entry in seconds. If `None`, the entry never expires."""
@dataclass(**_DC_KWARGS)
class TracePolicy:
"""Configuration for how a node's run is traced.
Scope: this only transforms what the node's *own* run records. Child runs created
by a traced `bound` runnable and the root graph run are not affected. Plain
function nodes are traced with `trace=False`, so they have no such child runs.
Not intended to redact secrets. To redact inputs/outputs across all runs
(children included), use the LangSmith client's
`hide_inputs`/`hide_outputs`/`anonymizer` instead.
Each processor receives the node's raw input/output value (not a normalized
kwargs dict) and returns the value to record.
"""
process_inputs: Callable[[Any], Any] | None = None
"""Optional callable to transform the node's input before it is recorded on the
node's trace run. Can be used to omit or summarize large payloads
(e.g. message history). Not intended to affect the value passed to the node; avoid
mutating arguments in place."""
process_outputs: Callable[[Any], Any] | None = None
"""Optional callable to transform the node's output before it is recorded on the
node's trace run. Can be used to omit or summarize large payloads
(e.g. message history). Not intended to affect the value returned by the node; avoid
mutating arguments in place."""
def omit_payload(_value: Any) -> dict[str, Any]:
"""`TracePolicy` helper that records an empty payload, dropping the value entirely.
Use as `process_inputs` and/or `process_outputs` on a `TracePolicy` to keep a node's
span and its timing while omitting its inputs/outputs from the trace.
"""
return {}
_DEFAULT_INTERRUPT_ID = "placeholder-id"
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "langgraph"
version = "1.2.10"
version = "1.2.11"
description = "Building stateful, multi-actor applications with LLMs"
authors = []
requires-python = ">=3.10"
@@ -616,3 +616,117 @@ async def test_add_messages_to_delta_migration_preserves_message_history_async()
assert [m.id for m in snap.values["messages"]] == ["h1", "a1"], (
f"async tip hydration mismatch: got {[m.id for m in snap.values['messages']]}"
)
# ---------------------------------------------------------------------------
# 8. First post-migration write, read back cold (regression for #8384)
#
# The migration boundary produces a checkpoint that carries BOTH a pre-delta
# plain-value blob AND the pending write that produced its (delta-era) child.
# That write is not subsumed by the blob — the blob is the value ENTERING that
# checkpoint. A saver whose ancestor walk skips the seed checkpoint's own
# writes silently drops the first post-migration write.
#
# The failure is invisible to the live `invoke` return value (computed
# in-memory before persistence), so these tests must assert on a COLD read.
# It is also invisible at `snapshot_frequency=1`, where every write is its own
# snapshot boundary and the walk never terminates on a plain value — hence the
# explicit default-frequency coverage.
# ---------------------------------------------------------------------------
def test_first_post_migration_write_survives_cold_read() -> None:
"""One non-snapshotting write after migrating a thread to `DeltaChannel`
must still be present when the state is read back from the checkpointer.
Regression for #8384: `invoke` returned the correct value while
`get_state` dropped the write permanently.
"""
checkpointer = InMemorySaver()
config = {"configurable": {"thread_id": "first-post-migration"}}
binop = _binop_graph(checkpointer)
binop.invoke({"items": ["a"]}, config)
delta = _delta_graph(checkpointer)
live = delta.invoke({"items": ["b"]}, config)
assert list(live["items"]) == ["a", "b"], "live invoke lost the write"
cold = delta.get_state(config)
assert list(cold.values["items"]) == ["a", "b"], (
"first post-migration write dropped on cold read: "
f"got {list(cold.values['items'])}"
)
async def test_first_post_migration_write_survives_cold_read_async() -> None:
"""Async variant of the #8384 regression."""
checkpointer = InMemorySaver()
config = {"configurable": {"thread_id": "first-post-migration-async"}}
binop = _binop_graph(checkpointer)
await binop.ainvoke({"items": ["a"]}, config)
delta = _delta_graph(checkpointer)
live = await delta.ainvoke({"items": ["b"]}, config)
assert list(live["items"]) == ["a", "b"], "live ainvoke lost the write"
cold = await delta.aget_state(config)
assert list(cold.values["items"]) == ["a", "b"], (
"first post-migration write dropped on cold read: "
f"got {list(cold.values['items'])}"
)
def test_post_migration_writes_match_base_saver_fallback() -> None:
"""Parity across the migration boundary WITH post-migration writes.
`test_base_saver_fallback_matches_optimized_override` only reads a
pre-migration chain, so the optimized override and the reference walk
never disagree there. Driving writes after the migration is what
separates them.
"""
def _run(saver: Any, thread: str) -> list[tuple[Any, list]]:
config = {"configurable": {"thread_id": thread}}
_drive(_binop_graph(saver), config, "u", 2)
delta = _delta_graph(saver)
_drive(delta, config, "d", 3)
return [
(s.next, list(s.values.get("items", [])))
for s in delta.get_state_history(config)
]
fast = _run(InMemorySaver(), "fast")
slow = _run(_ThirdPartyStyleSaver(), "slow")
assert fast == slow, (
"optimized override diverges from the base-saver fallback once "
f"post-migration writes exist; fast={fast}, slow={slow}"
)
# Guard the assertion above against both paths being wrong in the same way.
assert fast[0][1] == ["u0", "u1", "d0", "d1", "d2"], (
f"unexpected accumulated state: {fast[0][1]}"
)
def test_add_messages_migration_keeps_first_post_migration_message() -> None:
"""The `add_messages` -> `DeltaChannel` path is the one Deep Agents takes;
dropping the first post-migration write loses a real user message.
"""
checkpointer = InMemorySaver()
config = {"configurable": {"thread_id": "add-messages-first-write"}}
pre_graph = _add_messages_graph(checkpointer)
pre_graph.invoke({"messages": [HumanMessage(content="hello", id="h1")]}, config)
delta_graph = _delta_messages_graph(checkpointer)
delta_graph.invoke({"messages": [HumanMessage(content="second", id="h2")]}, config)
ids = [m.id for m in delta_graph.get_state(config).values["messages"]]
# h1 is the pre-migration seed, h2 the write that was being dropped; both
# have to survive, and in order.
assert ids == ["h1", "h2"], f"expected ['h1', 'h2'], got {ids}"
@@ -6,6 +6,7 @@ Type-narrowing is validated via `assert_type` calls in `_check_type_narrowing`.
from __future__ import annotations
import copy
import operator
import sys
from dataclasses import dataclass
@@ -34,8 +35,10 @@ from langgraph.stream import (
GraphRunStream,
LifecyclePayload,
StreamChannel,
StreamTransformer,
SubgraphRunStream,
)
from langgraph.stream._types import ProtocolEvent
from langgraph.types import (
CheckpointPayload,
CheckpointStreamPart,
@@ -1199,6 +1202,29 @@ def _check_type_narrowing(part: StreamPart[_StateT, _OutputT]) -> None:
# type and the always-registered native projections.
class _MarkerTransformer(StreamTransformer):
"""Native transformer contributing a key this module doesn't declare.
Stands in for any transformer defined outside this package projections
whose names `GraphRunStream` can't enumerate, so they resolve through
`__getattr__` instead of a class annotation.
"""
_native = True
def __init__(self, scope: tuple[str, ...] = ()) -> None:
super().__init__(scope)
self._log: StreamChannel[str] = StreamChannel()
def init(self) -> dict[str, Any]:
return {"marker": self._log}
def process(self, event: ProtocolEvent) -> bool:
if event["method"] == "values":
self._log.push("saw_values")
return True
def _check_stream_events_v3_typing() -> None:
"""Compile-time checks for sync v3 typing — never called at runtime."""
graph = _make_simple_graph().compile()
@@ -1208,6 +1234,16 @@ def _check_stream_events_v3_typing() -> None:
assert_type(run.messages, StreamChannel[ChatModelStream])
assert_type(run.lifecycle, StreamChannel[LifecyclePayload])
assert_type(run.subgraphs, StreamChannel[SubgraphRunStream])
# Opt-in projections from transformers this package ships carry their real
# item type even though they are only present once registered.
assert_type(run.updates, StreamChannel[dict[str, Any]])
assert_type(run.custom, StreamChannel[Any])
assert_type(run.checkpoints, StreamChannel[dict[str, Any]])
assert_type(run.debug, StreamChannel[dict[str, Any]])
assert_type(run.tasks, StreamChannel[dict[str, Any]])
# Projections this module can't enumerate resolve through `__getattr__`
# as `StreamChannel[Any]` rather than failing with attr-defined.
assert_type(run.marker, StreamChannel[Any])
async def _check_astream_events_v3_typing() -> None:
@@ -1219,3 +1255,66 @@ async def _check_astream_events_v3_typing() -> None:
assert_type(run.messages, StreamChannel[AsyncChatModelStream])
assert_type(run.lifecycle, StreamChannel[LifecyclePayload])
assert_type(run.subgraphs, StreamChannel[AsyncSubgraphRunStream])
assert_type(run.updates, StreamChannel[dict[str, Any]])
assert_type(run.custom, StreamChannel[Any])
assert_type(run.checkpoints, StreamChannel[dict[str, Any]])
assert_type(run.debug, StreamChannel[dict[str, Any]])
assert_type(run.tasks, StreamChannel[dict[str, Any]])
assert_type(run.marker, StreamChannel[Any])
def test_undeclared_native_projection_is_attached() -> None:
"""A native projection this module doesn't declare still works at runtime.
`__getattr__` is a type-checker fallback only it must not shadow the
`setattr` loop that attaches registered native projections.
"""
graph = _make_simple_graph().compile()
run = graph.stream_events(
_SIMPLE_INPUT, version="v3", transformers=[_MarkerTransformer]
)
marker_iter = iter(run.marker)
assert run.output is not None
assert run.marker is run.extensions["marker"]
assert "saw_values" in list(marker_iter)
def test_unregistered_projection_raises_attribute_error() -> None:
"""An unregistered projection name still fails at runtime.
The `__getattr__` fallback exists to satisfy type checkers; it must not
make unknown names resolve to anything. The message lists what *is*
registered so a typo is diagnosable from the traceback alone.
"""
graph = _make_simple_graph().compile()
run = graph.stream_events(_SIMPLE_INPUT, version="v3")
# `marker` type-checks via `__getattr__` but was never registered here.
with pytest.raises(AttributeError) as exc_info:
run.marker
message = str(exc_info.value)
assert "marker" in message
# The always-registered natives are listed as the alternatives.
assert "messages" in message
# Registered projections still resolve, and the run is unaffected.
assert isinstance(run.messages, StreamChannel)
assert run.output is not None
def test_getattr_fallback_does_not_recurse_before_init() -> None:
"""`__getattr__` reads the mux from `__dict__`, so it is safe pre-init.
`self._mux` would re-enter `__getattr__` and overflow the stack when the
attribute is missing, which is reachable via `hasattr` / `copy` / pickle
probing on a partially constructed instance.
"""
bare = GraphRunStream.__new__(GraphRunStream)
with pytest.raises(AttributeError, match="anything"):
bare.anything
assert hasattr(bare, "anything") is False
assert copy.copy(bare) is not None
@@ -0,0 +1,286 @@
"""Tests for subgraph auto-detection (`pregel/_utils.py`).
Detection failing is silent the graph still runs, only introspection goes
quiet so every shape a node can hold a graph in is pinned here. The expected
values are what the source-parsing implementation this replaced produced for
the same shapes, except for `sourceless`, whose source it could not read,
`empty_closure_cell`, on which it raised, and `unreachable_attribute_chain`,
where it reported a graph that dropped code could never invoke.
"""
import functools
import operator
from typing import Annotated, Any
import pytest
from typing_extensions import TypedDict
from langgraph.graph import END, START, StateGraph
from langgraph.pregel._utils import get_function_nonlocals
class State(TypedDict):
log: Annotated[list, operator.add]
def _leaf(tag: str) -> Any:
"""Return a compiled graph that reports itself as `tag`."""
builder = StateGraph(State)
builder.add_node(tag, lambda s: {"log": [tag]})
builder.add_edge(START, tag)
builder.add_edge(tag, END)
compiled = builder.compile()
compiled.name = tag
return compiled
def _detect(node: Any) -> str | None:
"""Return the name of the subgraph detected for `node`, or None."""
builder = StateGraph(State)
builder.add_node("n", node)
builder.add_edge(START, "n")
builder.add_edge("n", END)
subgraphs = builder.compile().nodes["n"].subgraphs
return getattr(subgraphs[0], "name", "?") if subgraphs else None
class _Box:
def __init__(self, payload: Any) -> None:
self.payload = payload
class _ListSubclass(list):
pass
class _MethodHolder:
def __init__(self) -> None:
self.graph = _leaf("via_self")
def as_node(self, state: State) -> Any:
return self.graph.invoke(state)
MODULE_GRAPH = _leaf("module_global")
CHAIN = _Box(_Box(_leaf("attr_chain")))
GRAPH_IN_PLAIN_LIST = [_leaf("in_list")]
METHOD_HOLDER = _MethodHolder()
def closure_capture() -> Any:
sub = _leaf("closure")
def node(state: State) -> Any:
return sub.invoke(state)
return node
def module_global() -> Any:
def node(state: State) -> Any:
return MODULE_GRAPH.invoke(state)
return node
def attribute_chain() -> Any:
def node(state: State) -> Any:
return CHAIN.payload.payload.invoke(state)
return node
def nested_def_captured_attribute() -> Any:
"""A chain on a captured holder, named only inside a nested code object.
The captured value is the holder, not the graph, so the chain itself has to
be recovered from the nested scope.
"""
holder = _Box(_leaf("nested_captured"))
def node(state: State) -> Any:
def inner() -> Any:
return holder.payload.invoke(state)
return inner()
return node
def unreachable_branch() -> Any:
"""A captured graph referenced only from code the compiler removes."""
sub = _leaf("unreachable")
def node(state: State) -> Any:
if False:
sub.invoke(state)
return {"log": []}
return node
def unreachable_attribute_chain() -> Any:
"""A graph named only along an attribute path the compiler dropped.
The closure keeps `holder`, but the `.payload` load is gone. The source
parser reported this one; dropped code cannot invoke anything, so that was
a phantom rather than a detection.
"""
holder = _Box(_leaf("unreachable_attr"))
def node(state: State) -> Any:
if False:
holder.payload.invoke(state)
return {"log": []}
return node
def wrapper_referencing_nothing() -> Any:
"""A wrapper whose own scope holds nothing, so only `__wrapped__` leads on.
`functools.wraps` would leave the wrapper closing over the inner function;
setting the attribute by hand does not.
"""
sub = _leaf("via_wrapped")
def inner(state: State) -> Any:
return sub.invoke(state)
def wrapper(state: State) -> Any:
return {"log": []}
wrapper.__wrapped__ = inner
return wrapper
def captured_list_subclass() -> Any:
"""A `list` subclass is not a leaf: it can carry a graph as an attribute."""
holder = _ListSubclass()
holder.payload = _leaf("list_subclass")
def node(state: State) -> Any:
return holder.payload.invoke(state)
return node
def empty_closure_cell() -> Any:
"""An unassigned closure variable leaves a cell that cannot be read."""
sub = _leaf("beside_empty_cell")
def node(state: State) -> Any:
return unassigned, sub.invoke(state)
return node
unassigned = 1 # never runs, so the cell it creates is never filled
def sourceless() -> Any:
"""A node compiled without a source file, which `getsource` could not read."""
namespace: dict[str, Any] = {"SOURCELESS": _leaf("sourceless")}
exec(
compile(
"def node(state):\n return SOURCELESS.invoke(state)", "<test>", "exec"
),
namespace,
)
return namespace["node"]
async def _async_node(state: State) -> Any:
return await MODULE_GRAPH.ainvoke(state)
def async_node() -> Any:
return _async_node
def no_subgraph() -> Any:
"""Nothing but leaf values in reach, so the bytecode walk is skipped."""
def node(state: State) -> Any:
return {"log": [len("abc") + 1]}
return node
def recombined_names() -> Any:
"""Loads `CHAIN.payload` and `local.payload`, never `CHAIN.payload.payload`."""
def node(state: State) -> Any:
local = _Box("not a graph")
return {"log": [CHAIN.payload, local.payload]}
return node
def broken_attribute_chain() -> Any:
holder = _Box("a string, so `.payload.missing` cannot resolve")
def node(state: State) -> Any:
return holder.payload.missing.invoke(state)
return node
def nested_def_global() -> Any:
"""A global named only in a nested code object: out of reach, as before."""
def node(state: State) -> Any:
def inner() -> Any:
return MODULE_GRAPH.invoke(state)
return inner()
return node
def graph_in_plain_list() -> Any:
def node(state: State) -> Any:
return GRAPH_IN_PLAIN_LIST[0].invoke(state)
return node
def bound_method_self() -> Any:
return METHOD_HOLDER.as_node
@pytest.mark.parametrize(
("factory", "expected"),
[
(closure_capture, "closure"),
(module_global, "module_global"),
(attribute_chain, "attr_chain"),
(nested_def_captured_attribute, "nested_captured"),
(unreachable_branch, "unreachable"),
(wrapper_referencing_nothing, "via_wrapped"),
(captured_list_subclass, "list_subclass"),
(empty_closure_cell, "beside_empty_cell"),
(sourceless, "sourceless"),
(async_node, "module_global"),
# Shapes no reference chain reaches: a subscript, an instance attribute
# of `self`, a global named only in a nested scope, and an attribute
# path the compiler dropped.
(no_subgraph, None),
(recombined_names, None),
(broken_attribute_chain, None),
(nested_def_global, None),
(graph_in_plain_list, None),
(bound_method_self, None),
(unreachable_attribute_chain, None),
],
ids=lambda value: value.__name__ if callable(value) else str(value),
)
def test_subgraph_detection(factory: Any, expected: str | None) -> None:
assert _detect(factory()) == expected
@pytest.mark.parametrize(
"candidate",
[functools.partial(lambda state, extra: {"log": [extra]}, extra="x"), len],
ids=["partial", "builtin"],
)
def test_callables_without_a_code_object_are_handled(candidate: Any) -> None:
assert get_function_nonlocals(candidate) == []
+149
View File
@@ -0,0 +1,149 @@
"""End-to-end tests for `TracePolicy` input processing on node trace runs."""
from typing import Any
import pytest
from typing_extensions import TypedDict
from langgraph.graph import END, START, StateGraph
from langgraph.types import TracePolicy
from tests.fake_tracer import FakeTracer, Run
class State(TypedDict):
value: int
def _node_run(tracer: FakeTracer, name: str) -> Run:
return next(r for r in tracer.flattened_runs() if r.name == name)
def _incr(state: State) -> State:
return {"value": state["value"] + 1}
def test_trace_policy_transforms_recorded_inputs() -> None:
seen: dict[str, Any] = {}
def process_inputs(inp: Any) -> Any:
seen["inputs"] = inp
return {"scrubbed_in": True}
graph = (
StateGraph(State)
.add_node("n", _incr, trace_policy=TracePolicy(process_inputs=process_inputs))
.add_edge(START, "n")
.add_edge("n", END)
.compile()
)
tracer = FakeTracer()
# the real graph output is unaffected by the trace policy
assert graph.invoke({"value": 1}, {"callbacks": [tracer]}) == {"value": 2}
run = _node_run(tracer, "n")
# the recorded input is transformed; the output is recorded as-is
assert run.inputs == {"scrubbed_in": True}
assert run.outputs == {"value": 2}
# process_inputs observed the real, untransformed input
assert seen["inputs"] == {"value": 1}
def test_trace_policy_transforms_recorded_outputs() -> None:
seen: dict[str, Any] = {}
def process_outputs(out: Any) -> Any:
seen["outputs"] = out
return {"scrubbed_out": True}
graph = (
StateGraph(State)
.add_node("n", _incr, trace_policy=TracePolicy(process_outputs=process_outputs))
.add_edge(START, "n")
.add_edge("n", END)
.compile()
)
tracer = FakeTracer()
# the real graph output is unaffected by the trace policy
assert graph.invoke({"value": 1}, {"callbacks": [tracer]}) == {"value": 2}
run = _node_run(tracer, "n")
# the recorded output is transformed; the input is recorded as-is
assert run.inputs == {"value": 1}
assert run.outputs == {"scrubbed_out": True}
# process_outputs observed the real, untransformed output
assert seen["outputs"] == {"value": 2}
def test_trace_policy_none_records_real_payloads() -> None:
graph = (
StateGraph(State)
.add_node("n", _incr)
.add_edge(START, "n")
.add_edge("n", END)
.compile()
)
tracer = FakeTracer()
assert graph.invoke({"value": 1}, {"callbacks": [tracer]}) == {"value": 2}
run = _node_run(tracer, "n")
assert run.inputs == {"value": 1}
assert run.outputs == {"value": 2}
def test_trace_policy_processor_error_safe_without_callbacks() -> None:
def boom(_inp: Any) -> Any:
raise RuntimeError("processor failed")
graph = (
StateGraph(State)
.add_node("n", _incr, trace_policy=TracePolicy(process_inputs=boom))
.add_edge(START, "n")
.add_edge("n", END)
.compile()
)
# no callbacks: the processor still runs but is fail-open, so execution is unaffected
assert graph.invoke({"value": 1}) == {"value": 2}
def test_trace_policy_processor_error_does_not_break_execution() -> None:
def boom(_inp: Any) -> Any:
raise RuntimeError("processor failed")
graph = (
StateGraph(State)
.add_node("n", _incr, trace_policy=TracePolicy(process_inputs=boom))
.add_edge(START, "n")
.add_edge("n", END)
.compile()
)
tracer = FakeTracer()
# a raising processor must not abort the node; the untransformed input is recorded
assert graph.invoke({"value": 1}, {"callbacks": [tracer]}) == {"value": 2}
assert _node_run(tracer, "n").inputs == {"value": 1}
@pytest.mark.anyio
async def test_trace_policy_transforms_recorded_inputs_async() -> None:
graph = (
StateGraph(State)
.add_node(
"n",
_incr,
trace_policy=TracePolicy(process_inputs=lambda _: {"scrubbed_in": True}),
)
.add_edge(START, "n")
.add_edge("n", END)
.compile()
)
tracer = FakeTracer()
assert await graph.ainvoke({"value": 5}, {"callbacks": [tracer]}) == {"value": 6}
run = _node_run(tracer, "n")
assert run.inputs == {"scrubbed_in": True}
assert run.outputs == {"value": 6}
+2053 -1526
View File
File diff suppressed because it is too large Load Diff
+17 -4
View File
@@ -37,6 +37,7 @@ uv add langchain-anthropic
from langchain_anthropic import ChatAnthropic
from langgraph.prebuilt import create_react_agent
# Define the tools for the agent to use
def search(query: str):
"""Call to surf the web."""
@@ -45,6 +46,7 @@ def search(query: str):
return "It's 60 degrees and foggy."
return "It's 90 degrees and sunny."
tools = [search]
model = ChatAnthropic(model="claude-3-7-sonnet-latest")
@@ -65,6 +67,7 @@ app.invoke(
from langgraph.prebuilt import ToolNode
from langchain_core.messages import AIMessage
def search(query: str):
"""Call to surf the web."""
# This is a placeholder, but don't tell the LLM that...
@@ -72,8 +75,11 @@ def search(query: str):
return "It's 60 degrees and foggy."
return "It's 90 degrees and sunny."
tool_node = ToolNode([search])
tool_calls = [{"name": "search", "args": {"query": "what is the weather in sf"}, "id": "1"}]
tool_calls = [
{"name": "search", "args": {"query": "what is the weather in sf"}, "id": "1"}
]
ai_message = AIMessage(content="", tool_calls=tool_calls)
# execute tool call
tool_node.invoke({"messages": [ai_message]})
@@ -98,10 +104,17 @@ class SelectNumber(BaseModel):
raise ValueError("Only 37 is allowed")
return v
validation_node = ValidationNode([SelectNumber])
validation_node.invoke({
"messages": [AIMessage("", tool_calls=[{"name": "SelectNumber", "args": {"a": 42}, "id": "1"}])]
})
validation_node.invoke(
{
"messages": [
AIMessage(
"", tool_calls=[{"name": "SelectNumber", "args": {"a": 42}, "id": "1"}]
)
]
}
)
```
## Agent Inbox
+1002 -698
View File
File diff suppressed because it is too large Load Diff
+9
View File
@@ -39,6 +39,15 @@
- `client.threads.stream()` now accepts `transport="sse"` (default) or
`transport="websocket"` in place of the previous transport-agnostic default.
### Fixed
- Resource-scoped auth decorators now honor `actions=` and reject empty or
invalid action lists. Because unmatched custom-auth paths remain allowed,
deployments using action-scoped handlers should configure a global
default-deny handler; `langgraph-api` 0.10+ warns about uncovered paths at
startup. Resource-specific decorators retain matching `resources=` selectors
for backward compatibility; use `@auth.on(resources=...)` for other resources.
### Notes
- The v3 streaming surface (`AsyncThreadStream`, `SyncThreadStream`, and all
+3 -1
View File
@@ -87,7 +87,9 @@ async with client.threads.stream(assistant_id="agent") as thread:
```python
async with client.threads.stream(assistant_id="agent") as thread:
await thread.run.start(input={"messages": [{"role": "user", "content": "book a flight"}]})
await thread.run.start(
input={"messages": [{"role": "user", "content": "book a flight"}]}
)
# Wait for the run to pause at an interrupt node.
# thread.interrupted becomes True when input.requested arrives.
+5 -3
View File
@@ -43,7 +43,9 @@ thread = await client.threads.create()
# Start a streaming run
input = {"messages": [{"role": "human", "content": "what's the weather in la"}]}
async for chunk in client.runs.stream(thread['thread_id'], agent['assistant_id'], input=input):
async for chunk in client.runs.stream(
thread["thread_id"], agent["assistant_id"], input=input
):
print(chunk)
```
@@ -80,9 +82,9 @@ async with client.threads.stream(
messages, tool_calls = await asyncio.gather(get_messages(), get_tool_calls())
for stream in messages:
print(await stream.text) # accumulated text
print(await stream.text) # accumulated text
final = await thread.output # terminal state values
final = await thread.output # terminal state values
```
## 📕 Releases & Versioning
+10 -3
View File
@@ -1,8 +1,15 @@
from langgraph_sdk.auth import Auth
from langgraph_sdk.client import get_client, get_sync_client
from langgraph_sdk.encryption import Encryption
from langgraph_sdk.encryption.types import EncryptionContext
from langgraph_sdk.encryption.types import DecryptResult, EncryptionContext
__version__ = "0.4.2"
__version__ = "0.4.4"
__all__ = ["Auth", "Encryption", "EncryptionContext", "get_client", "get_sync_client"]
__all__ = [
"Auth",
"DecryptResult",
"Encryption",
"EncryptionContext",
"get_client",
"get_sync_client",
]
+4 -1
View File
@@ -24,7 +24,7 @@ from langchain_core.language_models.chat_model_stream import AsyncChatModelStrea
from langchain_protocol import Event, SubscribeParams
from langgraph_sdk._async.http import HttpClient
from langgraph_sdk.schema import QueryParamTypes
from langgraph_sdk.schema import LangSmithTracing, QueryParamTypes
from langgraph_sdk.stream.controller import _SeenEventIds
from langgraph_sdk.stream.decoders import (
DataDecoder,
@@ -172,6 +172,7 @@ class RunModule:
input: Any = None,
config: dict[str, Any] | None = None,
metadata: dict[str, Any] | None = None,
langsmith_tracing: LangSmithTracing | None = None,
) -> dict[str, Any]:
"""Send `run.start` to the server. Returns the result (`{"run_id": ...}`)."""
params: dict[str, Any] = {"assistant_id": self._owner.assistant_id}
@@ -181,6 +182,8 @@ class RunModule:
params["config"] = config
if metadata is not None:
params["metadata"] = metadata
if langsmith_tracing is not None:
params["langsmith_tracer"] = langsmith_tracing
loop = asyncio.get_running_loop()
gate: asyncio.Future[None] = loop.create_future()
self._owner._run_start_ready = gate
+4 -1
View File
@@ -23,7 +23,7 @@ from langchain_core.language_models.chat_model_stream import ChatModelStream
from langchain_protocol import Event, SubscribeParams
from langgraph_sdk._sync.http import SyncHttpClient
from langgraph_sdk.schema import QueryParamTypes
from langgraph_sdk.schema import LangSmithTracing, QueryParamTypes
from langgraph_sdk.stream.decoders import (
DataDecoder,
Decoder,
@@ -215,6 +215,7 @@ class SyncRunModule:
input: Any = None,
config: dict[str, Any] | None = None,
metadata: dict[str, Any] | None = None,
langsmith_tracing: LangSmithTracing | None = None,
) -> dict[str, Any]:
"""Send `run.start` to the server. Returns the result (`{"run_id": ...}`)."""
params: dict[str, Any] = {"assistant_id": self._owner.assistant_id}
@@ -224,6 +225,8 @@ class SyncRunModule:
params["config"] = config
if metadata is not None:
params["metadata"] = metadata
if langsmith_tracing is not None:
params["langsmith_tracer"] = langsmith_tracing
result = self._owner._send_command("run.start", params)
self._owner._run_seen = True
controller = self._owner._controller
+67 -16
View File
@@ -341,9 +341,15 @@ VUpdate = typing.TypeVar("VUpdate", covariant=True)
VRead = typing.TypeVar("VRead", covariant=True)
VDelete = typing.TypeVar("VDelete", covariant=True)
VSearch = typing.TypeVar("VSearch", covariant=True)
ResourceActionT = typing.TypeVar("ResourceActionT", bound=str)
_ResourceAction = typing.Literal["create", "read", "update", "delete", "search"]
_ThreadAction = _ResourceAction | typing.Literal["create_run"]
class _ResourceOn(typing.Generic[VCreate, VRead, VUpdate, VDelete, VSearch]):
class _ResourceOn(
typing.Generic[VCreate, VRead, VUpdate, VDelete, VSearch, ResourceActionT]
):
"""
Generic base class for resource-specific handlers.
"""
@@ -392,8 +398,8 @@ class _ResourceOn(typing.Generic[VCreate, VRead, VUpdate, VDelete, VSearch]):
def __call__(
self,
*,
resources: str | Sequence[str],
actions: str | Sequence[str] | None = None,
resources: str | Sequence[str] | None = None,
actions: ResourceActionT | Sequence[ResourceActionT] | None = None,
) -> Callable[
[_ActionHandler[VCreate | VUpdate | VRead | VDelete | VSearch]],
_ActionHandler[VCreate | VUpdate | VRead | VDelete | VSearch],
@@ -408,7 +414,7 @@ class _ResourceOn(typing.Generic[VCreate, VRead, VUpdate, VDelete, VSearch]):
) = None,
*,
resources: str | Sequence[str] | None = None,
actions: str | Sequence[str] | None = None,
actions: ResourceActionT | Sequence[ResourceActionT] | None = None,
) -> (
_ActionHandler[VCreate | VUpdate | VRead | VDelete | VSearch]
| Callable[
@@ -416,24 +422,66 @@ class _ResourceOn(typing.Generic[VCreate, VRead, VUpdate, VDelete, VSearch]):
_ActionHandler[VCreate | VUpdate | VRead | VDelete | VSearch],
]
):
if fn is not None:
_validate_handler(fn)
return typing.cast(
"_ActionHandler[VCreate | VUpdate | VRead | VDelete | VSearch]",
_register_handler(self.auth, self.resource, "*", fn),
)
def decorator(
handler: _ActionHandler[VCreate | VUpdate | VRead | VDelete | VSearch],
) -> _ActionHandler[VCreate | VUpdate | VRead | VDelete | VSearch]:
_validate_handler(handler)
return typing.cast(
"_ActionHandler[VCreate | VUpdate | VRead | VDelete | VSearch]",
_register_handler(self.auth, self.resource, "*", handler),
if resources is None:
resource_list = [self.resource]
elif isinstance(resources, str):
resource_list = [resources]
elif isinstance(resources, Sequence):
resource_list = list(resources)
else:
raise TypeError("resources must be a string or sequence of strings")
if resource_list != [self.resource]:
raise ValueError(
f"Resource-specific decorator for {self.resource!r} cannot "
f"register handlers for {resource_list!r}. Use @auth.on(...) "
"for other or multiple resources."
)
if actions is None:
action_list = ["*"]
elif isinstance(actions, str):
action_list = [actions]
elif isinstance(actions, Sequence):
action_list = list(actions)
else:
raise TypeError("actions must be a string or sequence of strings")
if not action_list:
raise ValueError("actions must not be empty")
if not all(isinstance(action, str) for action in action_list):
raise TypeError("actions must be a string or sequence of strings")
valid_actions = {
value.action
for value in vars(self).values()
if isinstance(value, _ResourceActionOn)
}
invalid_actions = (
sorted(set(action_list) - valid_actions) if actions is not None else []
)
if invalid_actions:
raise ValueError(
f"Invalid action(s) for {self.resource}: {', '.join(invalid_actions)}"
)
if len(action_list) != len(set(action_list)):
raise ValueError("actions must not contain duplicates")
for action in action_list:
if (self.resource, action) in self.auth._handlers:
raise ValueError(
f"types.Handler already set for {self.resource}, {action}."
)
for action in action_list:
_register_handler(self.auth, self.resource, action, handler)
return handler
# Accept keyword-only parameters for future filtering behavior; referenced to satisfy linters.
_ = resources, actions
if fn is not None:
return decorator(
typing.cast(
"_ActionHandler[VCreate | VUpdate | VRead | VDelete | VSearch]",
fn,
)
)
return decorator
@@ -444,6 +492,7 @@ class _AssistantsOn(
types.AssistantsUpdate,
types.AssistantsDelete,
types.AssistantsSearch,
_ResourceAction,
]
):
value = (
@@ -467,6 +516,7 @@ class _ThreadsOn(
types.ThreadsUpdate,
types.ThreadsDelete,
types.ThreadsSearch,
_ThreadAction,
]
):
value = (
@@ -502,6 +552,7 @@ class _CronsOn(
types.CronsUpdate,
types.CronsDelete,
types.CronsSearch,
_ResourceAction,
]
):
value = type[
@@ -18,6 +18,9 @@ import warnings
from langgraph_sdk.encryption import types
_BlobDecryptorT = typing.TypeVar("_BlobDecryptorT", bound=types.BlobDecryptor)
_JsonDecryptorT = typing.TypeVar("_JsonDecryptorT", bound=types.JsonDecryptor)
class LangGraphBetaWarning(UserWarning):
"""Warning for beta features in LangGraph SDK."""
@@ -141,7 +144,7 @@ class _DecryptDecorators:
def __init__(self, parent: Encryption):
self._parent = parent
def blob(self, fn: types.BlobDecryptor) -> types.BlobDecryptor:
def blob(self, fn: _BlobDecryptorT) -> _BlobDecryptorT:
"""Register a blob decryption handler.
The handler will be called to decrypt opaque data like checkpoint blobs.
@@ -149,7 +152,9 @@ class _DecryptDecorators:
Example:
```python
@encryption.decrypt.blob
async def decrypt_blob(ctx: EncryptionContext, blob: bytes) -> bytes:
async def decrypt_blob(
ctx: EncryptionContext, blob: bytes
) -> bytes | DecryptResult[bytes]:
# Decrypt the blob using your encryption service
return decrypted_blob
```
@@ -170,13 +175,15 @@ class _DecryptDecorators:
self._parent._blob_decryptor = fn
return fn
def json(self, fn: types.JsonDecryptor) -> types.JsonDecryptor:
def json(self, fn: _JsonDecryptorT) -> _JsonDecryptorT:
"""Register the JSON decryption handler.
Example:
```python
@encryption.decrypt.json
async def decrypt_json(ctx: EncryptionContext, data: dict) -> dict:
async def decrypt_json(
ctx: EncryptionContext, data: dict
) -> dict | DecryptResult[dict]:
# Decrypt the data
return decrypt_data(data)
```
@@ -369,7 +376,7 @@ class Encryption:
"""Reference to encryption type definitions.
Provides access to all type definitions used in the encryption system,
including EncryptionContext, BlobEncryptor, BlobDecryptor,
including EncryptionContext, DecryptResult, BlobEncryptor, BlobDecryptor,
JsonEncryptor, and JsonDecryptor.
"""
+30 -4
View File
@@ -9,10 +9,30 @@ from __future__ import annotations
import typing
from collections.abc import Awaitable, Callable
from dataclasses import dataclass
Json = dict[str, typing.Any]
"""JSON-serializable dictionary type for structured data encryption."""
T = typing.TypeVar("T")
@dataclass(frozen=True, slots=True)
class DecryptResult(typing.Generic[T]):
"""Decrypted data and optional replacement ciphertext.
Return this from a decrypt handler when encrypted data should be replaced,
such as after rotating its encryption key. Returning plaintext directly
remains supported when no replacement is needed.
Attributes:
plaintext: Decrypted data returned to the caller
replacement: New encrypted data to persist in place of the input
"""
plaintext: T
replacement: T | None = None
class EncryptionContext:
"""Context passed to encryption/decryption handlers.
@@ -57,7 +77,9 @@ Returns:
Awaitable that resolves to encrypted bytes
"""
BlobDecryptor = Callable[[EncryptionContext, bytes], Awaitable[bytes]]
BlobDecryptor = Callable[
[EncryptionContext, bytes], Awaitable[bytes | DecryptResult[bytes]]
]
"""Handler for decrypting opaque blob data like checkpoints.
Note: Must be an async function. Decryption typically involves I/O operations
@@ -68,7 +90,8 @@ Args:
blob: The encrypted bytes to decrypt
Returns:
Awaitable that resolves to decrypted bytes
Awaitable that resolves to decrypted bytes, or a DecryptResult containing
decrypted bytes and replacement ciphertext
"""
JsonEncryptor = Callable[[EncryptionContext, Json], Awaitable[Json]]
@@ -101,7 +124,9 @@ Returns:
Awaitable that resolves to encrypted JSON dictionary
"""
JsonDecryptor = Callable[[EncryptionContext, Json], Awaitable[Json]]
JsonDecryptor = Callable[
[EncryptionContext, Json], Awaitable[Json | DecryptResult[Json]]
]
"""Handler for decrypting structured JSON data.
Note: Must be an async function. Decryption typically involves I/O operations
@@ -115,7 +140,8 @@ Args:
data: The encrypted JSON dictionary
Returns:
Awaitable that resolves to decrypted JSON dictionary
Awaitable that resolves to a decrypted JSON dictionary, or a DecryptResult
containing decrypted JSON and replacement ciphertext
"""
if typing.TYPE_CHECKING:
+1 -1
View File
@@ -963,7 +963,7 @@ class _BaseModelLike(Protocol):
) -> dict[str, Any]: ...
_JSONLike: TypeAlias = None | str | int | float | bool
_JSONLike: TypeAlias = str | int | float | bool | None
_JSONMap: TypeAlias = Mapping[
str, Union[_JSONLike, list[_JSONLike], "_JSONMap", list["_JSONMap"]]
]
+1 -1
View File
@@ -36,7 +36,7 @@ test = [
"pytest-watch",
]
lint = [
"ruff==0.15.20",
"ruff==0.16.5",
"codespell",
"ty",
"starlette",
@@ -426,11 +426,17 @@ def test_sync_run_start_sends_command():
with httpx.Client(transport=fake.transport, base_url="http://test") as raw:
threads = SyncThreadsClient(SyncHttpClient(raw))
with threads.stream(thread_id="t-1", assistant_id="agent") as thread:
result = thread.run.start(input={"x": 1})
result = thread.run.start(
input={"x": 1},
langsmith_tracing={"project_name": "replica-project"},
)
assert result == {"run_id": "run-1"}
assert fake.received_commands[0]["method"] == "run.start"
assert fake.received_commands[0]["params"]["assistant_id"] == "agent"
assert fake.received_commands[0]["params"]["langsmith_tracer"] == {
"project_name": "replica-project"
}
def test_sync_events_iterates_raw_events():
@@ -584,10 +590,10 @@ def test_v3_streaming_sync_surface_smoke():
assert results["values"] == fake.state["values"]
messages_result = results["messages"]
assert isinstance(messages_result, list)
assert [str(m.text) for m in messages_result] == ["hi"] # ty: ignore[unresolved-attribute]
assert [str(m.text) for m in messages_result] == ["hi"]
tools_result = results["tools"]
assert isinstance(tools_result, list)
assert tools_result[0].name == "search" # ty: ignore[unresolved-attribute]
assert tools_result[0].name == "search"
assert results["progress"] == [{"name": "progress", "step": 1}]
assert final == {"final": True}
@@ -287,7 +287,7 @@ async def test_command_ids_are_monotonic():
assert [c["id"] for c in fake.received_commands] == [1, 2]
async def test_run_start_forwards_config_and_metadata():
async def test_run_start_forwards_config_metadata_and_langsmith_tracing():
fake = FakeServer()
transport = httpx.ASGITransport(app=fake.app)
async with httpx.AsyncClient(transport=transport, base_url="http://test") as raw:
@@ -297,10 +297,18 @@ async def test_run_start_forwards_config_and_metadata():
input={"x": 1},
config={"recursion_limit": 5},
metadata={"trace": "abc"},
langsmith_tracing={
"project_name": "replica-project",
"example_id": "example-1",
},
)
params = fake.received_commands[0]["params"]
assert params["config"] == {"recursion_limit": 5}
assert params["metadata"] == {"trace": "abc"}
assert params["langsmith_tracer"] == {
"project_name": "replica-project",
"example_id": "example-1",
}
async def test_run_start_raises_outside_context_manager():
+132
View File
@@ -0,0 +1,132 @@
import pytest
from langgraph_sdk import Auth
def test_handler_multiple_resources_and_actions() -> None:
auth = Auth()
@auth.on(resources=["threads", "assistants"], actions=["read", "search"])
async def allow_reads(ctx, value):
del value
return {"owner": ctx.user.identity}
assert auth._handlers == {
("threads", "read"): [allow_reads],
("threads", "search"): [allow_reads],
("assistants", "read"): [allow_reads],
("assistants", "search"): [allow_reads],
}
def test_resource_handler_actions_are_scoped() -> None:
auth = Auth()
@auth.on
async def deny_all(ctx, value):
del ctx, value
return False
@auth.on.threads(actions=["create", "search"])
async def handler(ctx, value):
del ctx, value
return None
@auth.on.threads(actions="create_run")
async def run_handler(ctx, value):
del ctx, value
return None
assert auth._handlers == {
("threads", "create"): [handler],
("threads", "search"): [handler],
("threads", "create_run"): [run_handler],
}
assert auth._global_handlers == [deny_all]
def test_resource_handler_preserves_wildcard() -> None:
auth = Auth()
@auth.on.threads
async def handler(ctx, value):
del ctx, value
return None
assert auth._handlers == {("threads", "*"): [handler]}
def test_resource_handler_preserves_wildcard_with_parentheses() -> None:
auth = Auth()
@auth.on.threads()
async def handler(ctx, value):
del ctx, value
return None
assert auth._handlers == {("threads", "*"): [handler]}
def test_resource_handler_accepts_matching_resource() -> None:
auth = Auth()
@auth.on.threads(resources=["threads"], actions="read")
async def handler(ctx, value):
del ctx, value
return None
assert auth._handlers == {("threads", "read"): [handler]}
@pytest.mark.parametrize(
"resources", [["assistants"], ["threads", "assistants"], [], [1]]
)
def test_resource_handler_rejects_nonmatching_resources(resources) -> None:
auth = Auth()
async def handler(ctx, value):
del ctx, value
return None
with pytest.raises(ValueError, match=r"Use @auth\.on"):
auth.on.threads(resources=resources)(handler)
assert auth._handlers == {}
@pytest.mark.parametrize(
("resource", "actions", "error"),
[
("threads", [], ValueError),
("threads", ["reed"], ValueError),
("threads", ["create", "create"], ValueError),
("threads", {"create": True}, TypeError),
("crons", ["create_run"], ValueError),
],
)
def test_resource_handler_rejects_invalid_actions(resource, actions, error) -> None:
auth = Auth()
async def handler(ctx, value):
del ctx, value
return None
with pytest.raises(error):
getattr(auth.on, resource)(actions=actions)(handler)
assert auth._handlers == {}
def test_resource_handler_registration_is_atomic() -> None:
auth = Auth()
@auth.on.threads.read
async def read_handler(ctx, value):
del ctx, value
return None
async def handler(ctx, value):
del ctx, value
return None
with pytest.raises(ValueError, match="already set"):
auth.on.threads(actions=["create", "read"])(handler)
assert auth._handlers == {("threads", "read"): [read_handler]}
+32
View File
@@ -1,8 +1,40 @@
from collections.abc import Awaitable, Callable
import pytest
from langgraph_sdk import DecryptResult, EncryptionContext
from langgraph_sdk.encryption import DuplicateHandlerError, Encryption
def test_decrypt_result():
result = DecryptResult(plaintext=b"plain", replacement=b"rotated")
assert result.plaintext == b"plain"
assert result.replacement == b"rotated"
assert DecryptResult(plaintext={"plain": True}).replacement is None
def test_decrypt_decorators_preserve_return_types():
encryption = Encryption()
@encryption.decrypt.blob
async def blob_dec(_ctx: EncryptionContext, data: bytes) -> bytes:
return data
@encryption.decrypt.json
async def json_dec(
_ctx: EncryptionContext, data: dict[str, object]
) -> dict[str, object]:
return data
blob_handler: Callable[[EncryptionContext, bytes], Awaitable[bytes]] = blob_dec
json_handler: Callable[
[EncryptionContext, dict[str, object]], Awaitable[dict[str, object]]
] = json_dec
assert blob_handler is blob_dec
assert json_handler is json_dec
class TestHandlerValidation:
"""Test duplicate handler and signature validation."""
+940 -661
View File
File diff suppressed because it is too large Load Diff