Bumps the minor-and-patch group with 7 updates in the /libs/model-profiles directory: | Package | From | To | | --- | --- | --- | | [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.3.0` | `1.4.0` | | [pytest-socket](https://github.com/miketheman/pytest-socket) | `0.7.0` | `0.8.0` | | [syrupy](https://github.com/syrupy-project/syrupy) | `5.2.0` | `5.3.4` | | [ruff](https://github.com/astral-sh/ruff) | `0.15.13` | `0.15.20` | | [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.8.18` | `0.9.4` | | [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.15.0` | `0.16.2` | | [langgraph](https://github.com/langchain-ai/langgraph) | `1.2.5` | `1.2.7` | Bumps the minor-and-patch group with 7 updates in the /libs/standard-tests directory: | Package | From | To | | --- | --- | --- | | [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.3.0` | `1.4.0` | | [pytest-socket](https://github.com/miketheman/pytest-socket) | `0.7.0` | `0.8.0` | | [syrupy](https://github.com/syrupy-project/syrupy) | `5.2.0` | `5.3.4` | | [ruff](https://github.com/astral-sh/ruff) | `0.15.13` | `0.15.20` | | [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.8.18` | `0.9.4` | | [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.15.0` | `0.16.2` | | [langchain-protocol](https://github.com/langchain-ai/agent-protocol) | `0.0.17` | `0.0.18` | Bumps the minor-and-patch group with 9 updates in the /libs/text-splitters directory: | Package | From | To | | --- | --- | --- | | [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.3.0` | `1.4.0` | | [pytest-socket](https://github.com/miketheman/pytest-socket) | `0.7.0` | `0.8.0` | | [ruff](https://github.com/astral-sh/ruff) | `0.15.13` | `0.15.20` | | [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.8.18` | `0.9.4` | | [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.15.0` | `0.16.2` | | [langchain-protocol](https://github.com/langchain-ai/agent-protocol) | `0.0.17` | `0.0.18` | | [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.3` | `4.15.0` | | [transformers](https://github.com/huggingface/transformers) | `5.8.1` | `5.12.1` | | [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.5.0` | `5.6.0` | Updates `pytest-asyncio` from 1.3.0 to 1.4.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's releases</a>.</em></p> <blockquote> <h2>pytest-asyncio v1.4.0</h2> <h1><a href="https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0">1.4.0</a> - 2026-05-26</h1> <h2>Deprecated</h2> <ul> <li>Overriding the <em>event_loop_policy</em> fixture is deprecated. Use the <code>pytest_asyncio_loop_factories</code> hook instead. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419">#1419</a>)</li> </ul> <h2>Added</h2> <ul> <li> <p>Added the <code>pytest_asyncio_loop_factories</code> hook to parametrize asyncio tests with custom event loop factories.</p> <p>The hook returns a mapping of factory names to loop factories, and <code>pytest.mark.asyncio(loop_factories=[...])</code> selects a subset of configured factories per test. When a single factory is configured, test names are unchanged.</p> <p>Synchronous <code>@pytest_asyncio.fixture</code> functions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., via <code>asyncio.run()</code> or <code>asyncio.set_event_loop(None)</code>). (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164">#1164</a>)</p> </li> </ul> <h2>Changed</h2> <ul> <li>Improved the readability of the warning message that is displayed when <code>asyncio_default_fixture_loop_scope</code> is unset (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298">#1298</a>)</li> <li>Only import <code>asyncio.AbstractEventLoopPolicy</code> for type checking to avoid raising a DeprecationWarning. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394">#1394</a>)</li> <li>Updated minimum supported pytest version to v8.4.0. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1397">#1397</a>)</li> </ul> <h2>Fixed</h2> <ul> <li>Fixed a <code>ResourceWarning: unclosed event loop</code> warning that could occur when a synchronous test called <code>asyncio.run()</code> or otherwise unset the current event loop after pytest-asyncio had run an async test or fixture. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/724">#724</a>)</li> </ul> <h2>Notes for Downstream Packagers</h2> <ul> <li>Added dependency on <code>sphinx-tabs >= 3.5</code> to organize documentation examples into tabs. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1395">#1395</a>)</li> </ul> <h2>pytest-asyncio v1.4.0a2</h2> <h1><a href="https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0a2">1.4.0a2</a> - 2026-05-02</h1> <h2>Deprecated</h2> <ul> <li>Overriding the <em>event_loop_policy</em> fixture is deprecated. Use the <code>pytest_asyncio_loop_factories</code> hook instead. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419">#1419</a>)</li> </ul> <h2>Added</h2> <ul> <li> <p>Added the <code>pytest_asyncio_loop_factories</code> hook to parametrize asyncio tests with custom event loop factories.</p> <p>The hook returns a mapping of factory names to loop factories, and <code>pytest.mark.asyncio(loop_factories=[...])</code> selects a subset of configured factories per test. When a single factory is configured, test names are unchanged on pytest 8.4+.</p> <p>Synchronous <code>@pytest_asyncio.fixture</code> functions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., via <code>asyncio.run()</code> or <code>asyncio.set_event_loop(None)</code>). (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164">#1164</a>)</p> </li> </ul> <h2>Changed</h2> <ul> <li>Improved the readability of the warning message that is displayed when <code>asyncio_default_fixture_loop_scope</code> is unset (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298">#1298</a>)</li> <li>Only import <code>asyncio.AbstractEventLoopPolicy</code> for type checking to avoid raising a DeprecationWarning. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394">#1394</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="6e14cd2af9"><code>6e14cd2</code></a> chore: Prepare release of v1.4.0.</li> <li><a href="4b900fb5d0"><code>4b900fb</code></a> Build(deps): Bump codecov/codecov-action from 6.0.0 to 6.0.1</li> <li><a href="ab9f632450"><code>ab9f632</code></a> Build(deps): Bump zipp from 3.23.1 to 4.1.0</li> <li><a href="a56fc77ecd"><code>a56fc77</code></a> Build(deps): Bump hypothesis from 6.152.6 to 6.152.8</li> <li><a href="e8bae9bc1f"><code>e8bae9b</code></a> Build(deps): Bump requests from 2.34.0 to 2.34.2</li> <li><a href="fc433402c5"><code>fc43340</code></a> Build(deps): Bump idna from 3.14 to 3.15</li> <li><a href="762eaf5033"><code>762eaf5</code></a> Build(deps): Bump jaraco-functools from 4.4.0 to 4.5.0</li> <li><a href="b62e2228c8"><code>b62e222</code></a> Build(deps): Bump click from 8.3.3 to 8.4.0</li> <li><a href="9190447006"><code>9190447</code></a> Build(deps): Bump pydantic from 2.13.3 to 2.13.4</li> <li><a href="82a393c5e3"><code>82a393c</code></a> ci: Remove unnecessary debug output.</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest-asyncio/compare/v1.3.0...v1.4.0">compare view</a></li> </ul> </details> <br /> Updates `pytest-socket` from 0.7.0 to 0.8.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/miketheman/pytest-socket/releases">pytest-socket's releases</a>.</em></p> <blockquote> <h2>0.8.0</h2> <h2>What's Changed</h2> <h3>Enhancements</h3> <ul> <li>Block DNS resolution (<code>getaddrinfo</code>, <code>gethostbyname</code>) when sockets are disabled <a href="https://redirect.github.com/miketheman/pytest-socket/issues/482">#482</a></li> <li>Support CIDR network ranges in <code>allow_hosts</code> <a href="https://redirect.github.com/miketheman/pytest-socket/issues/479">#479</a></li> <li>Warn before raising on a blocked socket call <a href="https://redirect.github.com/miketheman/pytest-socket/issues/468">#468</a></li> <li>Cache hostname resolutions during a test run <a href="https://redirect.github.com/miketheman/pytest-socket/issues/369">#369</a></li> </ul> <h3>Changes</h3> <ul> <li><strong>Removed support for Python 3.8 and 3.9.</strong> Python 3.10 is now the minimum.</li> <li>Test against Python 3.13, 3.14, and free-threaded 3.13t/3.14t</li> <li>Replaced Poetry with uv <a href="https://redirect.github.com/miketheman/pytest-socket/issues/429">#429</a></li> <li>Added type hints <a href="https://redirect.github.com/miketheman/pytest-socket/issues/465">#465</a></li> <li>Swapped <code>pytest-httpbin</code> for a local test fixture <a href="https://redirect.github.com/miketheman/pytest-socket/issues/467">#467</a></li> <li>Dependency, CI, and development updates</li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/twm"><code>@twm</code></a> made their first contribution in <a href="https://redirect.github.com/miketheman/pytest-socket/pull/369">miketheman/pytest-socket#369</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/miketheman/pytest-socket/compare/0.7.0...0.8.0">https://github.com/miketheman/pytest-socket/compare/0.7.0...0.8.0</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/miketheman/pytest-socket/blob/main/CHANGELOG.md">pytest-socket's changelog</a>.</em></p> <blockquote> <h2>[0.8.0][] (2026-05-21)</h2> <p>Enhancements:</p> <ul> <li>Block DNS resolution (<code>getaddrinfo</code>, <code>gethostbyname</code>) when sockets are disabled <a href="https://redirect.github.com/miketheman/pytest-socket/issues/482">#482</a></li> <li>Support CIDR network ranges in <code>allow_hosts</code> <a href="https://redirect.github.com/miketheman/pytest-socket/issues/479">#479</a></li> <li>Warn before raising on a blocked socket call <a href="https://redirect.github.com/miketheman/pytest-socket/issues/468">#468</a></li> <li>Cache hostname resolutions during a test run <a href="https://redirect.github.com/miketheman/pytest-socket/issues/369">#369</a></li> </ul> <p>Changes:</p> <ul> <li><strong>Removed support for Python 3.8 and 3.9.</strong> Python 3.10 is now the minimum.</li> <li>Test against Python 3.13, 3.14, and free-threaded 3.13t/3.14t</li> <li>Replaced Poetry with uv <a href="https://redirect.github.com/miketheman/pytest-socket/issues/429">#429</a></li> <li>Added type hints <a href="https://redirect.github.com/miketheman/pytest-socket/issues/465">#465</a></li> <li>Swapped <code>pytest-httpbin</code> for a local test fixture <a href="https://redirect.github.com/miketheman/pytest-socket/issues/467">#467</a></li> <li>Dependency, CI, and development updates</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="f9ec1395f4"><code>f9ec139</code></a> pytest-socket, v0.8.0 (<a href="https://redirect.github.com/miketheman/pytest-socket/issues/484">#484</a>)</li> <li><a href="3930df85c1"><code>3930df8</code></a> chore(ci): add publish workflow, update others (<a href="https://redirect.github.com/miketheman/pytest-socket/issues/483">#483</a>)</li> <li><a href="aae7f44b24"><code>aae7f44</code></a> feat: also block DNS resolution (<a href="https://redirect.github.com/miketheman/pytest-socket/issues/482">#482</a>)</li> <li><a href="f0700d2379"><code>f0700d2</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://redirect.github.com/miketheman/pytest-socket/issues/481">#481</a>)</li> <li><a href="09ba021cd3"><code>09ba021</code></a> chore(deps): full sweep of all dependency upgrades (<a href="https://redirect.github.com/miketheman/pytest-socket/issues/480">#480</a>)</li> <li><a href="8dc62860f3"><code>8dc6286</code></a> feat(allow_hosts): support CIDR network entries (<a href="https://redirect.github.com/miketheman/pytest-socket/issues/479">#479</a>)</li> <li><a href="06ed8a1562"><code>06ed8a1</code></a> chore(deps-dev): bump starlette from 0.49.1 to 1.0.0 (<a href="https://redirect.github.com/miketheman/pytest-socket/issues/478">#478</a>)</li> <li><a href="b3132108f9"><code>b313210</code></a> chore(deps-dev): bump mypy from 1.20.0 to 1.20.2 (<a href="https://redirect.github.com/miketheman/pytest-socket/issues/477">#477</a>)</li> <li><a href="f7e85f788b"><code>f7e85f7</code></a> chore(deps-dev): bump pytest-randomly from 3.16.0 to 4.0.1 (<a href="https://redirect.github.com/miketheman/pytest-socket/issues/476">#476</a>)</li> <li><a href="89690a6c31"><code>89690a6</code></a> chore: dependabot config (<a href="https://redirect.github.com/miketheman/pytest-socket/issues/475">#475</a>)</li> <li>Additional commits viewable in <a href="https://github.com/miketheman/pytest-socket/compare/0.7.0...0.8.0">compare view</a></li> </ul> </details> <br /> Updates `syrupy` from 5.2.0 to 5.3.4 <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.3.4</h2> <h2>What's Changed</h2> <ul> <li>perf: drop per-node kwargs dict from the amber serializer by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1122">syrupy-project/syrupy#1122</a></li> <li>perf: give the internal matcher wrapper an explicit signature by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1121">syrupy-project/syrupy#1121</a></li> <li>fix: avoid os.environ mutation for color control by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1125">syrupy-project/syrupy#1125</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.3.3...v5.3.4">https://github.com/syrupy-project/syrupy/compare/v5.3.3...v5.3.4</a></p> <h2>v5.3.3</h2> <h2>What's Changed</h2> <ul> <li>perf: speed up string serialization in amber serializer by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1118">syrupy-project/syrupy#1118</a></li> <li>perf: avoid copying the cycle-detection set on every serialized node by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1119">syrupy-project/syrupy#1119</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/TejasAmle"><code>@TejasAmle</code></a> made their first contribution in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1113">syrupy-project/syrupy#1113</a></li> <li><a href="https://github.com/frenck"><code>@frenck</code></a> made their first contribution in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1118">syrupy-project/syrupy#1118</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.3.2...v5.3.3">https://github.com/syrupy-project/syrupy/compare/v5.3.2...v5.3.3</a></p> <h2>v5.3.2</h2> <h2>What's Changed</h2> <ul> <li>fix: overlapping test filenames across directories by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1104">syrupy-project/syrupy#1104</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.3.1...v5.3.2">https://github.com/syrupy-project/syrupy/compare/v5.3.1...v5.3.2</a></p> <h2>v5.3.1</h2> <h2>What's Changed</h2> <h3>Fixes</h3> <ul> <li>fix(test): mark pydantic and attrs as dependencies for running internal tests by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1108">syrupy-project/syrupy#1108</a> -- <strong>This only affects users trying to run the syrupy tests themselves, not consumers of syrupy.</strong></li> </ul> <h3>Misc</h3> <ul> <li>chore(deps): update astral-sh/setup-uv action to v8.1.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1103">syrupy-project/syrupy#1103</a></li> <li>chore(deps): update python docker tag to v3.14.4 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1102">syrupy-project/syrupy#1102</a></li> <li>chore(deps): update benchmark-action/github-action-benchmark action to v1.22.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1105">syrupy-project/syrupy#1105</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.3.0...v5.3.1">https://github.com/syrupy-project/syrupy/compare/v5.3.0...v5.3.1</a></p> <h2>v5.3.0</h2> <h2>What's Changed</h2> <h3>Features</h3> <!-- 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/v5.3.4">v5.3.4</a> (2026-06-26)</h2> <h2>What's Changed</h2> <ul> <li>perf: drop per-node kwargs dict from the amber serializer by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1122">syrupy-project/syrupy#1122</a></li> <li>perf: give the internal matcher wrapper an explicit signature by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1121">syrupy-project/syrupy#1121</a></li> <li>fix: avoid os.environ mutation for color control by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1125">syrupy-project/syrupy#1125</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.3.3...v5.3.4">https://github.com/syrupy-project/syrupy/compare/v5.3.3...v5.3.4</a></p> <h2><a href="https://github.com/syrupy-project/syrupy/releases/tag/v5.3.3">v5.3.3</a> (2026-06-25)</h2> <h2>What's Changed</h2> <ul> <li>perf: speed up string serialization in amber serializer by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1118">syrupy-project/syrupy#1118</a></li> <li>perf: avoid copying the cycle-detection set on every serialized node by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1119">syrupy-project/syrupy#1119</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/TejasAmle"><code>@TejasAmle</code></a> made their first contribution in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1113">syrupy-project/syrupy#1113</a></li> <li><a href="https://github.com/frenck"><code>@frenck</code></a> made their first contribution in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1118">syrupy-project/syrupy#1118</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.3.2...v5.3.3">https://github.com/syrupy-project/syrupy/compare/v5.3.2...v5.3.3</a></p> <h2><a href="https://github.com/syrupy-project/syrupy/releases/tag/v5.3.2">v5.3.2</a> (2026-06-09)</h2> <h2>What's Changed</h2> <ul> <li>fix: overlapping test filenames across directories by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1104">syrupy-project/syrupy#1104</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.3.1...v5.3.2">https://github.com/syrupy-project/syrupy/compare/v5.3.1...v5.3.2</a></p> <h2><a href="https://github.com/syrupy-project/syrupy/releases/tag/v5.3.1">v5.3.1</a> (2026-05-31)</h2> <h2>What's Changed</h2> <h3>Fixes</h3> <ul> <li>fix(test): mark pydantic and attrs as dependencies for running internal tests by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1108">syrupy-project/syrupy#1108</a> -- <strong>This only affects users trying to run the syrupy tests themselves, not consumers of syrupy.</strong></li> </ul> <h3>Misc</h3> <ul> <li>chore(deps): update astral-sh/setup-uv action to v8.1.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1103">syrupy-project/syrupy#1103</a></li> <li>chore(deps): update python docker tag to v3.14.4 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1102">syrupy-project/syrupy#1102</a></li> <li>chore(deps): update benchmark-action/github-action-benchmark action to v1.22.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1105">syrupy-project/syrupy#1105</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.3.0...v5.3.1">https://github.com/syrupy-project/syrupy/compare/v5.3.0...v5.3.1</a></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="7db49e98f7"><code>7db49e9</code></a> fix: avoid os.environ mutation for color control (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1125">#1125</a>)</li> <li><a href="52da1c4ba9"><code>52da1c4</code></a> chore: add benchmarks to README (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1124">#1124</a>)</li> <li><a href="a0d46f36fc"><code>a0d46f3</code></a> perf: give the internal matcher wrapper an explicit signature (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1121">#1121</a>)</li> <li><a href="54771a4849"><code>54771a4</code></a> perf: drop per-node kwargs dict from the amber serializer (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1122">#1122</a>)</li> <li><a href="8a10e700ad"><code>8a10e70</code></a> docs: add frenck as a contributor for bug (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1120">#1120</a>)</li> <li><a href="5760c88d37"><code>5760c88</code></a> chore(release): 5.3.3 [skip ci]</li> <li><a href="0840c9dcd1"><code>0840c9d</code></a> perf: avoid copying the cycle-detection set on every serialized node (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1119">#1119</a>)</li> <li><a href="1940faa06c"><code>1940faa</code></a> perf: speed up string serialization in amber serializer (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1118">#1118</a>)</li> <li><a href="46d661cdbd"><code>46d661c</code></a> chore(deps): update dependency debugpy to v1.8.21 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1117">#1117</a>)</li> <li><a href="8c23052690"><code>8c23052</code></a> chore(deps): update astral-sh/setup-uv action to v8.2.0 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1114">#1114</a>)</li> <li>Additional commits viewable in <a href="https://github.com/syrupy-project/syrupy/compare/v5.2.0...v5.3.4">compare view</a></li> </ul> </details> <br /> Updates `ruff` from 0.15.13 to 0.15.20 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.15.20</h2> <h2>Release Notes</h2> <p>Released on 2026-06-25.</p> <h3>Preview features</h3> <ul> <li>Allow human-readable names in rule selectors (<a href="https://redirect.github.com/astral-sh/ruff/pull/25887">#25887</a>)</li> <li>Emit a warning instead of an error for unknown rule selectors (<a href="https://redirect.github.com/astral-sh/ruff/pull/26113">#26113</a>)</li> <li>Match <code>noqa</code> shebang handling in <code>ruff:ignore</code> comments (<a href="https://redirect.github.com/astral-sh/ruff/pull/26286">#26286</a>)</li> <li>[<code>ruff</code>] Remove <code>pytest-fixture-autouse</code> (<code>RUF076</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/26240">#26240</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/26371">#26371</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Add versioning sections to custom crate READMEs (<a href="https://redirect.github.com/astral-sh/ruff/pull/26317">#26317</a>)</li> <li>Update <code>ruff_python_parser</code> README for crates.io (<a href="https://redirect.github.com/astral-sh/ruff/pull/26315">#26315</a>)</li> <li>[<code>perflint</code>] Clarify that <code>PERF402</code> applies to any iterable (<a href="https://redirect.github.com/astral-sh/ruff/pull/26242">#26242</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/MichaReiser"><code>@MichaReiser</code></a></li> <li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li> <li><a href="https://github.com/trilamsr"><code>@trilamsr</code></a></li> </ul> <h2>Install ruff 0.15.20</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.15.20/ruff-installer.sh | sh </code></pre> <h3>Install prebuilt binaries via powershell script</h3> <pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-installer.ps1 | iex" </code></pre> <h2>Download ruff 0.15.20</h2> <table> <thead> <tr> <th>File</th> <th>Platform</th> <th>Checksum</th> </tr> </thead> <tbody> <tr> <td><a href="https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-apple-darwin.tar.gz">ruff-aarch64-apple-darwin.tar.gz</a></td> <td>Apple Silicon macOS</td> <td><a href="https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-apple-darwin.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-x86_64-apple-darwin.tar.gz">ruff-x86_64-apple-darwin.tar.gz</a></td> <td>Intel macOS</td> <td><a href="https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-x86_64-apple-darwin.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-pc-windows-msvc.zip">ruff-aarch64-pc-windows-msvc.zip</a></td> <td>ARM64 Windows</td> <td><a href="https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-pc-windows-msvc.zip.sha256">checksum</a></td> </tr> <tr> <td><a href="https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-i686-pc-windows-msvc.zip">ruff-i686-pc-windows-msvc.zip</a></td> <td>x86 Windows</td> <td><a href="https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-i686-pc-windows-msvc.zip.sha256">checksum</a></td> </tr> <tr> <td><a href="https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-x86_64-pc-windows-msvc.zip">ruff-x86_64-pc-windows-msvc.zip</a></td> <td>x64 Windows</td> <td><a href="https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-x86_64-pc-windows-msvc.zip.sha256">checksum</a></td> </tr> <tr> <td><a href="https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-unknown-linux-gnu.tar.gz">ruff-aarch64-unknown-linux-gnu.tar.gz</a></td> <td>ARM64 Linux</td> <td><a href="https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-aarch64-unknown-linux-gnu.tar.gz.sha256">checksum</a></td> </tr> <tr> <td><a href="https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-i686-unknown-linux-gnu.tar.gz">ruff-i686-unknown-linux-gnu.tar.gz</a></td> <td>x86 Linux</td> <td><a href="https://releases.astral.sh/github/ruff/releases/download/0.15.20/ruff-i686-unknown-linux-gnu.tar.gz.sha256">checksum</a></td> </tr> </tbody> </table> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.15.20</h2> <p>Released on 2026-06-25.</p> <h3>Preview features</h3> <ul> <li>Allow human-readable names in rule selectors (<a href="https://redirect.github.com/astral-sh/ruff/pull/25887">#25887</a>)</li> <li>Emit a warning instead of an error for unknown rule selectors (<a href="https://redirect.github.com/astral-sh/ruff/pull/26113">#26113</a>)</li> <li>Match <code>noqa</code> shebang handling in <code>ruff:ignore</code> comments (<a href="https://redirect.github.com/astral-sh/ruff/pull/26286">#26286</a>)</li> <li>[<code>ruff</code>] Remove <code>pytest-fixture-autouse</code> (<code>RUF076</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/26240">#26240</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/26371">#26371</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Add versioning sections to custom crate READMEs (<a href="https://redirect.github.com/astral-sh/ruff/pull/26317">#26317</a>)</li> <li>Update <code>ruff_python_parser</code> README for crates.io (<a href="https://redirect.github.com/astral-sh/ruff/pull/26315">#26315</a>)</li> <li>[<code>perflint</code>] Clarify that <code>PERF402</code> applies to any iterable (<a href="https://redirect.github.com/astral-sh/ruff/pull/26242">#26242</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/MichaReiser"><code>@MichaReiser</code></a></li> <li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li> <li><a href="https://github.com/trilamsr"><code>@trilamsr</code></a></li> </ul> <h2>0.15.19</h2> <p>Released on 2026-06-23.</p> <h3>Preview features</h3> <ul> <li>Support human-readable names when hovering suppression comments and in code actions (<a href="https://redirect.github.com/astral-sh/ruff/pull/26114">#26114</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>Fall back to default settings when editor-only settings are invalid (<a href="https://redirect.github.com/astral-sh/ruff/pull/26244">#26244</a>)</li> <li>Fix panic when inserting text at a notebook cell boundary (<a href="https://redirect.github.com/astral-sh/ruff/pull/26111">#26111</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>pylint</code>] Update fix suggestions for <code>__floor__</code>, <code>__trunc__</code>, <code>__length_hint__</code>, and <code>__matmul__</code> variants (<code>PLC2801</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/26239">#26239</a>)</li> </ul> <h3>Performance</h3> <ul> <li>Avoid allocating when parsing single string literals (<a href="https://redirect.github.com/astral-sh/ruff/pull/26200">#26200</a>)</li> <li>Avoid reallocating singleton call arguments (<a href="https://redirect.github.com/astral-sh/ruff/pull/26223">#26223</a>)</li> <li>Lazily create source files for lint diagnostics (<a href="https://redirect.github.com/astral-sh/ruff/pull/26226">#26226</a>)</li> <li>Optimize formatter text width and indentation (<a href="https://redirect.github.com/astral-sh/ruff/pull/26236">#26236</a>)</li> <li>Reserve capacity for builtin bindings (<a href="https://redirect.github.com/astral-sh/ruff/pull/26229">#26229</a>)</li> <li>Skip repeated-key checks for singleton dictionaries (<a href="https://redirect.github.com/astral-sh/ruff/pull/26228">#26228</a>)</li> <li>Use ArrayVec for qualified name segments (<a href="https://redirect.github.com/astral-sh/ruff/pull/26224">#26224</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="f82a36b6ba"><code>f82a36b</code></a> Bump 0.15.20 (<a href="https://redirect.github.com/astral-sh/ruff/issues/26376">#26376</a>)</li> <li><a href="af329438b5"><code>af32943</code></a> Improve the summarise-ecosystem-results skill (<a href="https://redirect.github.com/astral-sh/ruff/issues/26378">#26378</a>)</li> <li><a href="485ebab5de"><code>485ebab</code></a> Remove <code>RUF076</code> name from schema (<a href="https://redirect.github.com/astral-sh/ruff/issues/26371">#26371</a>)</li> <li><a href="ef81835ce3"><code>ef81835</code></a> [ty] Implement rust-analyzer's "Click for full compiler diagnostic" feature (...</li> <li><a href="572b31e237"><code>572b31e</code></a> [<code>ruff</code>] Remove <code>pytest-fixture-autouse</code> (<code>RUF076</code>) (<a href="https://redirect.github.com/astral-sh/ruff/issues/26240">#26240</a>)</li> <li><a href="f703f219d7"><code>f703f21</code></a> Allow human-readable names in rule selectors (<a href="https://redirect.github.com/astral-sh/ruff/issues/25887">#25887</a>)</li> <li><a href="0d726b28ee"><code>0d726b2</code></a> [ty] Reuse equality semantics for membership compatibility (<a href="https://redirect.github.com/astral-sh/ruff/issues/25955">#25955</a>)</li> <li><a href="dbe6e9848c"><code>dbe6e98</code></a> [ty] Infer definite equality comparison results (<a href="https://redirect.github.com/astral-sh/ruff/issues/26337">#26337</a>)</li> <li><a href="e700ea357a"><code>e700ea3</code></a> [ty] Prove TypedDict structural patterns exhaustive (<a href="https://redirect.github.com/astral-sh/ruff/issues/26285">#26285</a>)</li> <li><a href="6a0d2ec939"><code>6a0d2ec</code></a> [ty] Widen inferred class-valued instance attributes (<a href="https://redirect.github.com/astral-sh/ruff/issues/26338">#26338</a>)</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.15.13...0.15.20">compare view</a></li> </ul> </details> <br /> Updates `langsmith` from 0.8.18 to 0.9.4 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/langchain-ai/langsmith-sdk/releases">langsmith's releases</a>.</em></p> <blockquote> <h2>v0.9.4</h2> <h2>What's Changed</h2> <ul> <li>fix(google_adk): capture LLM inputs after before_model_callback runs [LSDK-279] by <a href="https://github.com/harisaiharish"><code>@harisaiharish</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3094">langchain-ai/langsmith-sdk#3094</a></li> <li>release(js): bump js sdk version to 0.7.13 by <a href="https://github.com/langchain-infra"><code>@langchain-infra</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3104">langchain-ai/langsmith-sdk#3104</a></li> <li>chore: sync langsmith_api by <a href="https://github.com/langtions-bot"><code>@langtions-bot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3105">langchain-ai/langsmith-sdk#3105</a></li> <li>doc: improve resource comments by <a href="https://github.com/QuentinBrosse"><code>@QuentinBrosse</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3108">langchain-ai/langsmith-sdk#3108</a></li> <li>fix(client): apply anonymizer to run error field by <a href="https://github.com/paarth-a"><code>@paarth-a</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3100">langchain-ai/langsmith-sdk#3100</a></li> <li>feat(client): expose datasets v2 resource + experiment-runs integration tests [langchainplus#28358] by <a href="https://github.com/GowriH-1"><code>@GowriH-1</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3106">langchain-ai/langsmith-sdk#3106</a></li> <li>fix(google-adk): set tool span as active tracing context in wrap_tool_run_async by <a href="https://github.com/navarra-lisandro"><code>@navarra-lisandro</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3111">langchain-ai/langsmith-sdk#3111</a></li> <li>fix(client): apply anonymizer to run error field (JS) by <a href="https://github.com/paarth-a"><code>@paarth-a</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3110">langchain-ai/langsmith-sdk#3110</a></li> <li>fix(python): use current project issues endpoint by <a href="https://github.com/khankaholic"><code>@khankaholic</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3064">langchain-ai/langsmith-sdk#3064</a></li> <li>chore: sync langsmith_api by <a href="https://github.com/langtions-bot"><code>@langtions-bot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3120">langchain-ai/langsmith-sdk#3120</a></li> <li>fix(js): Avoid setting usage_metadata on parent chain runs for Claude Agent SDK runs by <a href="https://github.com/jacoblee93"><code>@jacoblee93</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3119">langchain-ai/langsmith-sdk#3119</a></li> <li>feat(client): expose projects resource accessor on Python and JS clients by <a href="https://github.com/KiewanVillatel"><code>@KiewanVillatel</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3109">langchain-ai/langsmith-sdk#3109</a></li> <li>release(js): bump to 0.7.14 by <a href="https://github.com/dqbd"><code>@dqbd</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3121">langchain-ai/langsmith-sdk#3121</a></li> <li>release(python): bump py version to 0.9.4 by <a href="https://github.com/KiewanVillatel"><code>@KiewanVillatel</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3124">langchain-ai/langsmith-sdk#3124</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/navarra-lisandro"><code>@navarra-lisandro</code></a> made their first contribution in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3111">langchain-ai/langsmith-sdk#3111</a></li> <li><a href="https://github.com/khankaholic"><code>@khankaholic</code></a> made their first contribution in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3064">langchain-ai/langsmith-sdk#3064</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/langchain-ai/langsmith-sdk/compare/v0.9.3...v0.9.4">https://github.com/langchain-ai/langsmith-sdk/compare/v0.9.3...v0.9.4</a></p> <h2>v0.9.3</h2> <h2>What's Changed</h2> <ul> <li>release(js): bump js sdk version to 0.7.12 by <a href="https://github.com/KiewanVillatel"><code>@KiewanVillatel</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3089">langchain-ai/langsmith-sdk#3089</a></li> <li>feat(sandbox): do not gate dataplane ops on sandbox status by <a href="https://github.com/ramon-langchain"><code>@ramon-langchain</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3090">langchain-ai/langsmith-sdk#3090</a></li> <li>chore: sync langsmith_api by <a href="https://github.com/langtions-bot"><code>@langtions-bot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3095">langchain-ai/langsmith-sdk#3095</a></li> <li>ci: pin all GitHub Actions to immutable SHA pins by <a href="https://github.com/jkennedyvz"><code>@jkennedyvz</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3093">langchain-ai/langsmith-sdk#3093</a></li> <li>chore(deps-dev): bump vcrpy from 8.1.1 to 8.2.1 in /python by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3074">langchain-ai/langsmith-sdk#3074</a></li> <li>chore(deps): bump pydantic-settings from 2.13.1 to 2.14.2 in /python by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3075">langchain-ai/langsmith-sdk#3075</a></li> <li>feat(sandbox): expose registries via generated v2 client by <a href="https://github.com/langchain-infra"><code>@langchain-infra</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3087">langchain-ai/langsmith-sdk#3087</a></li> <li>fix(client): lazily initialize sync OpenAPI client by <a href="https://github.com/KiewanVillatel"><code>@KiewanVillatel</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3099">langchain-ai/langsmith-sdk#3099</a></li> <li>release(python): bump py version to 0.9.3 by <a href="https://github.com/KiewanVillatel"><code>@KiewanVillatel</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3101">langchain-ai/langsmith-sdk#3101</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/langchain-ai/langsmith-sdk/compare/v0.9.2...v0.9.3">https://github.com/langchain-ai/langsmith-sdk/compare/v0.9.2...v0.9.3</a></p> <h2>v0.9.2</h2> <h2>What's Changed</h2> <ul> <li>release(js): bump js sdk version to 0.7.11 by <a href="https://github.com/sineha-mani"><code>@sineha-mani</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3079">langchain-ai/langsmith-sdk#3079</a></li> <li>chore: bump _MIN_BACKEND_VERSION to 0.16.6rc1 by <a href="https://github.com/langtions-bot"><code>@langtions-bot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3076">langchain-ai/langsmith-sdk#3076</a></li> <li>chore: sync langsmith_api by <a href="https://github.com/langtions-bot"><code>@langtions-bot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3082">langchain-ai/langsmith-sdk#3082</a></li> <li>chore: sync langsmith_api by <a href="https://github.com/langtions-bot"><code>@langtions-bot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3083">langchain-ai/langsmith-sdk#3083</a></li> <li>chore(js): bump AI SDK 7 to beta by <a href="https://github.com/dqbd"><code>@dqbd</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3085">langchain-ai/langsmith-sdk#3085</a></li> <li>feat(client): expose v2 OpenAPI runs resource on Python and JS clients by <a href="https://github.com/KiewanVillatel"><code>@KiewanVillatel</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3084">langchain-ai/langsmith-sdk#3084</a></li> <li>release(python): bump py version to 0.9.2 by <a href="https://github.com/KiewanVillatel"><code>@KiewanVillatel</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3088">langchain-ai/langsmith-sdk#3088</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/langchain-ai/langsmith-sdk/compare/v0.9.1...v0.9.2">https://github.com/langchain-ai/langsmith-sdk/compare/v0.9.1...v0.9.2</a></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="80d93c48c4"><code>80d93c4</code></a> release(python): bump py version to 0.9.4 (<a href="https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3124">#3124</a>)</li> <li><a href="b453dd58d6"><code>b453dd5</code></a> release(js): bump to 0.7.14 (<a href="https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3121">#3121</a>)</li> <li><a href="76f5c7136c"><code>76f5c71</code></a> feat(client): expose projects resource accessor on Python and JS clients (<a href="https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3109">#3109</a>)</li> <li><a href="5f32426109"><code>5f32426</code></a> fix(js): Avoid setting usage_metadata on parent chain runs for Claude Agent S...</li> <li><a href="03b53410f1"><code>03b5341</code></a> chore: sync langsmith_api (<a href="https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3120">#3120</a>)</li> <li><a href="7595f5c187"><code>7595f5c</code></a> fix(python): use current project issues endpoint (<a href="https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3064">#3064</a>)</li> <li><a href="b5291fac06"><code>b5291fa</code></a> fix(client): apply anonymizer to run error field (JS) (<a href="https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3110">#3110</a>)</li> <li><a href="be3eaa47e9"><code>be3eaa4</code></a> fix(google-adk): set tool span as active tracing context in wrap_tool_run_asy...</li> <li><a href="3dc88b3675"><code>3dc88b3</code></a> feat(client): expose datasets v2 resource + experiment-runs integration tests...</li> <li><a href="14741e0488"><code>14741e0</code></a> fix(client): apply anonymizer to run error field (<a href="https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3100">#3100</a>)</li> <li>Additional commits viewable in <a href="https://github.com/langchain-ai/langsmith-sdk/compare/v0.8.18...v0.9.4">compare view</a></li> </ul> </details> <br /> Updates `uuid-utils` from 0.15.0 to 0.16.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aminalaee/uuid-utils/releases">uuid-utils's releases</a>.</em></p> <blockquote> <h2>0.16.2</h2> <h2>What's Changed</h2> <ul> <li>fix: align <code>__hash__</code> with stdlib hash by <a href="https://github.com/aminalaee"><code>@aminalaee</code></a> in <a href="https://redirect.github.com/aminalaee/uuid-utils/pull/178">aminalaee/uuid-utils#178</a></li> <li>fix: <code>time</code> property for v6 and v7 by <a href="https://github.com/aminalaee"><code>@aminalaee</code></a> in <a href="https://redirect.github.com/aminalaee/uuid-utils/pull/179">aminalaee/uuid-utils#179</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/aminalaee/uuid-utils/compare/0.16.1...0.16.2">https://github.com/aminalaee/uuid-utils/compare/0.16.1...0.16.2</a></p> <h2>0.16.1</h2> <h2>What's Changed</h2> <ul> <li>Add PyPI publish attestations by <a href="https://github.com/shaanmajid"><code>@shaanmajid</code></a> in <a href="https://redirect.github.com/aminalaee/uuid-utils/pull/173">aminalaee/uuid-utils#173</a></li> <li>chore: Add <code>__version__</code> to compat module by <a href="https://github.com/aminalaee"><code>@aminalaee</code></a> in <a href="https://redirect.github.com/aminalaee/uuid-utils/pull/174">aminalaee/uuid-utils#174</a></li> <li>chore: relax <code>getnode</code> test by <a href="https://github.com/aminalaee"><code>@aminalaee</code></a> in <a href="https://redirect.github.com/aminalaee/uuid-utils/pull/176">aminalaee/uuid-utils#176</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/shaanmajid"><code>@shaanmajid</code></a> made their first contribution in <a href="https://redirect.github.com/aminalaee/uuid-utils/pull/173">aminalaee/uuid-utils#173</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/aminalaee/uuid-utils/compare/0.16.0...0.16.1">https://github.com/aminalaee/uuid-utils/compare/0.16.0...0.16.1</a></p> <h2>0.16.0</h2> <h2>What's Changed</h2> <ul> <li>Optimize uuid_utils.compat with <code>from_int</code> by <a href="https://github.com/aminalaee"><code>@aminalaee</code></a> in <a href="https://redirect.github.com/aminalaee/uuid-utils/pull/166">aminalaee/uuid-utils#166</a></li> <li>fix: return version None for non-RFC UUIDs by <a href="https://github.com/aminalaee"><code>@aminalaee</code></a> in <a href="https://redirect.github.com/aminalaee/uuid-utils/pull/163">aminalaee/uuid-utils#163</a></li> <li>Validate <code>node</code> argument out of range in constructor by <a href="https://github.com/aminalaee"><code>@aminalaee</code></a> in <a href="https://redirect.github.com/aminalaee/uuid-utils/pull/164">aminalaee/uuid-utils#164</a></li> <li>Drop Python3.9 by <a href="https://github.com/aminalaee"><code>@aminalaee</code></a> in <a href="https://redirect.github.com/aminalaee/uuid-utils/pull/168">aminalaee/uuid-utils#168</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/aminalaee/uuid-utils/compare/0.15.0...0.16.0">https://github.com/aminalaee/uuid-utils/compare/0.15.0...0.16.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="97c20484ab"><code>97c2048</code></a> Version 0.16.2 (<a href="https://redirect.github.com/aminalaee/uuid-utils/issues/180">#180</a>)</li> <li><a href="75e935b43d"><code>75e935b</code></a> fix: time property for v6 and v7 (<a href="https://redirect.github.com/aminalaee/uuid-utils/issues/179">#179</a>)</li> <li><a href="6222e73aaf"><code>6222e73</code></a> fix: align hash with stdlib hash (<a href="https://redirect.github.com/aminalaee/uuid-utils/issues/178">#178</a>)</li> <li><a href="de57fb647c"><code>de57fb6</code></a> Version 0.16.1 (<a href="https://redirect.github.com/aminalaee/uuid-utils/issues/177">#177</a>)</li> <li><a href="7d65c41ed4"><code>7d65c41</code></a> chore: relax <code>getnode</code> test (<a href="https://redirect.github.com/aminalaee/uuid-utils/issues/176">#176</a>)</li> <li><a href="ef4b519d5f"><code>ef4b519</code></a> Upgrade <code>pyo3</code> and <code>uuid</code> (<a href="https://redirect.github.com/aminalaee/uuid-utils/issues/175">#175</a>)</li> <li><a href="afbe6bf820"><code>afbe6bf</code></a> chore: Add <code>__version__</code> to compat module (<a href="https://redirect.github.com/aminalaee/uuid-utils/issues/174">#174</a>)</li> <li><a href="76d0a73c24"><code>76d0a73</code></a> Add PyPI publish attestations (<a href="https://redirect.github.com/aminalaee/uuid-utils/issues/173">#173</a>)</li> <li><a href="29bc188196"><code>29bc188</code></a> Bump uuid from 1.23.1 to 1.23.2 (<a href="https://redirect.github.com/aminalaee/uuid-utils/issues/170">#170</a>)</li> <li><a href="c6df9b87ea"><code>c6df9b8</code></a> Bump the python-packages group with 4 updates (<a href="https://redirect.github.com/aminalaee/uuid-utils/issues/172">#172</a>)</li> <li>Additional commits viewable in <a href="https://github.com/aminalaee/uuid-utils/compare/0.15.0...0.16.2">compare view</a></li> </ul> </details> <br /> Updates `langgraph` from 1.2.5 to 1.2.7 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/langchain-ai/langgraph/releases">langgraph's releases</a>.</em></p> <blockquote> <h2>langgraph==1.2.7</h2> <p>Changes since 1.2.6</p> <ul> <li>release(langgraph): 1.2.7 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8223">#8223</a>)</li> <li>fix(langgraph): snapshot <code>DeltaChannel</code> overwrite supersteps (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8125">#8125</a>)</li> <li>fix(langgraph): Make <code>Overwrite</code> survive JSON roundtrips (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8127">#8127</a>)</li> <li>chore(deps): bump redis in /libs/langgraph (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7976">#7976</a>)</li> <li>chore(deps): bump langsmith from 0.8.0 to 0.8.18 in /libs/langgraph (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8176">#8176</a>)</li> <li>chore(deps): bump jupyterlab from 4.5.7 to 4.5.9 in /libs/langgraph (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8164">#8164</a>)</li> <li>fix(langgraph): emit valid UUIDs for exit-mode delta task_ids for langgraph-api (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8165">#8165</a>)</li> <li>chore(deps): bump bleach from 6.3.0 to 6.4.0 in /libs/langgraph (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8107">#8107</a>)</li> <li>chore(deps): bump cryptography from 46.0.7 to 48.0.1 in /libs/langgraph (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8106">#8106</a>)</li> <li>chore(deps): bump jupyter-server from 2.18.0 to 2.20.0 in /libs/langgraph (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8134">#8134</a>)</li> <li>chore(deps): bump tornado from 6.5.6 to 6.5.7 in /libs/langgraph (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8108">#8108</a>)</li> <li>chore(deps): bump pyjwt from 2.12.0 to 2.13.0 in /libs/langgraph (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8092">#8092</a>)</li> </ul> <h2>langgraph==1.2.6</h2> <p>Changes since 1.2.5</p> <ul> <li>release(langgraph): 1.2.6 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8139">#8139</a>)</li> <li>fix: nested subgraph inherits parent checkpoint_ns (regression in 1.2.3) (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8053">#8053</a>)</li> <li>fix: cancel running subgraphs on v3 stream abort [closes <a href="https://redirect.github.com/langchain-ai/langgraph/issues/8029">#8029</a>] (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8057">#8057</a>)</li> <li>release(cli): 0.4.30 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8101">#8101</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(deps): bump tornado from 6.5.5 to 6.5.6 in /libs/langgraph (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8063">#8063</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="5931a5f0b3"><code>5931a5f</code></a> release(langgraph): 1.2.7 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8223">#8223</a>)</li> <li><a href="9a27693c64"><code>9a27693</code></a> fix(langgraph): snapshot <code>DeltaChannel</code> overwrite supersteps (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8125">#8125</a>)</li> <li><a href="1b5ca0a1b1"><code>1b5ca0a</code></a> fix(langgraph): Make <code>Overwrite</code> survive JSON roundtrips (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8127">#8127</a>)</li> <li><a href="d2f97191ab"><code>d2f9719</code></a> chore(deps): bump redis in /libs/langgraph (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7976">#7976</a>)</li> <li><a href="c1aad8b460"><code>c1aad8b</code></a> 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><a href="d5dfeaf033"><code>d5dfeaf</code></a> chore(deps): bump starlette from 1.0.1 to 1.3.1 in /libs/cli (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8105">#8105</a>)</li> <li><a href="bdb323efbb"><code>bdb323e</code></a> chore(deps): bump langsmith from 0.8.0 to 0.8.18 in /libs/checkpoint-sqlite (...</li> <li><a href="31f69551b7"><code>31f6955</code></a> chore(deps): bump langsmith from 0.8.0 to 0.8.18 in /libs/checkpoint-postgres...</li> <li><a href="6b767dea5f"><code>6b767de</code></a> chore(deps): bump langsmith from 0.8.2 to 0.8.18 in /libs/checkpoint-conforma...</li> <li><a href="e6574a854f"><code>e6574a8</code></a> chore(deps): bump langsmith from 0.8.0 to 0.8.18 in /libs/cli (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8172">#8172</a>)</li> <li>Additional commits viewable in <a href="https://github.com/langchain-ai/langgraph/compare/1.2.5...1.2.7">compare view</a></li> </ul> </details> <br /> Updates `pytest-asyncio` from 1.3.0 to 1.4.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's releases</a>.</em></p> <blockquote> <h2>pytest-asyncio v1.4.0</h2> <h1><a href="https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0">1.4.0</a> - 2026-05-26</h1> <h2>Deprecated</h2> <ul> <li>Overriding the <em>event_loop_policy</em> fixture is deprecated. Use the <code>pytest_asyncio_loop_factories</code> hook instead. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419">#1419</a>)</li> </ul> <h2>Added</h2> <ul> <li> <p>Added the <code>pytest_asyncio_loop_factories</code> hook to parametrize asyncio tests with custom event loop factories.</p> <p>The hook returns a mapping of factory names to loop factories, and <code>pytest.mark.asyncio(loop_factories=[...])</code> selects a subset of configured factories per test. When a single factory is configured, test names are unchanged.</p> <p>Synchronous <code>@pytest_asyncio.fixture</code> functions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., via <code>asyncio.run()</code> or <code>asyncio.set_event_loop(None)</code>). (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164">#1164</a>)</p> </li> </ul> <h2>Changed</h2> <ul> <li>Improved the readability of the warning message that is displayed when <code>asyncio_default_fixture_loop_scope</code> is unset (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298">#1298</a>)</li> <li>Only import <code>asyncio.AbstractEventLoopPolicy</code> for type checking to avoid raising a DeprecationWarning. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394">#1394</a>)</li> <li>Updated minimum supported pytest version to v8.4.0. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1397">#1397</a>)</li> </ul> <h2>Fixed</h2> <ul> <li>Fixed a <code>ResourceWarning: unclosed event loop</code> warning that could occur when a synchronous test called <code>asyncio.run()</code> or otherwise unset the current event loop after pytest-asyncio had run an async test or fixture. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/724">#724</a>)</li> </ul> <h2>Notes for Downstream Packagers</h2> <ul> <li>Added dependency on <code>sphinx-tabs >= 3.5</code> to organize documentation examples into tabs. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1395">#1395</a>)</li> </ul> <h2>pytest-asyncio v1.4.0a2</h2> <h1><a href="https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0a2">1.4.0a2</a> - 2026-05-02</h1> <h2>Deprecated</h2> <ul> <li>Overriding the <em>event_loop_policy</em> fixture is deprecated. Use the <code>pytest_asyncio_loop_factories</code> hook instead. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419">#1419</a>)</li> </ul> <h2>Added</h2> <ul> <li> <p>Added the <code>pytest_asyncio_loop_factories</code> hook to parametrize asyncio tests with custom event loop factories.</p> <p>The hook returns a mapping of factory names to loop factories, and <code>pytest.mark.asyncio(loop_factories=[...])</code> selects a subset of configured factories per test. When a single factory is configured, test names are unchanged on pytest 8.4+.</p> <p>Synchronous <code>@pytest_asyncio.fixture</code> functions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., via <code>asyncio.run()</code> or <code>asyncio.set_event_loop(None)</code>). (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164">#1164</a>)</p> </li> </ul> <h2>Changed</h2> <ul> <li>Improved the readability of the warning message that is displayed when <code>asyncio_default_fixture_loop_scope</code> is unset (<a href="https://redir... _Description has been truncated_ Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The agent engineering platform.
LangChain is a framework for building agents and LLM-powered applications. It helps you chain together interoperable components and third-party integrations to simplify AI application development — all while future-proofing decisions as the underlying technology evolves.
Tip
Just getting started? Check out Deep Agents — a higher-level package built on LangChain for agents that have built-in capabilites for common usage patterns such as planning, subagents, file system usage, and more.
Quickstart
uv add langchain
from langchain.chat_models import init_chat_model
model = init_chat_model("openai:gpt-5.5")
result = model.invoke("Hello, world!")
If you're looking for more advanced customization or agent orchestration, check out LangGraph, our framework for building controllable agent workflows.
For an equivalent JS/TS library, check out LangChain.js.
Tip
For developing, debugging, and deploying AI agents and LLM applications, see LangSmith.
LangChain ecosystem
While the LangChain framework can be used standalone, it also integrates seamlessly with any LangChain product, giving developers a full suite of tools when building LLM applications.
- Deep Agents — Build agents that can plan, use subagents, and leverage file systems for complex tasks
- LangGraph — Build agents that can reliably handle complex tasks with our low-level agent orchestration framework
- Integrations — Chat & embedding models, tools & toolkits, and more
- LangSmith — Agent evals, observability, and debugging for LLM apps
- LangSmith Deployment — Deploy and scale agents with a purpose-built platform for long-running, stateful workflows
Why use LangChain?
LangChain helps developers build applications powered by LLMs through a standard interface for models, embeddings, vector stores, and more.
- Real-time data augmentation — Easily connect LLMs to diverse data sources and external/internal systems, drawing from LangChain's vast library of integrations with model providers, tools, vector stores, retrievers, and more
- Model interoperability — Swap models in and out as your engineering team experiments to find the best choice for your application's needs. As the industry frontier evolves, adapt quickly — LangChain's abstractions keep you moving without losing momentum
- Rapid prototyping — Quickly build and iterate on LLM applications with LangChain's modular, component-based architecture. Test different approaches and workflows without rebuilding from scratch, accelerating your development cycle
- Production-ready features — Deploy reliable applications with built-in support for monitoring, evaluation, and debugging through integrations like LangSmith. Scale with confidence using battle-tested patterns and best practices
- Vibrant community and ecosystem — Leverage a rich ecosystem of integrations, templates, and community-contributed components. Benefit from continuous improvements and stay up-to-date with the latest AI developments through an active open-source community
- Flexible abstraction layers — Work at the level of abstraction that suits your needs — from high-level chains for quick starts to low-level components for fine-grained control. LangChain grows with your application's complexity
Resources
- Documentation — conceptual overviews and guides
- LangChain ecosystem overview — how LangChain, LangGraph, and Deep Agents fit together
- API reference — complete reference for all public classes, functions, and types
- Discussions — community forum for technical questions, ideas, and feedback
- LangChain Academy — comprehensive, free courses on LangChain libraries and products, made by the LangChain team
- Contributing Guide — how to contribute and find good first issues
- Code of Conduct — community guidelines and standards