mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-08-17 21:25:46 +02:00
672da815a3
Bumps the all-dependencies group in /libs/checkpoint-conformance with 2 updates: [ruff](https://github.com/astral-sh/ruff) and [ty](https://github.com/astral-sh/ty). Updates `ruff` from 0.15.1 to 0.15.2 <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.2</h2> <h2>Release Notes</h2> <p>Released on 2026-02-19.</p> <h3>Preview features</h3> <ul> <li> <p>Expand the default rule set (<a href="https://redirect.github.com/astral-sh/ruff/pull/23385">#23385</a>)</p> <p>In preview, Ruff now enables a significantly expanded default rule set of 412 rules, up from the stable default set of 59 rules. The new rules are mostly a superset of the stable defaults, with the exception of these rules, which are removed from the preview defaults:</p> <ul> <li><a href="https://docs.astral.sh/ruff/rules/multiple-imports-on-one-line"><code>multiple-imports-on-one-line</code></a> (<code>E401</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file"><code>module-import-not-at-top-of-file</code></a> (<code>E402</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file"><code>module-import-not-at-top-of-file</code></a> (<code>E701</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/multiple-statements-on-one-line-semicolon"><code>multiple-statements-on-one-line-semicolon</code></a> (<code>E702</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/useless-semicolon"><code>useless-semicolon</code></a> (<code>E703</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/none-comparison"><code>none-comparison</code></a> (<code>E711</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/true-false-comparison"><code>true-false-comparison</code></a> (<code>E712</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/not-in-test"><code>not-in-test</code></a> (<code>E713</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/not-is-test"><code>not-is-test</code></a> (<code>E714</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/type-comparison"><code>type-comparison</code></a> (<code>E721</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/lambda-assignment"><code>lambda-assignment</code></a> (<code>E731</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/ambiguous-variable-name"><code>ambiguous-variable-name</code></a> (<code>E741</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/ambiguous-class-name"><code>ambiguous-class-name</code></a> (<code>E742</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/ambiguous-function-name"><code>ambiguous-function-name</code></a> (<code>E743</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/undefined-local-with-import-star"><code>undefined-local-with-import-star</code></a> (<code>F403</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/undefined-local-with-import-star-usage"><code>undefined-local-with-import-star-usage</code></a> (<code>F405</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage"><code>undefined-local-with-nested-import-star-usage</code></a> (<code>F406</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/forward-annotation-syntax-error"><code>forward-annotation-syntax-error</code></a> (<code>F722</code>)</li> </ul> <p>If you use preview and prefer the old defaults, you can restore them with configuration like:</p> <pre lang="toml"><code> # ruff.toml <p>[lint] select = ["E4", "E7", "E9", "F"]</p> <h1>pyproject.toml</h1> <p>[tool.ruff.lint] select = ["E4", "E7", "E9", "F"] </code></pre></p> <p>If you do give them a try, feel free to share your feedback in the <a href="https://github.com/astral-sh/ruff/discussions/23203">GitHub discussion</a>!</p> </li> <li> <p>[<code>flake8-pyi</code>] Also check string annotations (<code>PYI041</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/19023">#19023</a>)</p> </li> </ul> <h3>Bug fixes</h3> <!-- 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.2</h2> <p>Released on 2026-02-19.</p> <h3>Preview features</h3> <ul> <li> <p>Expand the default rule set (<a href="https://redirect.github.com/astral-sh/ruff/pull/23385">#23385</a>)</p> <p>In preview, Ruff now enables a significantly expanded default rule set of 412 rules, up from the stable default set of 59 rules. The new rules are mostly a superset of the stable defaults, with the exception of these rules, which are removed from the preview defaults:</p> <ul> <li><a href="https://docs.astral.sh/ruff/rules/multiple-imports-on-one-line"><code>multiple-imports-on-one-line</code></a> (<code>E401</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file"><code>module-import-not-at-top-of-file</code></a> (<code>E402</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/module-import-not-at-top-of-file"><code>module-import-not-at-top-of-file</code></a> (<code>E701</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/multiple-statements-on-one-line-semicolon"><code>multiple-statements-on-one-line-semicolon</code></a> (<code>E702</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/useless-semicolon"><code>useless-semicolon</code></a> (<code>E703</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/none-comparison"><code>none-comparison</code></a> (<code>E711</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/true-false-comparison"><code>true-false-comparison</code></a> (<code>E712</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/not-in-test"><code>not-in-test</code></a> (<code>E713</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/not-is-test"><code>not-is-test</code></a> (<code>E714</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/type-comparison"><code>type-comparison</code></a> (<code>E721</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/lambda-assignment"><code>lambda-assignment</code></a> (<code>E731</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/ambiguous-variable-name"><code>ambiguous-variable-name</code></a> (<code>E741</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/ambiguous-class-name"><code>ambiguous-class-name</code></a> (<code>E742</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/ambiguous-function-name"><code>ambiguous-function-name</code></a> (<code>E743</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/undefined-local-with-import-star"><code>undefined-local-with-import-star</code></a> (<code>F403</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/undefined-local-with-import-star-usage"><code>undefined-local-with-import-star-usage</code></a> (<code>F405</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage"><code>undefined-local-with-nested-import-star-usage</code></a> (<code>F406</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/forward-annotation-syntax-error"><code>forward-annotation-syntax-error</code></a> (<code>F722</code>)</li> </ul> <p>If you use preview and prefer the old defaults, you can restore them with configuration like:</p> <pre lang="toml"><code> # ruff.toml <p>[lint] select = ["E4", "E7", "E9", "F"]</p> <h1>pyproject.toml</h1> <p>[tool.ruff.lint] select = ["E4", "E7", "E9", "F"] </code></pre></p> <p>If you do give them a try, feel free to share your feedback in the <a href="https://github.com/astral-sh/ruff/discussions/23203">GitHub discussion</a>!</p> </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/9d18ee9115f9cbb4c21478baa7c1fa2b46e0759c"><code>9d18ee9</code></a> Hard code workflow name and <code>cancel-in-progress</code> only for PRs (<a href="https://redirect.github.com/astral-sh/ruff/issues/23431">#23431</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/7cc15f024b931fe56365f40de3fab01219c092c4"><code>7cc15f0</code></a> Bump 0.15.2 (<a href="https://redirect.github.com/astral-sh/ruff/issues/23430">#23430</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/d1b544393ae9cddd8e48ebee8dbfd54bda89f375"><code>d1b5443</code></a> Add extension mapping to configuration file options (<a href="https://redirect.github.com/astral-sh/ruff/issues/23384">#23384</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/222574af90c5c0ca8f84c8385cf30c7c10ac2496"><code>222574a</code></a> Expand the default rule set (<a href="https://redirect.github.com/astral-sh/ruff/issues/23385">#23385</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/1465b5de3829549b45397e9587b83ab7ac6d26d0"><code>1465b5d</code></a> [<code>flake8-async</code>] Fix <code>in_async_context</code> logic (<a href="https://redirect.github.com/astral-sh/ruff/issues/23426">#23426</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/410902fa401afda969cc000f13be341896e6868e"><code>410902f</code></a> [<code>pyupgrade</code>] Fix handling of <code>typing.{io,re}</code> (<code>UP035</code>) (<a href="https://redirect.github.com/astral-sh/ruff/issues/23131">#23131</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/729610acd9e19f57526e8ca40f355626154826bb"><code>729610a</code></a> [ty] Fall back to ambiguous for large control flow graphs (<a href="https://redirect.github.com/astral-sh/ruff/issues/23399">#23399</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/1425c185b0a47be87112762f65b5bf7e323fb950"><code>1425c18</code></a> [ty] Add code folding support</li> <li><a href="https://github.com/astral-sh/ruff/commit/97acaaea5f993f33d3f5bb27c5db760a2f3d1e8a"><code>97acaae</code></a> [ty] Fix stack overflow for self-referential <code>TypeOf</code> in annotations (<a href="https://redirect.github.com/astral-sh/ruff/issues/23407">#23407</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/1f380c82584a6dab7e8715bc7dd5ae187da1e69a"><code>1f380c8</code></a> [ty] Update tests <code>reveal_type</code> and <code>Never</code> (<a href="https://redirect.github.com/astral-sh/ruff/issues/23418">#23418</a>)</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.15.1...0.15.2">compare view</a></li> </ul> </details> <br /> Updates `ty` from 0.0.17 to 0.0.18 <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.18</h2> <h2>Release Notes</h2> <p>Released on 2026-02-20.</p> <h3>Bug fixes</h3> <ul> <li>Support classes dynamically created via <code>type(...)</code> with cyclic bases (<a href="https://redirect.github.com/astral-sh/ruff/pull/22792">#22792</a>)</li> <li>Fix incorrect types inferred when unpacking mixed tuples (<a href="https://redirect.github.com/astral-sh/ruff/pull/23437">#23437</a>)</li> <li>Fix stack overflow for self-referential <code>TypeOf</code> in annotations (<a href="https://redirect.github.com/astral-sh/ruff/pull/23407">#23407</a>)</li> <li>Fix several server panics that could occur when computing semantic tokens for the current file (<a href="https://redirect.github.com/astral-sh/ruff/pull/23403">#23403</a>), <a href="https://redirect.github.com/astral-sh/ruff/pull/23398">#23398</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/23401">#23401</a>)</li> </ul> <h3>LSP server</h3> <ul> <li>Add code folding support (<a href="https://redirect.github.com/astral-sh/ruff/pull/23393">#23393</a>)</li> <li>Add warning message when running <code>ty server</code> interactively (<a href="https://redirect.github.com/astral-sh/ruff/pull/23416">#23416</a>)</li> <li>Exclude test-related symbols from non-first-party packages in auto-import completions (<a href="https://redirect.github.com/astral-sh/ruff/pull/23252">#23252</a>)</li> <li>Fix bug where diagnostics could disappear after opening an external file (<a href="https://redirect.github.com/astral-sh/ruff/pull/23447">#23447</a>)</li> <li>Remove spurious destination for Go-To Definition on variables defined in a loop (<a href="https://redirect.github.com/astral-sh/ruff/pull/23391">#23391</a>)</li> <li>Use the fully qualified name when "baking" an inlay hint into the source code if the scope already contains a variable with the same name as the unqualified name (<a href="https://redirect.github.com/astral-sh/ruff/pull/23265">#23265</a>)</li> <li>Resolve TypeVars in <code>call_signature_details</code> parameter types (<a href="https://redirect.github.com/astral-sh/ruff/pull/23149">#23149</a>)</li> </ul> <h3>CLI</h3> <ul> <li>Add <code>--output-format</code> to <code>ty version</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/23387">#23387</a>)</li> </ul> <h3>Configuration</h3> <ul> <li>Add <code>replace-imports-with-any</code> option (<a href="https://redirect.github.com/astral-sh/ruff/pull/23122">#23122</a>)</li> <li>Support shellexpand for configuration paths (<a href="https://redirect.github.com/astral-sh/ruff/pull/23274">#23274</a>)</li> </ul> <h3>Type checking</h3> <ul> <li>Add a new diagnostic to detect invalid class patterns in <code>match</code> statements (<a href="https://redirect.github.com/astral-sh/ruff/pull/22939">#22939</a>)</li> <li>Allow <code>Self</code> in <code>ClassVar</code> type annotations (<a href="https://redirect.github.com/astral-sh/ruff/pull/23362">#23362</a>)</li> <li>Consider synthesized methods and <code>ClassVar</code>-qualified declarations when determining whether an abstract method has been overridden in a subclass (<a href="https://redirect.github.com/astral-sh/ruff/pull/23381">#23381</a>)</li> <li>Add a diagnostic when combining <code>Final</code> and <code>ClassVar</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/23365">#23365</a>)</li> <li>Fix return type of <code>assert_never</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/23389">#23389</a>)</li> <li>Fix <code>assert_type</code> diagnostic messages (<a href="https://redirect.github.com/astral-sh/ruff/pull/23342">#23342</a>)</li> <li>Ban PEP-613 type alias values from containing type-qualifier special forms (<a href="https://redirect.github.com/astral-sh/ruff/pull/23444">#23444</a>)</li> <li>Infer <code>LiteralString</code> for <code>f"{literal_str_a} {literal_str_b}"</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/23346">#23346</a>)</li> <li>Infer precise types for bit-shift operations on integer literals (<a href="https://redirect.github.com/astral-sh/ruff/pull/23301">#23301</a>)</li> <li>Make <code>[abstract-method-in-final-class]</code> diagnostics less verbose for classes with many abstract methods (<a href="https://redirect.github.com/astral-sh/ruff/pull/23379">#23379</a>)</li> <li>Improve diagnostics for abstract <code>@final</code> classes (<a href="https://redirect.github.com/astral-sh/ruff/pull/23376">#23376</a>)</li> <li>Only perform literal promotion for implicitly inferred literals (<a href="https://redirect.github.com/astral-sh/ruff/pull/23107">#23107</a>)</li> <li>Parenthesize callable types when they appear in the return annotation of other callable types (<a href="https://redirect.github.com/astral-sh/ruff/pull/23327">#23327</a>)</li> <li>Consider a call to a generic function returning <code>Never</code> to terminate control flow (<a href="https://redirect.github.com/astral-sh/ruff/pull/23419">#23419</a>)</li> <li>Support calls to intersection types (<a href="https://redirect.github.com/astral-sh/ruff/pull/22469">#22469</a>)</li> <li>Validate annotated assignments to attributes on self (<a href="https://redirect.github.com/astral-sh/ruff/pull/23388">#23388</a>)</li> <li>Treat a bytes-literal type as a subtype of <code>Sequence[<constituent integers in the bytestring>]</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/23329">#23329</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.18</h2> <p>Released on 2026-02-20.</p> <h3>Bug fixes</h3> <ul> <li>Support classes dynamically created via <code>type(...)</code> with cyclic bases (<a href="https://redirect.github.com/astral-sh/ruff/pull/22792">#22792</a>)</li> <li>Fix incorrect types inferred when unpacking mixed tuples (<a href="https://redirect.github.com/astral-sh/ruff/pull/23437">#23437</a>)</li> <li>Fix stack overflow for self-referential <code>TypeOf</code> in annotations (<a href="https://redirect.github.com/astral-sh/ruff/pull/23407">#23407</a>)</li> <li>Fix several server panics that could occur when computing semantic tokens for the current file (<a href="https://redirect.github.com/astral-sh/ruff/pull/23403">#23403</a>), <a href="https://redirect.github.com/astral-sh/ruff/pull/23398">#23398</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/23401">#23401</a>)</li> </ul> <h3>LSP server</h3> <ul> <li>Add code folding support (<a href="https://redirect.github.com/astral-sh/ruff/pull/23393">#23393</a>)</li> <li>Add warning message when running <code>ty server</code> interactively (<a href="https://redirect.github.com/astral-sh/ruff/pull/23416">#23416</a>)</li> <li>Exclude test-related symbols from non-first-party packages in auto-import completions (<a href="https://redirect.github.com/astral-sh/ruff/pull/23252">#23252</a>)</li> <li>Fix bug where diagnostics could disappear after opening an external file (<a href="https://redirect.github.com/astral-sh/ruff/pull/23447">#23447</a>)</li> <li>Remove spurious destination for Go-To Definition on variables defined in a loop (<a href="https://redirect.github.com/astral-sh/ruff/pull/23391">#23391</a>)</li> <li>Use the fully qualified name when "baking" an inlay hint into the source code if the scope already contains a variable with the same name as the unqualified name (<a href="https://redirect.github.com/astral-sh/ruff/pull/23265">#23265</a>)</li> <li>Resolve TypeVars in <code>call_signature_details</code> parameter types (<a href="https://redirect.github.com/astral-sh/ruff/pull/23149">#23149</a>)</li> </ul> <h3>CLI</h3> <ul> <li>Add <code>--output-format</code> to <code>ty version</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/23387">#23387</a>)</li> </ul> <h3>Configuration</h3> <ul> <li>Add <code>replace-imports-with-any</code> option (<a href="https://redirect.github.com/astral-sh/ruff/pull/23122">#23122</a>)</li> <li>Support shellexpand for configuration paths (<a href="https://redirect.github.com/astral-sh/ruff/pull/23274">#23274</a>)</li> </ul> <h3>Type checking</h3> <ul> <li>Add a new diagnostic to detect invalid class patterns in <code>match</code> statements (<a href="https://redirect.github.com/astral-sh/ruff/pull/22939">#22939</a>)</li> <li>Allow <code>Self</code> in <code>ClassVar</code> type annotations (<a href="https://redirect.github.com/astral-sh/ruff/pull/23362">#23362</a>)</li> <li>Consider synthesized methods and <code>ClassVar</code>-qualified declarations when determining whether an abstract method has been overridden in a subclass (<a href="https://redirect.github.com/astral-sh/ruff/pull/23381">#23381</a>)</li> <li>Add a diagnostic when combining <code>Final</code> and <code>ClassVar</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/23365">#23365</a>)</li> <li>Fix return type of <code>assert_never</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/23389">#23389</a>)</li> <li>Fix <code>assert_type</code> diagnostic messages (<a href="https://redirect.github.com/astral-sh/ruff/pull/23342">#23342</a>)</li> <li>Ban PEP-613 type alias values from containing type-qualifier special forms (<a href="https://redirect.github.com/astral-sh/ruff/pull/23444">#23444</a>)</li> <li>Infer <code>LiteralString</code> for <code>f"{literal_str_a} {literal_str_b}"</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/23346">#23346</a>)</li> <li>Infer precise types for bit-shift operations on integer literals (<a href="https://redirect.github.com/astral-sh/ruff/pull/23301">#23301</a>)</li> <li>Make <code>[abstract-method-in-final-class]</code> diagnostics less verbose for classes with many abstract methods (<a href="https://redirect.github.com/astral-sh/ruff/pull/23379">#23379</a>)</li> <li>Improve diagnostics for abstract <code>@final</code> classes (<a href="https://redirect.github.com/astral-sh/ruff/pull/23376">#23376</a>)</li> <li>Only perform literal promotion for implicitly inferred literals (<a href="https://redirect.github.com/astral-sh/ruff/pull/23107">#23107</a>)</li> <li>Parenthesize callable types when they appear in the return annotation of other callable types (<a href="https://redirect.github.com/astral-sh/ruff/pull/23327">#23327</a>)</li> <li>Consider a call to a generic function returning <code>Never</code> to terminate control flow (<a href="https://redirect.github.com/astral-sh/ruff/pull/23419">#23419</a>)</li> <li>Support calls to intersection types (<a href="https://redirect.github.com/astral-sh/ruff/pull/22469">#22469</a>)</li> <li>Validate annotated assignments to attributes on self (<a href="https://redirect.github.com/astral-sh/ruff/pull/23388">#23388</a>)</li> <li>Treat a bytes-literal type as a subtype of <code>Sequence[<constituent integers in the bytestring>]</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/23329">#23329</a>)</li> <li>Allow a string-literal argument to match against an <code>Iterable</code> parameter in type variable inference. (<a href="https://redirect.github.com/astral-sh/ruff/pull/23326">#23326</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/751672710c88eaf0ee4b79728979377e11488120"><code>7516727</code></a> Bump version to 0.0.18 (<a href="https://redirect.github.com/astral-sh/ty/issues/2869">#2869</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/8e86a5684f6c1ea878e755bf508b2214ff4b60bb"><code>8e86a56</code></a> Mention code folding on language server feature page</li> <li><a href="https://github.com/astral-sh/ty/commit/ca49bf9199327e006b240172324a3218122fbaaa"><code>ca49bf9</code></a> Add shellcheck to pre-commit configuration (<a href="https://redirect.github.com/astral-sh/ty/issues/2845">#2845</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/532e761e8f8953b59d6bc61e80ed198473b853c6"><code>532e761</code></a> Update PyO3/maturin-action action to v1.50.0 (<a href="https://redirect.github.com/astral-sh/ty/issues/2823">#2823</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/0211006eb682049e15c69df28dc4f650fb3e8566"><code>0211006</code></a> Update prek dependencies (<a href="https://redirect.github.com/astral-sh/ty/issues/2822">#2822</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/60ebbfe8532c173081fad6080a8d7911afb63f8d"><code>60ebbfe</code></a> docs: Add beta status notice to README (<a href="https://redirect.github.com/astral-sh/ty/issues/2556">#2556</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/31b126a59009727c2a535a2f809b29f01bdd7ad7"><code>31b126a</code></a> docs: add link for the call hierarchy tracking issue (<a href="https://redirect.github.com/astral-sh/ty/issues/2816">#2816</a>)</li> <li>See full diff in <a href="https://github.com/astral-sh/ty/compare/0.0.17...0.0.18">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-checkpoint-conformance
Conformance test suite for LangGraph checkpointer implementations.
Validates that a BaseCheckpointSaver subclass correctly implements the checkpoint storage contract — blob round-trips, metadata preservation, namespace isolation, incremental channel updates, and more.
Installation
pip install langgraph-checkpoint-conformance
Quick start
Register your checkpointer with @checkpointer_test and run validate():
import asyncio
from langgraph.checkpoint.conformance import checkpointer_test, validate
@checkpointer_test(name="MyCheckpointer")
async def my_checkpointer():
saver = MyCheckpointer(...)
yield saver
# cleanup runs after yield
async def main():
report = await validate(my_checkpointer)
report.print_report()
assert report.passed_all_base()
asyncio.run(main())
Or in a pytest test:
import pytest
from langgraph.checkpoint.conformance import checkpointer_test, validate
@checkpointer_test(name="MyCheckpointer")
async def my_checkpointer():
yield MyCheckpointer(...)
@pytest.mark.asyncio
async def test_conformance():
report = await validate(my_checkpointer)
report.print_report()
assert report.passed_all_base()
Capabilities
The suite tests base capabilities (required) and extended capabilities (optional, auto-detected):
| Capability | Required | Method |
|---|---|---|
put |
yes | aput |
put_writes |
yes | aput_writes |
get_tuple |
yes | aget_tuple |
list |
yes | alist |
delete_thread |
yes | adelete_thread |
delete_for_runs |
no | adelete_for_runs |
copy_thread |
no | acopy_thread |
prune |
no | aprune |
Extended capabilities are detected by checking whether the method is overridden from BaseCheckpointSaver. If not overridden, those tests are skipped.
Options
Progress output
from langgraph.checkpoint.conformance.report import ProgressCallbacks
# Dot-style progress (. per pass, F per fail)
report = await validate(my_checkpointer, progress=ProgressCallbacks.default())
# Verbose (per-test names + stacktraces on failure)
report = await validate(my_checkpointer, progress=ProgressCallbacks.verbose())
Skip capabilities
@checkpointer_test(name="MyCheckpointer", skip_capabilities={"prune"})
async def my_checkpointer():
yield MyCheckpointer(...)
Run specific capabilities
report = await validate(my_checkpointer, capabilities={"put", "list"})
Lifespan (one-time setup/teardown)
For expensive setup like database creation:
async def db_lifespan():
await create_database()
yield
await drop_database()
@checkpointer_test(name="PostgresSaver", lifespan=db_lifespan)
async def pg_checkpointer():
async with PostgresSaver.from_conn_string(CONN_STRING) as saver:
yield saver