Bumps the minor-and-patch group in /libs/cli with 6 updates: | Package | From | To | | --- | --- | --- | | [click](https://github.com/pallets/click) | `8.4.2` | `8.5.0` | | [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.4.2` | `0.4.4` | | [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` | | [ruff](https://github.com/astral-sh/ruff) | `0.16.0` | `0.16.5` | | [ty](https://github.com/astral-sh/ty) | `0.0.64` | `0.0.75` | | [hatch](https://github.com/pypa/hatch) | `1.17.1` | `1.18.0` | Updates `click` from 8.4.2 to 8.5.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pallets/click/releases">click's releases</a>.</em></p> <blockquote> <h2>8.5.0</h2> <p>This is the Click 8.5.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.</p> <p>We encourage everyone to upgrade. You can read more about our <a href="https://palletsprojects.com/versions">Version Support Policy</a> on our website.</p> <p>PyPI: <a href="https://pypi.org/project/click/8.5.0/">https://pypi.org/project/click/8.5.0/</a> Changes: <a href="https://click.palletsprojects.com/page/changes/#version-8-5-0">https://click.palletsprojects.com/page/changes/#version-8-5-0</a> Milestone <a href="https://github.com/pallets/click/milestone/33">https://github.com/pallets/click/milestone/33</a></p> <ul> <li>Add built-in shell completion support for PowerShell (Windows PowerShell 5.1+ and pwsh 7+) alongside the existing <code>bash</code>, <code>zsh</code>, and <code>fish</code> completers. Use <code>_FOO_BAR_COMPLETE=powershell_source foo-bar</code> to generate the completion script. <a href="https://redirect.github.com/pallets/click/issues/2672">#2672</a> <a href="https://redirect.github.com/pallets/click/issues/3637">#3637</a></li> <li>Supported versions of Windows enable ANSI terminal styles by default. Colorama is no longer a dependency and is not used. <a href="https://redirect.github.com/pallets/click/issues/2986">#2986</a> <a href="https://redirect.github.com/pallets/click/issues/3505">#3505</a></li> <li>{class}<code>Argument</code> accepts a <code>help</code> parameter, and help output includes a <code>Positional arguments</code> section when argument help is available. <a href="https://redirect.github.com/pallets/click/issues/2983">#2983</a> <a href="https://redirect.github.com/pallets/click/issues/3473">#3473</a></li> <li><code>confirm()</code> and <code>prompt()</code> strip ANSI color and style codes from the prompt when the output stream does not support them, matching <code>echo()</code>. This stripping was lost in <code>8.4.0</code> when <a href="https://redirect.github.com/pallets/click/issues/2969">#2969</a> began writing the prompt with <code>input()</code> directly. <a href="https://redirect.github.com/pallets/click/issues/3572">#3572</a> <a href="https://redirect.github.com/pallets/click/issues/3653">#3653</a></li> <li>{class}<code>Path</code> with <code>allow_dash=True</code> no longer triggers a <code>BytesWarning</code>, an error under <code>python -bb</code>, when checking a value against the <code>-</code> convention. <a href="https://redirect.github.com/pallets/click/issues/2877">#2877</a> <a href="https://redirect.github.com/pallets/click/issues/3642">#3642</a></li> <li>Add {func}<code>custom_version_option</code>, a <code>--version</code> option whose output is produced by a callback, covering cases {func}<code>version_option</code> intentionally does not. The feature set of {func}<code>version_option</code> is now frozen; see [discussion <a href="https://redirect.github.com/pallets/click/issues/3527">#3527</a>](<a href="https://github.com/pallets/click/discussions/3527">https://github.com/pallets/click/discussions/3527</a>). <a href="https://redirect.github.com/pallets/click/issues/3581">#3581</a></li> <li><code>style()</code> and <code>secho()</code> no longer silently drop the 256-color index <code>0</code> (black) passed as <code>fg</code> or <code>bg</code>, and now validate color arguments. Invalid colors raise a <code>ValueError</code> instead of a <code>TypeError</code>. <a href="https://redirect.github.com/pallets/click/issues/3677">#3677</a></li> <li>The automatic help option stores its value under the reserved name <code>_click_default_help</code> instead of <code>help</code>, so a parameter named <code>help</code> no longer breaks parsing. The new name is visible in {meth}<code>Command.to_info_dict</code> output. Parameters that overwrite each other's value trigger a warning: an argument sharing its name with another parameter, or any parameter claiming the reserved name. Options may still share a name to compete for the same value (feature switches). <a href="https://redirect.github.com/pallets/click/issues/2819">#2819</a> <a href="https://redirect.github.com/pallets/click/issues/3678">#3678</a></li> <li><code>unstyle</code> and the ANSI handling behind help-text wrapping now strip the full CSI escape-sequence grammar. <a href="https://redirect.github.com/pallets/click/issues/3681">#3681</a></li> <li>Streamline <code>Option</code> flag handling: the flag-kind, type, lazy-default and validation steps in <code>Option.__init__</code> move into focused helpers, and <code>flag_value</code> and <code>default</code> keep their unset sentinel at construction (resolved lazily on read) so <code>is UNSET</code> reliably tells a user-supplied value from an auto-derived one. Runtime behavior is unchanged, but {meth}<code>Parameter.to_info_dict</code> now resolves <code>default=True</code> on a feature switch to its <code>flag_value</code>, matching what the function receives at call</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pallets/click/blob/main/CHANGES.md">click's changelog</a>.</em></p> <blockquote> <h2>Version 8.5.0</h2> <p>Released 2026-08-24</p> <ul> <li>Add built-in shell completion support for PowerShell (Windows PowerShell 5.1+ and pwsh 7+) alongside the existing <code>bash</code>, <code>zsh</code>, and <code>fish</code> completers. Use <code>_FOO_BAR_COMPLETE=powershell_source foo-bar</code> to generate the completion script. {issue}<code>2672</code> {pr}<code>3637</code></li> <li>Supported versions of Windows enable ANSI terminal styles by default. Colorama is no longer a dependency and is not used. {issue}<code>2986</code> {pr}<code>3505</code></li> <li>{class}<code>Argument</code> accepts a <code>help</code> parameter, and help output includes a <code>Positional arguments</code> section when argument help is available. {issue}<code>2983</code> {pr}<code>3473</code></li> <li><code>confirm()</code> and <code>prompt()</code> strip ANSI color and style codes from the prompt when the output stream does not support them, matching <code>echo()</code>. This stripping was lost in <code>8.4.0</code> when {pr}<code>2969</code> began writing the prompt with <code>input()</code> directly. {issue}<code>3572</code> {pr}<code>3653</code></li> <li>Fix test failures when using pytest >= 9.1. {pr}<code>3656</code></li> <li>{class}<code>Path</code> with <code>allow_dash=True</code> no longer triggers a <code>BytesWarning</code>, an error under <code>python -bb</code>, when checking a value against the <code>-</code> convention. {issue}<code>2877</code> {pr}<code>3642</code></li> <li>Add {func}<code>custom_version_option</code>, a <code>--version</code> option whose output is produced by a callback, covering cases {func}<code>version_option</code> intentionally does not. The feature set of {func}<code>version_option</code> is now frozen; see [discussion <a href="https://redirect.github.com/pallets/click/issues/3527">#3527</a>](<a href="https://github.com/pallets/click/discussions/3527">https://github.com/pallets/click/discussions/3527</a>). {pr}<code>3581</code></li> <li><code>style()</code> and <code>secho()</code> no longer silently drop the 256-color index <code>0</code> (black) passed as <code>fg</code> or <code>bg</code>, and now validate color arguments. Invalid colors raise a <code>ValueError</code> instead of a <code>TypeError</code>. {pr}<code>3677</code></li> <li>The automatic help option stores its value under the reserved name <code>_click_default_help</code> instead of <code>help</code>, so a parameter named <code>help</code> no longer breaks parsing. The new name is visible in {meth}<code>Command.to_info_dict</code> output. Parameters that overwrite each other's value trigger a warning: an argument sharing its name with another parameter, or any parameter claiming the reserved name. Options may still share a name to compete for the same value (feature switches). {issue}<code>2819</code> {pr}<code>3678</code></li> <li><code>unstyle</code> and the ANSI handling behind help-text wrapping now strip the full CSI escape-sequence grammar. {pr}<code>3681</code></li> <li>Streamline <code>Option</code> flag handling: the flag-kind, type, lazy-default and validation steps in <code>Option.__init__</code> move into focused helpers, and <code>flag_value</code> and <code>default</code> keep their unset sentinel at construction (resolved lazily on read) so <code>is UNSET</code> reliably tells a user-supplied value from an auto-derived one. Runtime behavior is unchanged, but {meth}<code>Parameter.to_info_dict</code> now resolves <code>default=True</code> on a feature switch to its <code>flag_value</code>, matching what the function receives at call time. {pr}<code>3641</code></li> <li>{func}<code>get_binary_stream</code> and {func}<code>get_text_stream</code> are deprecated and will be removed in Click 9.0. {issue}<code>3481</code> {pr}<code>3695</code></li> <li>The following <code>click.utils</code> names were never intentionally public and are now private (<code>_</code>-prefixed). The old names remain available with a <code>DeprecationWarning</code> until Click 9.0: <code>LazyFile</code>, <code>KeepOpenFile</code>,</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pallets/click/commit/8b19813f2bfca99f1018a587a8cf54fc959f2e5d"><code>8b19813</code></a> Release version 8.5.0</li> <li><a href="https://github.com/pallets/click/commit/2c8cd3ac958a7eb316d67f2d316c27086c4c0369"><code>2c8cd3a</code></a> Add FAQ entry about <code>UnicodeEncodeError</code> on Windows (<a href="https://redirect.github.com/pallets/click/issues/3778">#3778</a>)</li> <li><a href="https://github.com/pallets/click/commit/131c86aadddfa5cb6dca8339c9d6294c4eacb8ac"><code>131c86a</code></a> Add FAQ entry about <code>UnicodeEncodeError</code> on Windows</li> <li><a href="https://github.com/pallets/click/commit/e1fd5946ab26aaf372009eaff1acf947140b40fb"><code>e1fd594</code></a> Add support of <code>pathlib.Path</code> to <code>edit</code> (<a href="https://redirect.github.com/pallets/click/issues/3781">#3781</a>)</li> <li><a href="https://github.com/pallets/click/commit/a1d87858abd77fa8e3ffc204670ccd75b96c4781"><code>a1d8785</code></a> Add support of <code>pathlib.Path</code> to <code>edit</code></li> <li><a href="https://github.com/pallets/click/commit/2103e157683c5e4cadc8ee1838df526a54bde9a4"><code>2103e15</code></a> Forward all user's parameters set in <code>PAGER</code> and improve flag detection (<a href="https://redirect.github.com/pallets/click/issues/3777">#3777</a>)</li> <li><a href="https://github.com/pallets/click/commit/a6256bfb5971d5e58585fe7b6c656134e1ade5a4"><code>a6256bf</code></a> Forwards all user's parameters set in <code>PAGER</code></li> <li><a href="https://github.com/pallets/click/commit/61b69e967e525bd502f5bf42def4d551e761fe0e"><code>61b69e9</code></a> Resolve the pager command once, in <code>_pager_contextmanager</code> (<a href="https://redirect.github.com/pallets/click/issues/3776">#3776</a>)</li> <li><a href="https://github.com/pallets/click/commit/9835b0f7612d1b1ea180a975fd6d24cf16791ba8"><code>9835b0f</code></a> Resolve the pager command once, in <code>_pager_contextmanager</code></li> <li><a href="https://github.com/pallets/click/commit/f36d58bbd7f188178de2d4fe1d0292c510375ca7"><code>f36d58b</code></a> Refactor pager stream handling (<a href="https://redirect.github.com/pallets/click/issues/3767">#3767</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pallets/click/compare/8.4.2...8.5.0">compare view</a></li> </ul> </details> <br /> Updates `langgraph-sdk` from 0.4.2 to 0.4.4 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/langchain-ai/langgraph/releases">langgraph-sdk's releases</a>.</em></p> <blockquote> <h2>langgraph-sdk==0.4.4</h2> <p>Changes since sdk==0.4.3</p> <ul> <li>release(sdk-py): 0.4.4 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8738">#8738</a>)</li> <li>Merge commit from fork</li> <li>feat: route LangSmith traces from thread streams (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8723">#8723</a>)</li> </ul> <h2>langgraph-sdk==0.4.3</h2> <p>Changes since sdk==0.4.2</p> <ul> <li>release(sdk-py): 0.4.3 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8657">#8657</a>)</li> <li>feat(sdk-py): add decrypt replacement result (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8598">#8598</a>)</li> <li>release(langgraph): 1.2.11 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8595">#8595</a>)</li> <li>chore(deps): bump the minor-and-patch group across 1 directory with 5 updates (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8532">#8532</a>)</li> <li>release(checkpoint): 4.2.0 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8563">#8563</a>)</li> <li>chore: enforce PLC0415 in tests for the remaining packages (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8547">#8547</a>)</li> <li>release(langgraph): 1.2.10 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8462">#8462</a>)</li> <li>chore(deps): bump websockets from 15.0.1 to 16.0 in /libs/sdk-py in the major group (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8253">#8253</a>)</li> <li>fix(sdk-py): support clearing cron end_time via update(end_time=None) (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8334">#8334</a>)</li> <li>release(langgraph): 1.2.9 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8316">#8316</a>)</li> <li>release(langgraph): 1.2.8 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8292">#8292</a>)</li> <li>chore(deps): bump websockets from 15.0.1 to 16.0 in /libs/langgraph in the major group (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8256">#8256</a>)</li> <li>chore(deps): bump the minor-and-patch group in /libs/sdk-py with 9 updates (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8252">#8252</a>)</li> <li>release(langgraph): 1.2.7 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8223">#8223</a>)</li> <li>chore(deps-dev): bump starlette from 1.0.1 to 1.3.1 in /libs/sdk-py (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8104">#8104</a>)</li> <li>chore(deps): bump langsmith from 0.8.0 to 0.8.18 in /libs/sdk-py (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8174">#8174</a>)</li> <li>release(langgraph): 1.2.6 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8139">#8139</a>)</li> <li>docs: standardize package <code>README.md</code> structure (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8064">#8064</a>)</li> <li>release(langgraph): 1.2.5 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8062">#8062</a>)</li> <li>fix(langgraph): merge <code>lc_versions</code> config metadata (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8052">#8052</a>)</li> <li>chore(deps-dev): bump starlette from 1.0.0 to 1.0.1 in /libs/sdk-py (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8006">#8006</a>)</li> <li>chore: migrate Python type checking to ty (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/8002">#8002</a>)</li> <li>release(langgraph): 1.2.4 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7991">#7991</a>)</li> <li>test(sdk-py): add factory-graph integration test exercising the server factory path (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7978">#7978</a>)</li> <li>release(langgraph): 1.2.3 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/7945">#7945</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/langchain-ai/langgraph/commit/a64414c87c8db294fd3b1c5581f39f5b491ef07e"><code>a64414c</code></a> langgraph: release 0.4.4 (<a href="https://redirect.github.com/langchain-ai/langgraph/issues/4704">#4704</a>)</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/3a1c02ff3364fa68d6659282dc994e5c57fd1833"><code>3a1c02f</code></a> update for consistency</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/5ab2aa79bb4949ec96d593ffdd3f7fe6d1c7cc32"><code>5ab2aa7</code></a> lint again</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/c33e64daa6295be3fadd5c8664185fc4268b9f71"><code>c33e64d</code></a> use list</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/4ffae6065f1c7fe4dc00fed21ee9a584cbbb14b3"><code>4ffae60</code></a> lint + update</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/54ddde9d4c73a31cb921420867231542ae7faa72"><code>54ddde9</code></a> update</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/60c41ce69e17fff2367eb816a667dd38cf7bb58e"><code>60c41ce</code></a> update</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/efd33d860fdef71bc37f286aeab71fae30a0e607"><code>efd33d8</code></a> update</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/254a38560e0f036531ac2cde7f55ce93a2cc3ff0"><code>254a385</code></a> langgraph: fix drawing graph with <strong>root</strong> channel</li> <li><a href="https://github.com/langchain-ai/langgraph/commit/b20130d4e4f50b95d3a97e648d461956d4a35445"><code>b20130d</code></a> langgraph: fix graph drawing for self-loops</li> <li>Additional commits viewable in <a href="https://github.com/langchain-ai/langgraph/compare/0.4.2...0.4.4">compare view</a></li> </ul> </details> <br /> Updates `python-dotenv` from 1.2.2 to 1.2.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/theskumar/python-dotenv/releases">python-dotenv's releases</a>.</em></p> <blockquote> <h2>v1.2.3</h2> <h3>Fixed</h3> <ul> <li>Strip a leading UTF-8 BOM from <code>.env</code> file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [<a href="https://github.com/h1whelan"><code>@h1whelan</code></a>] in <a href="https://redirect.github.com/theskumar/python-dotenv/issues/640">#640</a></li> <li><code>set_key</code> now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [<a href="https://github.com/dchaudhari7177"><code>@dchaudhari7177</code></a>] in <a href="https://redirect.github.com/theskumar/python-dotenv/issues/680">#680</a></li> <li><code>dotenv run</code> now prints a friendly error instead of a traceback when no command is given by [<a href="https://github.com/bbc2"><code>@bbc2</code></a>] in <a href="https://redirect.github.com/theskumar/python-dotenv/issues/606">#606</a></li> <li>Cache the parsed result for empty <code>.env</code> files so repeated <code>dotenv_values</code>/<code>load_dotenv</code> calls no longer re-read the file by [<a href="https://github.com/ReinerBRO"><code>@ReinerBRO</code></a>] in <a href="https://redirect.github.com/theskumar/python-dotenv/issues/638">#638</a></li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md">python-dotenv's changelog</a>.</em></p> <blockquote> <h2>[1.2.3] - 2026-08-16</h2> <h3>Fixed</h3> <ul> <li>Strip a leading UTF-8 BOM from <code>.env</code> file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [<a href="https://github.com/h1whelan"><code>@h1whelan</code></a>] in <a href="https://redirect.github.com/theskumar/python-dotenv/issues/640">#640</a></li> <li><code>set_key</code> now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [<a href="https://github.com/dchaudhari7177"><code>@dchaudhari7177</code></a>] in <a href="https://redirect.github.com/theskumar/python-dotenv/issues/680">#680</a></li> <li><code>dotenv run</code> now prints a friendly error instead of a traceback when no command is given by [<a href="https://github.com/bbc2"><code>@bbc2</code></a>] in <a href="https://redirect.github.com/theskumar/python-dotenv/issues/606">#606</a></li> <li>Cache the parsed result for empty <code>.env</code> files so repeated <code>dotenv_values</code>/<code>load_dotenv</code> calls no longer re-read the file by [<a href="https://github.com/ReinerBRO"><code>@ReinerBRO</code></a>] in <a href="https://redirect.github.com/theskumar/python-dotenv/issues/638">#638</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59"><code>49515af</code></a> Bump version: 1.2.2 → 1.2.3</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1"><code>8ac846f</code></a> chore: add release runbook (RELEASING.md) and make release target</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166"><code>bb31c94</code></a> docs: add 1.2.3 release notes (<a href="https://redirect.github.com/theskumar/python-dotenv/issues/606">#606</a>, <a href="https://redirect.github.com/theskumar/python-dotenv/issues/638">#638</a>, <a href="https://redirect.github.com/theskumar/python-dotenv/issues/680">#680</a>)</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266"><code>f7b18d9</code></a> fix: round-trip backslashes through set_key (<a href="https://redirect.github.com/theskumar/python-dotenv/issues/680">#680</a>)</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124"><code>751f8c1</code></a> ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb"><code>f1937b6</code></a> chore(deps): update mkdocs-include-markdown-plugin requirement from >=6.0.0 t...</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8"><code>45b9372</code></a> chore(deps): update pytest requirement from >=3.9 to >=9.0.3 (<a href="https://redirect.github.com/theskumar/python-dotenv/issues/653">#653</a>)</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a"><code>72896e9</code></a> docs: fix broken mkdocs link in CONTRIBUTING.md (<a href="https://redirect.github.com/theskumar/python-dotenv/issues/636">#636</a>)</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d"><code>72754a1</code></a> ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...</li> <li><a href="https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c"><code>078325e</code></a> ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...</li> <li>Additional commits viewable in <a href="https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3">compare view</a></li> </ul> </details> <br /> Updates `ruff` from 0.16.0 to 0.16.5 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.16.5</h2> <h2>Release Notes</h2> <p>Released on 2026-08-27.</p> <h3>Preview features</h3> <ul> <li>Allow rules without codes (<a href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li> <li>Introduce category selectors (<a href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li> <li>Update preview default rules and categories (<a href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-async</code>] Detect blocking generic HTTP requests (<code>ASYNC210</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li> <li>[<code>flake8-datetimez</code>] Allow timezone-safe <code>strptime</code> chains (<code>DTZ007</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li> <li>[<code>flake8-simplify</code>] Respect side effects in <code>lambda</code> defaults (<code>SIM401</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li> </ul> <h3>Server</h3> <ul> <li>Fix duplicated "of" in <code>ClientOptions</code> doc comment (<a href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Document rule acceptance guidelines (<a href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li> <li>Document the new category selectors (<a href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li> </ul> <h3>Contributors</h3> <ul> <li><a href="https://github.com/AlexWaygood"><code>@AlexWaygood</code></a></li> <li><a href="https://github.com/sharkdp"><code>@sharkdp</code></a></li> <li><a href="https://github.com/jelle-openai"><code>@jelle-openai</code></a></li> <li><a href="https://github.com/charliermarsh"><code>@charliermarsh</code></a></li> <li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li> <li><a href="https://github.com/aarushkandukoori"><code>@aarushkandukoori</code></a></li> </ul> <h2>Install ruff 0.16.5</h2> <h3>Install prebuilt binaries via shell script</h3> <pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.sh | sh </code></pre> <h3>Install prebuilt binaries via powershell script</h3> <pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1 | iex" </code></pre> <h2>Download ruff 0.16.5</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.16.5</h2> <p>Released on 2026-08-27.</p> <h3>Preview features</h3> <ul> <li>Allow rules without codes (<a href="https://redirect.github.com/astral-sh/ruff/pull/28049">#28049</a>)</li> <li>Introduce category selectors (<a href="https://redirect.github.com/astral-sh/ruff/pull/27666">#27666</a>)</li> <li>Update preview default rules and categories (<a href="https://redirect.github.com/astral-sh/ruff/pull/27877">#27877</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-async</code>] Detect blocking generic HTTP requests (<code>ASYNC210</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/28024">#28024</a>)</li> <li>[<code>flake8-datetimez</code>] Allow timezone-safe <code>strptime</code> chains (<code>DTZ007</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/28023">#28023</a>)</li> <li>[<code>flake8-simplify</code>] Respect side effects in <code>lambda</code> defaults (<code>SIM401</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/28000">#28000</a>)</li> </ul> <h3>Server</h3> <ul> <li>Fix duplicated "of" in <code>ClientOptions</code> doc comment (<a href="https://redirect.github.com/astral-sh/ruff/pull/27978">#27978</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Document rule acceptance guidelines (<a href="https://redirect.github.com/astral-sh/ruff/pull/27910">#27910</a>)</li> <li>Document the new category selectors (<a href="https://redirect.github.com/astral-sh/ruff/pull/27906">#27906</a>)</li> </ul> <h3>Contributors</h3> <ul> <li><a href="https://github.com/AlexWaygood"><code>@AlexWaygood</code></a></li> <li><a href="https://github.com/sharkdp"><code>@sharkdp</code></a></li> <li><a href="https://github.com/jelle-openai"><code>@jelle-openai</code></a></li> <li><a href="https://github.com/charliermarsh"><code>@charliermarsh</code></a></li> <li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li> <li><a href="https://github.com/aarushkandukoori"><code>@aarushkandukoori</code></a></li> </ul> <h2>0.16.4</h2> <p>Released on 2026-08-20.</p> <h3>Preview features</h3> <ul> <li>[<code>flake8-use-pathlib</code>] Add autofix for <code>PTH116</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/26460">#26460</a>)</li> <li>[<code>refurb</code>] Restrict <code>delete-full-slice</code> to lists (<code>FURB131</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/27711">#27711</a>)</li> <li>[<code>refurb</code>] Skip <code>FURB101</code> and <code>FURB103</code> when the <code>open</code> argument is a file descriptor (<a href="https://redirect.github.com/astral-sh/ruff/pull/27643">#27643</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>Fix <code>InvalidInstruction</code> on Windows CPUs that do not support <code>POPCNT</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/27803">#27803</a>)</li> <li>[<code>pyflakes</code>] Emit semantic syntax errors in string type definitions as <code>F722</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/27835">#27835</a>)</li> <li>[<code>pylint</code>] Allow <code>os._exit</code> imports in <code>import-private-name</code> (<code>PLC2701</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/27738">#27738</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a"><code>9e4938c</code></a> Bump 0.16.5 (<a href="https://redirect.github.com/astral-sh/ruff/issues/28110">#28110</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd"><code>aad0e90</code></a> Allow rules without codes (<a href="https://redirect.github.com/astral-sh/ruff/issues/28049">#28049</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4"><code>5fdab73</code></a> Update preview default rules and categories (<a href="https://redirect.github.com/astral-sh/ruff/issues/27877">#27877</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4"><code>29c8e5b</code></a> Document rule acceptance guidelines (<a href="https://redirect.github.com/astral-sh/ruff/issues/27910">#27910</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f"><code>50a4d7f</code></a> Document the new category selectors (<a href="https://redirect.github.com/astral-sh/ruff/issues/27906">#27906</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2"><code>ada8795</code></a> Introduce category selectors (<a href="https://redirect.github.com/astral-sh/ruff/issues/27666">#27666</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0"><code>d894723</code></a> [ty] Infer lambda parameters through callable type aliases (<a href="https://redirect.github.com/astral-sh/ruff/issues/28109">#28109</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06"><code>2685fde</code></a> [ty] Narrow functional enum members in <code>==</code> and <code>match</code> (<a href="https://redirect.github.com/astral-sh/ruff/issues/28103">#28103</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec"><code>efcffd2</code></a> [ty] Intersection simplifications with subtype-related generic specialization...</li> <li><a href="https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b"><code>eb78048</code></a> [ty] Bump ecosystem-analyzer for HTML escaping (<a href="https://redirect.github.com/astral-sh/ruff/issues/28104">#28104</a>)</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.16.0...0.16.5">compare view</a></li> </ul> </details> <br /> Updates `ty` from 0.0.64 to 0.0.75 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ty/releases">ty's releases</a>.</em></p> <blockquote> <h2>0.0.75</h2> <h2>Release Notes</h2> <p>Released on 2026-08-26.</p> <h3>Preview features</h3> <ul> <li>Initialize PEP 723 script environments in the CLI (<a href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li> <li>Refresh PEP 723 script environments in watch mode (<a href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li> <li>Run PEP 723 script synchronization on bounded workers (<a href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>Specialize <code>Self</code> bounds of inherited methods (<a href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li> </ul> <h3>LSP server</h3> <ul> <li>Add "Go to Definition" support for pytest fixtures (<a href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Fix documented Python package build command (<a href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li> <li>Link untyped-call tracking issue in migration guide (<a href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li> </ul> <h3>Library support</h3> <ul> <li>Resolve imported pytest fixture exposures (<a href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li> <li>Resolve installed core pytest fixture providers (<a href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li> <li>Resolve pytest fixtures through conftest (<a href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li> </ul> <h3>Diagnostics</h3> <ul> <li>Add more autofixes (<a href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li> <li>Add a dedicated missing-slot diagnostic (<a href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li> <li>Explain missing storage for declared slotted attributes (<a href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li> <li>Improve diagnostic spans for unpacked variable assignments (<a href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li> </ul> <h3>Core type checking</h3> <ul> <li>Account for known subclasses in equality inference (<a href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li> <li>Expand <code>ParamSpec</code> signatures inferred from bound receivers (<a href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li> <li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols (<a href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li> <li>Fix <code>TypedDict</code> variance inference (<a href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li> <li>Fix unsound narrowing through branch-assigned conditions (<a href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li> <li>Ignore inconsistent binding decorators on overloads (<a href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li> <li>Infer <code>yield from</code> send/return types from the iterator returned by <code>__iter__</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li> <li>Infer tuple type parameters from union arguments (<a href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li> <li>Infer variance through nonrecursive protocol references (<a href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li> <li>Preserve bounds of non-literal metaclasses (<a href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li> <li>Preserve correlated generic-call inference (<a href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ty/blob/main/CHANGELOG.md">ty's changelog</a>.</em></p> <blockquote> <h2>0.0.75</h2> <p>Released on 2026-08-26.</p> <h3>Preview features</h3> <ul> <li>Initialize PEP 723 script environments in the CLI (<a href="https://redirect.github.com/astral-sh/ruff/pull/27544">#27544</a>)</li> <li>Refresh PEP 723 script environments in watch mode (<a href="https://redirect.github.com/astral-sh/ruff/pull/27617">#27617</a>)</li> <li>Run PEP 723 script synchronization on bounded workers (<a href="https://redirect.github.com/astral-sh/ruff/pull/27615">#27615</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>Specialize <code>Self</code> bounds of inherited methods (<a href="https://redirect.github.com/astral-sh/ruff/pull/27990">#27990</a>)</li> </ul> <h3>LSP server</h3> <ul> <li>Add "Go to Definition" support for pytest fixtures (<a href="https://redirect.github.com/astral-sh/ruff/pull/27444">#27444</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Fix documented Python package build command (<a href="https://redirect.github.com/astral-sh/ty/pull/4384">#4384</a>)</li> <li>Link untyped-call tracking issue in migration guide (<a href="https://redirect.github.com/astral-sh/ty/pull/4382">#4382</a>)</li> </ul> <h3>Library support</h3> <ul> <li>Resolve imported pytest fixture exposures (<a href="https://redirect.github.com/astral-sh/ruff/pull/27539">#27539</a>)</li> <li>Resolve installed core pytest fixture providers (<a href="https://redirect.github.com/astral-sh/ruff/pull/27770">#27770</a>)</li> <li>Resolve pytest fixtures through conftest (<a href="https://redirect.github.com/astral-sh/ruff/pull/27540">#27540</a>)</li> </ul> <h3>Diagnostics</h3> <ul> <li>Add more autofixes (<a href="https://redirect.github.com/astral-sh/ruff/pull/28029">#28029</a>)</li> <li>Add a dedicated missing-slot diagnostic (<a href="https://redirect.github.com/astral-sh/ruff/pull/28039">#28039</a>)</li> <li>Explain missing storage for declared slotted attributes (<a href="https://redirect.github.com/astral-sh/ruff/pull/27969">#27969</a>)</li> <li>Improve diagnostic spans for unpacked variable assignments (<a href="https://redirect.github.com/astral-sh/ruff/pull/28041">#28041</a>)</li> </ul> <h3>Core type checking</h3> <ul> <li>Account for known subclasses in equality inference (<a href="https://redirect.github.com/astral-sh/ruff/pull/28005">#28005</a>)</li> <li>Expand <code>ParamSpec</code> signatures inferred from bound receivers (<a href="https://redirect.github.com/astral-sh/ruff/pull/28020">#28020</a>)</li> <li>Fix <code>Self</code> binding in <code>ParamSpec</code> protocols (<a href="https://redirect.github.com/astral-sh/ruff/pull/28016">#28016</a>)</li> <li>Fix <code>TypedDict</code> variance inference (<a href="https://redirect.github.com/astral-sh/ruff/pull/28052">#28052</a>)</li> <li>Fix unsound narrowing through branch-assigned conditions (<a href="https://redirect.github.com/astral-sh/ruff/pull/28006">#28006</a>)</li> <li>Ignore inconsistent binding decorators on overloads (<a href="https://redirect.github.com/astral-sh/ruff/pull/28036">#28036</a>)</li> <li>Infer <code>yield from</code> send/return types from the iterator returned by <code>__iter__</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/27987">#27987</a>)</li> <li>Infer tuple type parameters from union arguments (<a href="https://redirect.github.com/astral-sh/ruff/pull/28062">#28062</a>)</li> <li>Infer variance through nonrecursive protocol references (<a href="https://redirect.github.com/astral-sh/ruff/pull/28065">#28065</a>)</li> <li>Preserve bounds of non-literal metaclasses (<a href="https://redirect.github.com/astral-sh/ruff/pull/28046">#28046</a>)</li> <li>Preserve correlated generic-call inference (<a href="https://redirect.github.com/astral-sh/ruff/pull/28043">#28043</a>)</li> <li>Preserve invariant materialization constraints (<a href="https://redirect.github.com/astral-sh/ruff/pull/28047">#28047</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/astral-sh/ty/commit/a553dcc1a4c464b22d6fff8c46d444e326e0ae2d"><code>a553dcc</code></a> Bump version to 0.0.75 (<a href="https://redirect.github.com/astral-sh/ty/issues/4396">#4396</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/26b1b50998e92a5f50c342dc4a1fed84db2f8ee4"><code>26b1b50</code></a> Update prek dependencies (<a href="https://redirect.github.com/astral-sh/ty/issues/4392">#4392</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/73d226ee4d5a9274bc559c50a244159b61dfa315"><code>73d226e</code></a> Fix documented Python package build command (<a href="https://redirect.github.com/astral-sh/ty/issues/4384">#4384</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/5e264dac66970648d461a3fc8f2ebebd30a44dc9"><code>5e264da</code></a> Link untyped-call tracking issue in migration guide (<a href="https://redirect.github.com/astral-sh/ty/issues/4382">#4382</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/00199f0aaa6a8cd264fea08eae4f3c3fe4451c17"><code>00199f0</code></a> Bump version to 0.0.74 (<a href="https://redirect.github.com/astral-sh/ty/issues/4351">#4351</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/5769062fa10db84f6c03145bdf42d0b8da9aeb63"><code>5769062</code></a> Update mypy/pyright comparison table (<a href="https://redirect.github.com/astral-sh/ty/issues/4165">#4165</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/4fcb06010f2219b80adf3e688964abd9b0d72866"><code>4fcb060</code></a> Remove Zulip from the PGO training (<a href="https://redirect.github.com/astral-sh/ty/issues/4336">#4336</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/a7a706442a710db4a93c1a79779dff5ec5824cf6"><code>a7a7064</code></a> Use the versions bot's ruleset bypass when merging (<a href="https://redirect.github.com/astral-sh/ty/issues/4333">#4333</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/01b0fab0093c64535a401bc2731f80d7f5b6a7a8"><code>01b0fab</code></a> Update prek dependencies (<a href="https://redirect.github.com/astral-sh/ty/issues/4325">#4325</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/deef42f517bfbacb2ffe673046bef1e206c6b8ab"><code>deef42f</code></a> Update dependency python to 3.14 (<a href="https://redirect.github.com/astral-sh/ty/issues/4326">#4326</a>)</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/ty/compare/0.0.64...0.0.75">compare view</a></li> </ul> </details> <br /> Updates `hatch` from 1.17.1 to 1.18.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pypa/hatch/releases">hatch's releases</a>.</em></p> <blockquote> <h2>Hatchling v1.18.0</h2> <p><em><strong>Changed:</strong></em></p> <ul> <li>Drop support for Python 3.7</li> </ul> <p><em><strong>Added:</strong></em></p> <ul> <li>Update the list of directories that are always excluded for builds</li> </ul> <h2>Hatch v1.18.0</h2> <p><em><strong>Changed:</strong></em></p> <ul> <li>Upgrade default CPython distributions to 20260807</li> </ul> <p><em><strong>Added:</strong></em></p> <ul> <li> <p>Add the <code>sources</code> environment option, which redirects dependencies to a local path, Git repository, URL, alternate index, or workspace member at install time without altering published metadata. The top-level <code>[tool.hatch.sources]</code> table is an alias for the <code>default</code> environment, environments inherit sources entry by entry, the <code>HATCH_NO_SOURCES</code> environment variable disables them, and <code>hatch dep show sources</code> reports what each source redirects</p> </li> <li> <p>Add the <code>--all</code>/<code>-a</code> flag to the <code>build</code> command to build the workspace root and every workspace member defined by the selected environment, consolidating artifacts in the workspace root's <code>dist</code> directory by default. A root that does not define a <code>project</code> table is skipped so that a top-level <code>pyproject.toml</code> may only contain workspace configuration</p> </li> <li> <p>Add the <code>tool.hatch.requires-hatch</code> field, a version specifier set that commands reading the project's metadata enforce against the running version of Hatch</p> </li> <li> <p>Add first-class support for free-threaded distribution names such as <code>3.13t</code> and <code>3.14t</code> to the <code>python</code> commands and environment <code>python</code> option, rather than requiring the <code>HATCH_PYTHON_VARIANT_GIL</code> environment variable</p> </li> <li> <p>The <code>version</code> command can now bump versions that are statically defined by the <code>project.version</code> field, updating <code>pyproject.toml</code> in place. Pass <code>--force</code> to allow an explicit downgrade</p> </li> <li> <p>Support managing Python 3.15 distributions, currently 3.15.0rc1</p> </li> </ul> <p><em><strong>Fixed:</strong></em></p> <ul> <li> <p>Erase stale coverage data before running <code>hatch test --cover</code>.</p> </li> <li> <p>Fix environment creation crashing when a metadata hook exists that doesn’t happen to be installed in the <code>hatch</code> CLI’s environment.</p> </li> <li> <p>Fix commands run by <code>hatch run</code> no longer being interruptible with Ctrl-C, which happened because the ignored <code>SIGINT</code> of the parent process was inherited by the child process.</p> </li> <li> <p>Fix the generated Pyrefly config being invalid on Windows, since backslashes in the absolute paths were interpreted as TOML escape sequences.</p> </li> <li> <p>Fix the hardcoded reliance on <code>pip</code> when installing dependencies internally by using <code>uv</code> instead.</p> </li> <li> <p>Fix environment creation silently installing a GIL-enabled Python distribution when Hatch itself runs on a free-threaded build. The distribution matching the running interpreter, such as <code>3.14t</code>, is now selected.</p> </li> <li> <p>Fix free-threaded selectors such as <code>3.14t</code> being rejected by an environment's <code>python</code> option, even though <code>hatch python install 3.14t</code> already accepted them.</p> </li> <li> <p>Never automatically select a prerelease Python distribution, such as 3.15.0rc1, when falling back to the latest compatible version. A prerelease is still installed when requested explicitly.</p> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pypa/hatch/commit/558061c5ecbe7e9b10d81965d4cdc8df05832228"><code>558061c</code></a> Fix ci (<a href="https://redirect.github.com/pypa/hatch/issues/2377">#2377</a>)</li> <li><a href="https://github.com/pypa/hatch/commit/bc6d1bc1347445dfad06e731d4ae50f562692683"><code>bc6d1bc</code></a> release Hatch v1.18.0 (<a href="https://redirect.github.com/pypa/hatch/issues/2376">#2376</a>)</li> <li><a href="https://github.com/pypa/hatch/commit/8429e5d5bc84b2c9ace623b99518661e9032d422"><code>8429e5d</code></a> release Hatchling v1.32.0 (<a href="https://redirect.github.com/pypa/hatch/issues/2375">#2375</a>)</li> <li><a href="https://github.com/pypa/hatch/commit/413b3a880cfa69cb5095a927a725b074be669930"><code>413b3a8</code></a> Prepare for release (<a href="https://redirect.github.com/pypa/hatch/issues/2374">#2374</a>)</li> <li><a href="https://github.com/pypa/hatch/commit/4ccc9ea9cd2800c90549768f7eaa7dc9985b45e1"><code>4ccc9ea</code></a> Bug Fix - fix CTRL-C behavior to correctly handle signals (<a href="https://redirect.github.com/pypa/hatch/issues/2369">#2369</a>)</li> <li><a href="https://github.com/pypa/hatch/commit/a8858032b372ad8e13950a06b1783e723ee892e5"><code>a885803</code></a> Add sources to enable other types of local dependencies (<a href="https://redirect.github.com/pypa/hatch/issues/2313">#2313</a>)</li> <li><a href="https://github.com/pypa/hatch/commit/ab3e000585fc95c32196d406d0c224fca62ff1b1"><code>ab3e000</code></a> Add --all flag to hatch build for building all workspace members (<a href="https://redirect.github.com/pypa/hatch/issues/2352">#2352</a>)</li> <li><a href="https://github.com/pypa/hatch/commit/bb9027761d1325a540ca1eda5aee067098249b41"><code>bb90277</code></a> fix: Allow the <code>; private</code> annotation in <code>import-names</code>/<code>import-namespaces</code> p...</li> <li><a href="https://github.com/pypa/hatch/commit/3a9d853a68d009db91e70e4271b1d688e5381d3b"><code>3a9d853</code></a> fix: prevent backward relative paths in readme (<a href="https://redirect.github.com/pypa/hatch/issues/2354">#2354</a>)</li> <li><a href="https://github.com/pypa/hatch/commit/c4dc4f8ab4399a9f35b56c3367ff39d6fb09271c"><code>c4dc4f8</code></a> test: Fix test expectations for metadata generated by <code>flit-core</code> (<a href="https://redirect.github.com/pypa/hatch/issues/2365">#2365</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pypa/hatch/compare/hatch-v1.17.1...hatch-v1.18.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
LangGraph CLI
To help you ship LangGraph apps to production faster, check out LangSmith. LangSmith is a unified developer platform for building, testing, and monitoring LLM applications.
Quick Install
uv add langgraph-cli
🤔 What is this?
The LangGraph CLI is the official command-line interface for LangGraph. It provides tools to create, develop, build, and run LangGraph applications locally or in Docker.
📖 Documentation
For full documentation, see the LangGraph CLI reference. For conceptual guides and tutorials, see the LangGraph Docs.
For development mode with hot reloading:
uv add "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"],
"graphs": {
"my_graph": "./your_package/file.py:graph"
},
"env": "./.env",
"python_version": "3.11",
"pip_config_file": "./pip.conf",
"dockerfile_lines": []
}
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 sync - 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 sync
uv run langgraph dev # or other commands
📕 Releases & Versioning
See our Releases and Versioning policies.
💁 Contributing
As an open-source project in a rapidly developing field, we are extremely open to contributions, whether it be in the form of a new feature, improved infrastructure, or better documentation.
For detailed information on how to contribute, see the Contributing Guide.