mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-08-20 14:42:28 +02:00
84b222873d
Bumps the minor-and-patch 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.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 `ty` from 0.0.25 to 0.0.27 <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.27</h2> <h2>Release Notes</h2> <p>Released on 2026-03-31.</p> <h3>Bug fixes</h3> <ul> <li>Fix panic on debug builds when attempting to provide autocomplete suggestions for <code>list[int]<CURSOR>()</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24167">#24167</a>)</li> <li>Fix instance-attribute lookup in methods of protocol classes (<a href="https://redirect.github.com/astral-sh/ruff/pull/24213">#24213</a>)</li> <li>Fix nested global and nonlocal lookups through forwarding scopes (<a href="https://redirect.github.com/astral-sh/ruff/pull/24279">#24279</a>)</li> <li>Fix panic on <code>list[Annotated[()]]</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24303">#24303</a>)</li> <li>Fix stack overflow on <code>type A = TypeIs[Callable[[], A]]</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24245">#24245</a>)</li> <li>Use <code>_cls</code> as the name of the first argument for synthesized <code>collections.namedtuple</code> constructor methods (<a href="https://redirect.github.com/astral-sh/ruff/pull/24333">#24333</a>)</li> </ul> <h3>LSP server</h3> <ul> <li>Fix semantic token classification for properties accessed on instances (<a href="https://redirect.github.com/astral-sh/ruff/pull/24065">#24065</a>)</li> <li>Grey out unused bindings in the editor (<a href="https://redirect.github.com/astral-sh/ruff/pull/23305">#23305</a>)</li> </ul> <h3>Core type checking</h3> <ul> <li>Add bidirectional type context for TypedDict <code>get()</code> defaults (<a href="https://redirect.github.com/astral-sh/ruff/pull/24231">#24231</a>)</li> <li>Add bidirectional type context for TypedDict <code>pop()</code> defaults (<a href="https://redirect.github.com/astral-sh/ruff/pull/24229">#24229</a>)</li> <li>Add support for functional TypedDict (<a href="https://redirect.github.com/astral-sh/ruff/pull/24174">#24174</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/24331">#24331</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/24295">#24295</a>)</li> <li>Ban type qualifiers in PEP-695 type aliases (<a href="https://redirect.github.com/astral-sh/ruff/pull/24242">#24242</a>)</li> <li>Enforce <code>Final</code> attribute assignment rules for annotated and augmented writes (<a href="https://redirect.github.com/astral-sh/ruff/pull/23880">#23880</a>)</li> <li>Improve support for <code>Callable</code> type context (<a href="https://redirect.github.com/astral-sh/ruff/pull/23888">#23888</a>)</li> <li>Infer lambda expressions with <code>Callable</code> type context (<a href="https://redirect.github.com/astral-sh/ruff/pull/22633">#22633</a>)</li> <li>Don't incorrectly infer the type of a method as being a singleton type when it's accessed off an instance (<a href="https://redirect.github.com/astral-sh/ruff/pull/24039">#24039</a>)</li> <li>Propagate type context through <code>await</code> expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/24256">#24256</a>)</li> <li>Resolve union-likes in emitting union attribute errors (<a href="https://redirect.github.com/astral-sh/ruff/pull/24263">#24263</a>)</li> <li>Show the user where the variable was declared as <code>Final</code> when emitting a diagnostic about a <code>Final</code> variable being reassigned (<a href="https://redirect.github.com/astral-sh/ruff/pull/24194">#24194</a>)</li> </ul> <h3>Contributors</h3> <ul> <li><a href="https://github.com/carljm"><code>@carljm</code></a></li> <li><a href="https://github.com/mvanhorn"><code>@mvanhorn</code></a></li> <li><a href="https://github.com/oconnor663"><code>@oconnor663</code></a></li> <li><a href="https://github.com/ibraheemdev"><code>@ibraheemdev</code></a></li> <li><a href="https://github.com/zanieb"><code>@zanieb</code></a></li> <li><a href="https://github.com/denyszhak"><code>@denyszhak</code></a></li> <li><a href="https://github.com/Glyphack"><code>@Glyphack</code></a></li> <li><a href="https://github.com/charliermarsh"><code>@charliermarsh</code></a></li> <li><a href="https://github.com/AlexWaygood"><code>@AlexWaygood</code></a></li> </ul> <h2>Install ty 0.0.27</h2> <h3>Install prebuilt binaries via shell script</h3> <pre lang="sh"><code></tr></table> </code></pre> </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.27</h2> <p>Released on 2026-03-31.</p> <h3>Bug fixes</h3> <ul> <li>Fix panic on debug builds when attempting to provide autocomplete suggestions for <code>list[int]<CURSOR>()</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24167">#24167</a>)</li> <li>Fix instance-attribute lookup in methods of protocol classes (<a href="https://redirect.github.com/astral-sh/ruff/pull/24213">#24213</a>)</li> <li>Fix nested global and nonlocal lookups through forwarding scopes (<a href="https://redirect.github.com/astral-sh/ruff/pull/24279">#24279</a>)</li> <li>Fix panic on <code>list[Annotated[()]]</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24303">#24303</a>)</li> <li>Fix stack overflow on <code>type A = TypeIs[Callable[[], A]]</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24245">#24245</a>)</li> <li>Use <code>_cls</code> as the name of the first argument for synthesized <code>collections.namedtuple</code> constructor methods (<a href="https://redirect.github.com/astral-sh/ruff/pull/24333">#24333</a>)</li> </ul> <h3>LSP server</h3> <ul> <li>Fix semantic token classification for properties accessed on instances (<a href="https://redirect.github.com/astral-sh/ruff/pull/24065">#24065</a>)</li> <li>Grey out unused bindings in the editor (<a href="https://redirect.github.com/astral-sh/ruff/pull/23305">#23305</a>)</li> </ul> <h3>Core type checking</h3> <ul> <li>Add bidirectional type context for TypedDict <code>get()</code> defaults (<a href="https://redirect.github.com/astral-sh/ruff/pull/24231">#24231</a>)</li> <li>Add bidirectional type context for TypedDict <code>pop()</code> defaults (<a href="https://redirect.github.com/astral-sh/ruff/pull/24229">#24229</a>)</li> <li>Add support for functional TypedDict (<a href="https://redirect.github.com/astral-sh/ruff/pull/24174">#24174</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/24331">#24331</a>, <a href="https://redirect.github.com/astral-sh/ruff/pull/24295">#24295</a>)</li> <li>Ban type qualifiers in PEP-695 type aliases (<a href="https://redirect.github.com/astral-sh/ruff/pull/24242">#24242</a>)</li> <li>Enforce <code>Final</code> attribute assignment rules for annotated and augmented writes (<a href="https://redirect.github.com/astral-sh/ruff/pull/23880">#23880</a>)</li> <li>Improve support for <code>Callable</code> type context (<a href="https://redirect.github.com/astral-sh/ruff/pull/23888">#23888</a>)</li> <li>Infer lambda expressions with <code>Callable</code> type context (<a href="https://redirect.github.com/astral-sh/ruff/pull/22633">#22633</a>)</li> <li>Don't incorrectly infer the type of a method as being a singleton type when it's accessed off an instance (<a href="https://redirect.github.com/astral-sh/ruff/pull/24039">#24039</a>)</li> <li>Propagate type context through <code>await</code> expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/24256">#24256</a>)</li> <li>Resolve union-likes in emitting union attribute errors (<a href="https://redirect.github.com/astral-sh/ruff/pull/24263">#24263</a>)</li> <li>Show the user where the variable was declared as <code>Final</code> when emitting a diagnostic about a <code>Final</code> variable being reassigned (<a href="https://redirect.github.com/astral-sh/ruff/pull/24194">#24194</a>)</li> </ul> <h3>Contributors</h3> <ul> <li><a href="https://github.com/carljm"><code>@carljm</code></a></li> <li><a href="https://github.com/mvanhorn"><code>@mvanhorn</code></a></li> <li><a href="https://github.com/oconnor663"><code>@oconnor663</code></a></li> <li><a href="https://github.com/ibraheemdev"><code>@ibraheemdev</code></a></li> <li><a href="https://github.com/zanieb"><code>@zanieb</code></a></li> <li><a href="https://github.com/denyszhak"><code>@denyszhak</code></a></li> <li><a href="https://github.com/Glyphack"><code>@Glyphack</code></a></li> <li><a href="https://github.com/charliermarsh"><code>@charliermarsh</code></a></li> <li><a href="https://github.com/AlexWaygood"><code>@AlexWaygood</code></a></li> </ul> <h2>0.0.26</h2> <p>Released on 2026-03-26.</p> <h3>Bug fixes</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/astral-sh/ty/commit/5c9e342c2ea67a0ac8749d32296dd3071974927a"><code>5c9e342</code></a> Bump version to 0.0.27 (<a href="https://redirect.github.com/astral-sh/ty/issues/3185">#3185</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/e6a57315251f37ab3516cb614f891ece91595393"><code>e6a5731</code></a> Update actions/cache action to v5.0.4 (<a href="https://redirect.github.com/astral-sh/ty/issues/3172">#3172</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/c47b982b86bb599d016af1d235174391f618ff16"><code>c47b982</code></a> Update prek dependencies (<a href="https://redirect.github.com/astral-sh/ty/issues/3173">#3173</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/657abcfc82221440481f9c9b76c6b6a3b89d5d00"><code>657abcf</code></a> Update astral-sh/setup-uv action to v8 (<a href="https://redirect.github.com/astral-sh/ty/issues/3174">#3174</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/9e582cb48e9c2306073091d554c04853091d612b"><code>9e582cb</code></a> Fetch the cargo-dist binary directly instead of using the installer (<a href="https://redirect.github.com/astral-sh/ty/issues/3160">#3160</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/d5c51ea65be68cffcfa1afe204e5f6003fc06b02"><code>d5c51ea</code></a> docs: use content tabs (<a href="https://redirect.github.com/astral-sh/ty/issues/3146">#3146</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/9893776cbd744bec84a43463728ab3813b00968f"><code>9893776</code></a> Use the <code>release</code> environment in <code>publish-docs</code> (<a href="https://redirect.github.com/astral-sh/ty/issues/3147">#3147</a>)</li> <li><a href="https://github.com/astral-sh/ty/commit/94030512727f4320e8184f120c4330ed8f42ec6f"><code>9403051</code></a> Bump version to 0.0.26 (<a href="https://redirect.github.com/astral-sh/ty/issues/3145">#3145</a>)</li> <li>See full diff in <a href="https://github.com/astral-sh/ty/compare/0.0.25...0.0.27">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