mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-08-20 06:35:46 +02:00
f4b0cc6b9d
Bumps the minor-and-patch group in /libs/cli with 2 updates: [ruff](https://github.com/astral-sh/ruff) and [mypy](https://github.com/python/mypy). Updates `ruff` from 0.15.7 to 0.15.8 <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.8</h2> <h2>Release Notes</h2> <p>Released on 2026-03-26.</p> <h3>Preview features</h3> <ul> <li>[<code>ruff</code>] New rule <code>unnecessary-if</code> (<code>RUF050</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24114">#24114</a>)</li> <li>[<code>ruff</code>] New rule <code>useless-finally</code> (<code>RUF072</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24165">#24165</a>)</li> <li>[<code>ruff</code>] New rule <code>f-string-percent-format</code> (<code>RUF073</code>): warn when using <code>%</code> operator on an f-string (<a href="https://redirect.github.com/astral-sh/ruff/pull/24162">#24162</a>)</li> <li>[<code>pyflakes</code>] Recognize <code>frozendict</code> as a builtin for Python 3.15+ (<a href="https://redirect.github.com/astral-sh/ruff/pull/24100">#24100</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-async</code>] Use fully-qualified <code>anyio.lowlevel</code> import in autofix (<code>ASYNC115</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24166">#24166</a>)</li> <li>[<code>flake8-bandit</code>] Check tuple arguments for partial paths in <code>S607</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24080">#24080</a>)</li> <li>[<code>pyflakes</code>] Skip <code>undefined-name</code> (<code>F821</code>) for conditionally deleted variables (<a href="https://redirect.github.com/astral-sh/ruff/pull/24088">#24088</a>)</li> <li><code>E501</code>/<code>W505</code>/formatter: Exclude nested pragma comments from line width calculation (<a href="https://redirect.github.com/astral-sh/ruff/pull/24071">#24071</a>)</li> <li>Fix <code>%foo?</code> parsing in IPython assignment expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/24152">#24152</a>)</li> <li><code>analyze graph</code>: resolve string imports that reference attributes, not just modules (<a href="https://redirect.github.com/astral-sh/ruff/pull/24058">#24058</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>eradicate</code>] ignore <code>ty: ignore</code> comments in <code>ERA001</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24192">#24192</a>)</li> <li>[<code>flake8-bandit</code>] Treat <code>sys.executable</code> as trusted input in <code>S603</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24106">#24106</a>)</li> <li>[<code>flake8-self</code>] Recognize <code>Self</code> annotation and <code>self</code> assignment in <code>SLF001</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24144">#24144</a>)</li> <li>[<code>pyflakes</code>] <code>F507</code>: Fix false negative for non-tuple RHS in <code>%</code>-formatting (<a href="https://redirect.github.com/astral-sh/ruff/pull/24142">#24142</a>)</li> <li>[<code>refurb</code>] Parenthesize generator arguments in <code>FURB142</code> fixer (<a href="https://redirect.github.com/astral-sh/ruff/pull/24200">#24200</a>)</li> </ul> <h3>Performance</h3> <ul> <li>Speed up diagnostic rendering (<a href="https://redirect.github.com/astral-sh/ruff/pull/24146">#24146</a>)</li> </ul> <h3>Server</h3> <ul> <li>Warn when Markdown files are skipped due to preview being disabled (<a href="https://redirect.github.com/astral-sh/ruff/pull/24150">#24150</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Clarify <code>extend-ignore</code> and <code>extend-select</code> settings documentation (<a href="https://redirect.github.com/astral-sh/ruff/pull/24064">#24064</a>)</li> <li>Mention AI policy in PR template (<a href="https://redirect.github.com/astral-sh/ruff/pull/24198">#24198</a>)</li> </ul> <h3>Other changes</h3> <ul> <li>Use trusted publishing for NPM packages (<a href="https://redirect.github.com/astral-sh/ruff/pull/24171">#24171</a>)</li> </ul> <h3>Contributors</h3> <ul> <li><a href="https://github.com/bitloi"><code>@bitloi</code></a></li> <li><a href="https://github.com/Sim-hu"><code>@Sim-hu</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.8</h2> <p>Released on 2026-03-26.</p> <h3>Preview features</h3> <ul> <li>[<code>ruff</code>] New rule <code>unnecessary-if</code> (<code>RUF050</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24114">#24114</a>)</li> <li>[<code>ruff</code>] New rule <code>useless-finally</code> (<code>RUF072</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24165">#24165</a>)</li> <li>[<code>ruff</code>] New rule <code>f-string-percent-format</code> (<code>RUF073</code>): warn when using <code>%</code> operator on an f-string (<a href="https://redirect.github.com/astral-sh/ruff/pull/24162">#24162</a>)</li> <li>[<code>pyflakes</code>] Recognize <code>frozendict</code> as a builtin for Python 3.15+ (<a href="https://redirect.github.com/astral-sh/ruff/pull/24100">#24100</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-async</code>] Use fully-qualified <code>anyio.lowlevel</code> import in autofix (<code>ASYNC115</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24166">#24166</a>)</li> <li>[<code>flake8-bandit</code>] Check tuple arguments for partial paths in <code>S607</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24080">#24080</a>)</li> <li>[<code>pyflakes</code>] Skip <code>undefined-name</code> (<code>F821</code>) for conditionally deleted variables (<a href="https://redirect.github.com/astral-sh/ruff/pull/24088">#24088</a>)</li> <li><code>E501</code>/<code>W505</code>/formatter: Exclude nested pragma comments from line width calculation (<a href="https://redirect.github.com/astral-sh/ruff/pull/24071">#24071</a>)</li> <li>Fix <code>%foo?</code> parsing in IPython assignment expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/24152">#24152</a>)</li> <li><code>analyze graph</code>: resolve string imports that reference attributes, not just modules (<a href="https://redirect.github.com/astral-sh/ruff/pull/24058">#24058</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>eradicate</code>] ignore <code>ty: ignore</code> comments in <code>ERA001</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24192">#24192</a>)</li> <li>[<code>flake8-bandit</code>] Treat <code>sys.executable</code> as trusted input in <code>S603</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24106">#24106</a>)</li> <li>[<code>flake8-self</code>] Recognize <code>Self</code> annotation and <code>self</code> assignment in <code>SLF001</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24144">#24144</a>)</li> <li>[<code>pyflakes</code>] <code>F507</code>: Fix false negative for non-tuple RHS in <code>%</code>-formatting (<a href="https://redirect.github.com/astral-sh/ruff/pull/24142">#24142</a>)</li> <li>[<code>refurb</code>] Parenthesize generator arguments in <code>FURB142</code> fixer (<a href="https://redirect.github.com/astral-sh/ruff/pull/24200">#24200</a>)</li> </ul> <h3>Performance</h3> <ul> <li>Speed up diagnostic rendering (<a href="https://redirect.github.com/astral-sh/ruff/pull/24146">#24146</a>)</li> </ul> <h3>Server</h3> <ul> <li>Warn when Markdown files are skipped due to preview being disabled (<a href="https://redirect.github.com/astral-sh/ruff/pull/24150">#24150</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Clarify <code>extend-ignore</code> and <code>extend-select</code> settings documentation (<a href="https://redirect.github.com/astral-sh/ruff/pull/24064">#24064</a>)</li> <li>Mention AI policy in PR template (<a href="https://redirect.github.com/astral-sh/ruff/pull/24198">#24198</a>)</li> </ul> <h3>Other changes</h3> <ul> <li>Use trusted publishing for NPM packages (<a href="https://redirect.github.com/astral-sh/ruff/pull/24171">#24171</a>)</li> </ul> <h3>Contributors</h3> <ul> <li><a href="https://github.com/bitloi"><code>@bitloi</code></a></li> <li><a href="https://github.com/Sim-hu"><code>@Sim-hu</code></a></li> <li><a href="https://github.com/mvanhorn"><code>@mvanhorn</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/c2a8815842f9dc5d24ec19385eae0f1a7188b0d9"><code>c2a8815</code></a> Release 0.15.8 (<a href="https://redirect.github.com/astral-sh/ruff/issues/24217">#24217</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/d444d52e2b9cc8bc9a078c2bd4ff6ff993290209"><code>d444d52</code></a> [ty] Infer lambda expressions with <code>Callable</code> type context (<a href="https://redirect.github.com/astral-sh/ruff/issues/22633">#22633</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/9622285ed0081fc688149f6efca87f127d9b18dd"><code>9622285</code></a> [ty] Autocomplete arguments if in arguments node (<a href="https://redirect.github.com/astral-sh/ruff/issues/24167">#24167</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/d81266252aaf0820346d55edbed79c4f25ba13d2"><code>d812662</code></a> Use the <code>release</code> environment in <code>publish-docs</code> (<a href="https://redirect.github.com/astral-sh/ruff/issues/24214">#24214</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/eda2355832f7a9c58aef6febd3e061dc9c87509a"><code>eda2355</code></a> [ty] Show <code>Final</code> source in final assignment diagnostic (<a href="https://redirect.github.com/astral-sh/ruff/issues/24194">#24194</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/929eb5238c82bfadad4549ff526f02efc0163dd0"><code>929eb52</code></a> [ty] Enforce Final attribute assignment rules for annotated and augmented wri...</li> <li><a href="https://github.com/astral-sh/ruff/commit/34998be22ec3a77d398bbd55234ef8740f768329"><code>34998be</code></a> [ty] Fix typo in comment (<a href="https://redirect.github.com/astral-sh/ruff/issues/24211">#24211</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/560aca0b2828ee2ff1b4bcc5c5ef1ef4ced229d2"><code>560aca0</code></a> [ty] Minor simplifications to some benchmark code (<a href="https://redirect.github.com/astral-sh/ruff/issues/24209">#24209</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/683bae512d03d3727a7bcdbc5a0170dafa049583"><code>683bae5</code></a> [ty] Track non-terminal-call constraints in global scope (<a href="https://redirect.github.com/astral-sh/ruff/issues/23245">#23245</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/4704c2a4ff3dde2fd29324346720e9516b4fe387"><code>4704c2a</code></a> [ty] Remove unnecessary intermediate collection in `StaticClassLiteral::field...</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.15.7...0.15.8">compare view</a></li> </ul> </details> <br /> Updates `mypy` from 1.19.1 to 1.20.0 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/python/mypy/blob/master/CHANGELOG.md">mypy's changelog</a>.</em></p> <blockquote> <h1>Mypy Release Notes</h1> <h2>Next Release</h2> <h2>Mypy 1.20</h2> <p>We’ve just uploaded mypy 1.20.0 to the Python Package Index (<a href="https://pypi.org/project/mypy/">PyPI</a>). Mypy is a static type checker for Python. This release includes new features, performance improvements and bug fixes. You can install it as follows:</p> <pre><code>python3 -m pip install -U mypy </code></pre> <p>You can read the full documentation for this release on <a href="http://mypy.readthedocs.io">Read the Docs</a>.</p> <h3>Planned Changes to Defaults and Flags in Mypy 2.0</h3> <p>As a reminder, we are planning to enable <code>--local-partial-types</code> by default in mypy 2.0, which will likely be the next feature release. This will often require at least minor code changes. This option is implicitly enabled by mypy daemon, so this makes the behavior of daemon and non-daemon modes consistent.</p> <p>Note that this release improves the compatibility of <code>--local-partial-types</code> significantly to make the switch easier (see below for more).</p> <p>This can also be configured in a mypy configuration file (use <code>False</code> to disable):</p> <pre><code>local_partial_types = True </code></pre> <p>For more information, refer to the <a href="https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-local-partial-types">documentation</a>.</p> <p>We will also enable <code>--strict-bytes</code> by default in mypy 2.0. This usually requires at most minor code changes to adopt. For more information, refer to the <a href="https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-strict-bytes">documentation</a>.</p> <p>Finally, <code>--allow-redefinition-new</code> will be renamed to <code>--allow-redefinition</code>. If you want to continue using the older <code>--allow-redefinition</code> semantics which are less flexible (e.g. limited support for conditional redefinitions), you can switch to <code>--allow-redefinition-old</code>, which is currently supported as an alias to the legacy <code>--allow-redefinition</code> behavior. To use <code>--allow-redefinition</code> in the upcoming mypy 2.0, you can't use <code>--no-local-partial-types</code>. For more information, refer to the <a href="https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-allow-redefinition-new">documentation</a>.</p> <h3>Better Type Narrowing</h3> <p>Mypy's implementation of narrowing has been substantially reworked. Mypy will now narrow more aggressively, more consistently, and more correctly. In particular, you are likely to notice new narrowing behavior in equality expressions (<code>==</code>), containment expressions (<code>in</code>),</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/python/mypy/commit/770d3ca4997032dc3a1c4f0b468e9f58e8f38505"><code>770d3ca</code></a> Remove +dev from version</li> <li><a href="https://github.com/python/mypy/commit/4738ffafc56a0d175cba06e893ffa62e756fc7e0"><code>4738ffa</code></a> Changelog updates for 1.20 (<a href="https://redirect.github.com/python/mypy/issues/21109">#21109</a>)</li> <li><a href="https://github.com/python/mypy/commit/b4f07a717c3a239a9c77808c5550fff5f2638c96"><code>b4f07a7</code></a> Use 'native-parser' instead of 'native-parse' for optional dependency (<a href="https://redirect.github.com/python/mypy/issues/21115">#21115</a>)</li> <li><a href="https://github.com/python/mypy/commit/7bec7b7f791790b1c925cdcc573ced564fbbf065"><code>7bec7b7</code></a> [mypyc] Document librt and librt.base64 (<a href="https://redirect.github.com/python/mypy/issues/21114">#21114</a>)</li> <li><a href="https://github.com/python/mypy/commit/c4825969450385cf3eb91a4fc02f273b369bc301"><code>c482596</code></a> --allow-redefinition-new is no longer experimental (<a href="https://redirect.github.com/python/mypy/issues/21110">#21110</a>)</li> <li><a href="https://github.com/python/mypy/commit/c916ca3fa79d9324dcbe130b18e24e2b5e2d1eb5"><code>c916ca3</code></a> sdist: include <code>misc/{diff-cache,apply-cache-diff}.py</code> for `mypy/test/test_di...</li> <li><a href="https://github.com/python/mypy/commit/b137e4ed41d6178f6dbd0e609db56b8c1ad5384a"><code>b137e4e</code></a> [mypyc] Speed up native-to-native imports within the same group (<a href="https://redirect.github.com/python/mypy/issues/21101">#21101</a>)</li> <li><a href="https://github.com/python/mypy/commit/978b711c21adadf5dae4db80127ddf270d79af5f"><code>978b711</code></a> [mypyc] Fix range loop variable off-by-one after loop exit (<a href="https://redirect.github.com/python/mypy/issues/21098">#21098</a>)</li> <li><a href="https://github.com/python/mypy/commit/67ada30918d1a32e1935e9ac468113e0aa002b79"><code>67ada30</code></a> [stubtest] Check runtime availability of private types not marked `@type_chec...</li> <li><a href="https://github.com/python/mypy/commit/bdef6ef8734af07cab1bf0acadc1d8ab9add93c3"><code>bdef6ef</code></a> librt cache tests: build respecting MYPY_TEST_PREFIX (<a href="https://redirect.github.com/python/mypy/issues/21097">#21097</a>)</li> <li>Additional commits viewable in <a href="https://github.com/python/mypy/compare/v1.19.1...v1.20.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>
LangGraph CLI
The official command-line interface for LangGraph, providing tools to create, develop, and deploy LangGraph applications.
Installation
Install via pip:
pip install langgraph-cli
For development mode with hot reloading:
pip install "langgraph-cli[inmem]"
Commands
langgraph new 🌱
Create a new LangGraph project from a template
langgraph new [PATH] --template TEMPLATE_NAME
langgraph dev 🏃♀️
Run LangGraph API server in development mode with hot reloading
langgraph dev [OPTIONS]
--host TEXT Host to bind to (default: 127.0.0.1)
--port INTEGER Port to bind to (default: 2024)
--no-reload Disable auto-reload
--debug-port INTEGER Enable remote debugging
--no-browser Skip opening browser window
-c, --config FILE Config file path (default: langgraph.json)
langgraph up 🚀
Launch LangGraph API server in Docker
langgraph up [OPTIONS]
-p, --port INTEGER Port to expose (default: 8123)
--wait Wait for services to start
--watch Restart on file changes
--verbose Show detailed logs
-c, --config FILE Config file path
-d, --docker-compose Additional services file
langgraph build
Build a Docker image for your LangGraph application
langgraph build -t IMAGE_TAG [OPTIONS]
--platform TEXT Target platforms (e.g., linux/amd64,linux/arm64)
--pull / --no-pull Use latest/local base image
-c, --config FILE Config file path
langgraph dockerfile
Generate a Dockerfile for custom deployments
langgraph dockerfile SAVE_PATH [OPTIONS]
-c, --config FILE Config file path
Configuration
The CLI uses a langgraph.json configuration file with these key settings:
{
"dependencies": ["langchain_openai", "./your_package"], // Required: Package dependencies
"graphs": {
"my_graph": "./your_package/file.py:graph" // Required: Graph definitions
},
"env": "./.env", // Optional: Environment variables
"python_version": "3.11", // Optional: Python version (3.11/3.12)
"pip_config_file": "./pip.conf", // Optional: pip configuration
"dockerfile_lines": [] // Optional: Additional Dockerfile commands
}
See the full documentation for detailed configuration options.
Development
To develop the CLI itself:
- Clone the repository
- Navigate to the CLI directory:
cd libs/cli - Install development dependencies:
uv pip install - Make your changes to the CLI code
- Test your changes:
# Run CLI commands directly uv run langgraph --help # Or use the examples cd examples uv pip install uv run langgraph dev # or other commands
License
This project is licensed under the terms specified in the repository's LICENSE file.