Files
langgraph/libs/checkpoint
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
72be9b23ee chore(deps): bump the all-dependencies group in /libs/checkpoint with 4 updates (#6812)
Bumps the all-dependencies group in /libs/checkpoint with 4 updates:
[langchain-core](https://github.com/langchain-ai/langchain),
[ormsgpack](https://github.com/ormsgpack/ormsgpack),
[redis](https://github.com/redis/redis-py) and
[ruff](https://github.com/astral-sh/ruff).

Updates `langchain-core` from 1.2.7 to 1.2.12
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/langchain-ai/langchain/releases">langchain-core's
releases</a>.</em></p>
<blockquote>
<h2>langchain-core==1.2.12</h2>
<p>Changes since langchain-core==1.2.11</p>
<p>release(core): 1.2.12 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35192">#35192</a>)
fix(core): fix setting <code>ChatGeneration.text</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35191">#35191</a>)</p>
<h2>langchain-core==1.2.11</h2>
<p>Changes since langchain-core==1.2.10</p>
<p>release(core): 1.2.11 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35144">#35144</a>)
fix(openai): sanitize urls when counting tokens in images (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35143">#35143</a>)
chore(core): clean up docstring mismatch and redundant logic in
langchain-core (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35064">#35064</a>)
fix(core): replace bare except with Exception in tracer (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35138">#35138</a>)</p>
<h2>langchain-core==1.2.10</h2>
<p>Changes since langchain-core==1.2.9</p>
<p>release(core): 1.2.10 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35136">#35136</a>)
chore(deps): bump the langchain-deps group across 3 directories with 40
updates (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35129">#35129</a>)
chore(deps): bump the langchain-deps group across 3 directories with 11
updates (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35121">#35121</a>)
feat(core): add ContextOverflowError, raise in anthropic and openai (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35099">#35099</a>)
feat(model-profiles): add <code>text_inputs</code> and
<code>text_outputs</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35084">#35084</a>)
feat(core): count tokens from tool schemas in
<code>count_tokens_approximately</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35098">#35098</a>)
docs(core): add missing <code>name</code> docstring for
<code>RunnableSerializable</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35088">#35088</a>)</p>
<h2>langchain-core==1.2.9</h2>
<p>Changes since langchain-core==1.2.8</p>
<p>release(core): 1.2.9 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35025">#35025</a>)
fix(core): adjust cap when scaling approximate token counts (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35017">#35017</a>)
revert: precompile hex color regex pattern at module level (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35016">#35016</a>)
chore: add <code>make type</code> target (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35015">#35015</a>)
revert: &quot;chore: add typing target in <code>Makefile</code>&quot;
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35013">#35013</a>)
chore: add typing target in <code>Makefile</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35012">#35012</a>)
fix(core): apply cap when scaling approximate token counts (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35005">#35005</a>)
feat(core): allow scaling by reported usage when counting tokens
approximately (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34996">#34996</a>)
test(core): increase <code>delta_time</code> for flaky test (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34982">#34982</a>)
chore: enrich <code>pyproject.toml</code> files (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34980">#34980</a>)</p>
<h2>langchain-core==1.2.8</h2>
<p>Changes since langchain-core==1.2.7</p>
<p>release(core): 1.2.8 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34975">#34975</a>)
docs(core): add examples for <code>pretty_repr</code>,
<code>pretty_print</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34968">#34968</a>)
docs(core): use proper admonition for <code>get_buffer_string</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34967">#34967</a>)
docs: add usage examples to core classes (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34841">#34841</a>)
chore(core): fix docstring format (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34966">#34966</a>)
chore(deps): bump the uv group across 20 directories with 3 updates (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34941">#34941</a>)
docs: add example to create_message function docstring (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34851">#34851</a>)
docs(core): clarify <a
href="https://github.com/tool"><code>@​tool</code></a> decorator
argument and return type requirements (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/34860">#34860</a>)</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/langchain-ai/langchain/commit/b06716fb879f0d656ce4d1dad4a9710a61e8ec1e"><code>b06716f</code></a>
release(core): 1.2.12 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35192">#35192</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/16cabfa212782d03b00e08658fb3e74160a1dd45"><code>16cabfa</code></a>
fix(core): fix setting <code>ChatGeneration.text</code> (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35191">#35191</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/8f859bd91f122b532689db199f69a6464a1bf7ef"><code>8f859bd</code></a>
release(huggingface): 1.2.1 (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35182">#35182</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/19ddd42891514aba6d2c92cd32a915e7bb4b7b31"><code>19ddd42</code></a>
fix(ollama): raise error when clients are not initialized (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35185">#35185</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/a50d86c353bdf611bd0b908d5fc3d737086dba98"><code>a50d86c</code></a>
docs(langchain-classic): clarify MultiVectorRetriever usage (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35053">#35053</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/f89e30eb131d48c5354dd98c068a229b4c585f2d"><code>f89e30e</code></a>
chore(huggingface): version bump for huggingface-hub and transformers
deps (#...</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/6ac12b330a5c4912c37aa3bd888bc086d5d387f7"><code>6ac12b3</code></a>
chore: bump pillow from 11.3.0 to 12.1.1 in /libs/partners/openai (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35177">#35177</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/d41dedae978dfd4e4ee82d57fc1f0c530d827b90"><code>d41deda</code></a>
fix(langchain-classic): validate ensemble retriever weights (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35078">#35078</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/9d0bd8376cdd19dc19ac34d15a34dabe94361d8b"><code>9d0bd83</code></a>
chore: bump pillow from 11.3.0 to 12.1.1 in /libs/partners/perplexity
(<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35176">#35176</a>)</li>
<li><a
href="https://github.com/langchain-ai/langchain/commit/f22f5d5d673d2db5dc8a68991cdc063664c6f96b"><code>f22f5d5</code></a>
chore(deps): bump pillow from 11.3.0 to 12.1.1 in /libs/langchain (<a
href="https://redirect.github.com/langchain-ai/langchain/issues/35175">#35175</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/langchain-ai/langchain/compare/langchain-core==1.2.7...langchain-core==1.2.12">compare
view</a></li>
</ul>
</details>
<br />

Updates `ormsgpack` from 1.12.1 to 1.12.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ormsgpack/ormsgpack/releases">ormsgpack's
releases</a>.</em></p>
<blockquote>
<h2>1.12.2</h2>
<p>Changed</p>
<ul>
<li>Add Python 3.14 free-threaded Windows x86_64 wheel</li>
<li>Improve serialization performance</li>
<li>Update dependencies</li>
</ul>
<p>Fixed</p>
<ul>
<li>Fix <code>unpackb</code> crash on Windows with Python 3.14
free-threaded and
on Linux s390x (<a
href="https://redirect.github.com/ormsgpack/ormsgpack/issues/499">#499</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ormsgpack/ormsgpack/blob/master/docs/changelog.rst">ormsgpack's
changelog</a>.</em></p>
<blockquote>
<h2>1.12.2 - 2026-01-18</h2>
<p>Changed</p>
<pre><code>
- Add Python 3.14 free-threaded Windows x86_64 wheel
- Improve serialization performance
- Update dependencies
<p>Fixed</p>
<pre><code>
- Fix ``unpackb`` crash on Windows with Python 3.14 free-threaded and
  on Linux s390x (:issue:`499`)
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;Commits&lt;/summary&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a
href=&quot;https://github.com/ormsgpack/ormsgpack/commit/9645772ab1e19420fa509197a95fb40fcc92fe9f&quot;&gt;&lt;code&gt;9645772&lt;/code&gt;&lt;/a&gt;
1.12.2&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;https://github.com/ormsgpack/ormsgpack/commit/cfc189fe17ea41cce9baffff0c55da105fce0d2e&quot;&gt;&lt;code&gt;cfc189f&lt;/code&gt;&lt;/a&gt;
Update Changelog&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;https://github.com/ormsgpack/ormsgpack/commit/cf8c3bb3988e063f628e62e3ead0de24c3a95381&quot;&gt;&lt;code&gt;cf8c3bb&lt;/code&gt;&lt;/a&gt;
Lint docs&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;https://github.com/ormsgpack/ormsgpack/commit/cc6e45a07d5cb13098da5752cc552deed525c8f6&quot;&gt;&lt;code&gt;cc6e45a&lt;/code&gt;&lt;/a&gt;
Update development dependencies&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;https://github.com/ormsgpack/ormsgpack/commit/42f501fc0fdbb86601bcecafd77e0096e41b266f&quot;&gt;&lt;code&gt;42f501f&lt;/code&gt;&lt;/a&gt;
Update dependencies&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;https://github.com/ormsgpack/ormsgpack/commit/6e621b8abcfa48cd9b4248bb5889baf3fdca06d3&quot;&gt;&lt;code&gt;6e621b8&lt;/code&gt;&lt;/a&gt;
Update repository url&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;https://github.com/ormsgpack/ormsgpack/commit/079c7fcf9b96d5c869af106c61d156f06bd5f6cd&quot;&gt;&lt;code&gt;079c7fc&lt;/code&gt;&lt;/a&gt;
Bump urllib3 from 2.6.0 to 2.6.3&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;https://github.com/ormsgpack/ormsgpack/commit/4bb944cf066fca788024ebd3614164627daeac33&quot;&gt;&lt;code&gt;4bb944c&lt;/code&gt;&lt;/a&gt;
Bump ruff from 0.14.11 to 0.14.12 in the uv group&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;https://github.com/ormsgpack/ormsgpack/commit/2f447c2475c60f0e966428825229f456734a35dc&quot;&gt;&lt;code&gt;2f447c2&lt;/code&gt;&lt;/a&gt;
Trigger workflows on merge group events&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;https://github.com/ormsgpack/ormsgpack/commit/2acc85d4437bcf6baa3a4f16fe333e46c97d7a66&quot;&gt;&lt;code&gt;2acc85d&lt;/code&gt;&lt;/a&gt;
Bump chrono from 0.4.42 to 0.4.43&lt;/li&gt;
&lt;li&gt;Additional commits viewable in &lt;a
href=&quot;https://github.com/ormsgpack/ormsgpack/compare/1.12.1...1.12.2&quot;&gt;compare
view&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;

&lt;br /&gt;
</code></pre>

Updates `redis` from 7.1.0 to 7.1.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/redis/redis-py/releases">redis's
releases</a>.</em></p>
<blockquote>
<h2>7.1.1</h2>
<h1>Changes</h1>
<h2>🧪 Experimental Features</h2>
<ul>
<li>Added initial health check policies, refactored add_database method
(<a
href="https://redirect.github.com/redis/redis-py/issues/3906">#3906</a>)</li>
</ul>
<h2>🧰 Maintenance</h2>
<ul>
<li>Disabled SCH in MultiDBClient underlying clients by default (<a
href="https://redirect.github.com/redis/redis-py/issues/3938">#3938</a>)</li>
<li>Added logging for MultiDBClients (<a
href="https://redirect.github.com/redis/redis-py/issues/3865">#3865</a>
<a
href="https://redirect.github.com/redis/redis-py/issues/3896">#3896</a>)</li>
</ul>
<p>We'd like to thank all the contributors who worked on this release!
<a
href="https://github.com/vladvildanov"><code>@​vladvildanov</code></a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/redis/redis-py/commit/7351a1e2d68f386ce6079e274df6bf2ae1406188"><code>7351a1e</code></a>
Updating lib version to 7.1.1</li>
<li><a
href="https://github.com/redis/redis-py/commit/b81c856c6b9f965cc5e4bb5fdcb2d3f323687357"><code>b81c856</code></a>
Disabled SCH in MultiDBClient underlying clients (<a
href="https://redirect.github.com/redis/redis-py/issues/3938">#3938</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/0438784ff41c0f14c6dd78682b9a8d9149a7b33b"><code>0438784</code></a>
Added initial health check policies, refactored add_database method (<a
href="https://redirect.github.com/redis/redis-py/issues/3906">#3906</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/76befb443c583815cc99100a58ef943096f27b50"><code>76befb4</code></a>
Added logging for MultiDBClients (<a
href="https://redirect.github.com/redis/redis-py/issues/3896">#3896</a>)</li>
<li><a
href="https://github.com/redis/redis-py/commit/faee0fbbafd1ab4ad7f5402385f71660c5601948"><code>faee0fb</code></a>
Remove high-severity exception logging (<a
href="https://redirect.github.com/redis/redis-py/issues/3865">#3865</a>)</li>
<li>See full diff in <a
href="https://github.com/redis/redis-py/compare/v7.1.0...v7.1.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.14.13 to 0.15.1
<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.1</h2>
<h2>Release Notes</h2>
<p>Released on 2026-02-12.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>airflow</code>] Add ruff rules to catch deprecated Airflow
imports for Airflow 3.1 (<code>AIR321</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22376">#22376</a>)</li>
<li>[<code>airflow</code>] Third positional parameter not named
<code>ti_key</code> should be flagged for
<code>BaseOperatorLink.get_link</code> (<code>AIR303</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22828">#22828</a>)</li>
<li>[<code>flake8-gettext</code>] Fix false negatives for plural
argument of <code>ngettext</code> (<code>INT001</code>,
<code>INT002</code>, <code>INT003</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21078">#21078</a>)</li>
<li>[<code>pyflakes</code>] Fix infinite loop in preview fix for
<code>unused-import</code> (<code>F401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23038">#23038</a>)</li>
<li>[<code>pygrep-hooks</code>] Detect non-existent mock methods in
standalone expressions (<code>PGH005</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22830">#22830</a>)</li>
<li>[<code>pylint</code>] Allow dunder submodules and improve diagnostic
range (<code>PLC2701</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22804">#22804</a>)</li>
<li>[<code>pyupgrade</code>] Improve diagnostic range for tuples
(<code>UP024</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23013">#23013</a>)</li>
<li>[<code>refurb</code>] Check subscripts in tuple do not use lambda
parameters in <code>reimplemented-operator</code> (<code>FURB118</code>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/23079">#23079</a>)</li>
<li>[<code>ruff</code>] Detect mutable defaults in <code>field</code>
calls (<code>RUF008</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23046">#23046</a>)</li>
<li>[<code>ruff</code>] Ignore std <code>cmath.inf</code>
(<code>RUF069</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23120">#23120</a>)</li>
<li>[<code>ruff</code>] New rule <code>float-equality-comparison</code>
(<code>RUF069</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/20585">#20585</a>)</li>
<li>Don't format unlabeled Markdown code blocks (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23106">#23106</a>)</li>
<li>Markdown formatting support in LSP (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23063">#23063</a>)</li>
<li>Support Quarto Markdown language markers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22947">#22947</a>)</li>
<li>Support formatting <code>pycon</code> Markdown code blocks (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23112">#23112</a>)</li>
<li>Use extension mapping to select Markdown code block language (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22934">#22934</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Avoid false positive for undefined variables in <code>FAST001</code>
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/23224">#23224</a>)</li>
<li>Avoid introducing syntax errors for <code>FAST003</code> autofix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23227">#23227</a>)</li>
<li>Avoid suggesting <code>InitVar</code> for <code>__post_init__</code>
that references PEP 695 type parameters (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23226">#23226</a>)</li>
<li>Deduplicate type variables in generic functions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23225">#23225</a>)</li>
<li>Fix exception handler parenthesis removal for Python 3.14+ (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23126">#23126</a>)</li>
<li>Fix f-string middle panic when parsing t-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23232">#23232</a>)</li>
<li>Wrap <code>RUF020</code> target for multiline fixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23210">#23210</a>)</li>
<li>Wrap <code>UP007</code> target for multiline fixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23208">#23208</a>)</li>
<li>Fix missing diagnostics for last range suppression in file (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23242">#23242</a>)</li>
<li>[<code>pyupgrade</code>] Fix syntax error on string with newline
escape and comment (<code>UP037</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22968">#22968</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>Use <code>ruff</code> instead of <code>Ruff</code> as the program
name in GitHub output format (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23240">#23240</a>)</li>
<li>[<code>PT006</code>] Fix syntax error when unpacking nested tuples
in <code>parametrize</code> fixes (<a
href="https://redirect.github.com/astral-sh/ruff/issues/22441">#22441</a>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/22464">#22464</a>)</li>
<li>[<code>airflow</code>] Catch deprecated attribute access from
context key for Airflow 3.0 (<code>AIR301</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22850">#22850</a>)</li>
<li>[<code>airflow</code>] Capture deprecated arguments and a decorator
(<code>AIR301</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23170">#23170</a>)</li>
<li>[<code>flake8-boolean-trap</code>] Add
<code>multiprocessing.Value</code> to excluded functions for
<code>FBT003</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23010">#23010</a>)</li>
<li>[<code>flake8-bugbear</code>] Add a secondary annotation showing the
previous occurrence (<code>B033</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22634">#22634</a>)</li>
<li>[<code>flake8-type-checking</code>] Add sub-diagnostic showing the
runtime use of an annotation (<code>TC004</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23091">#23091</a>)</li>
<li>[<code>isort</code>] Support configurable import section heading
comments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23151">#23151</a>)</li>
<li>[<code>ruff</code>] Improve the diagnostic for <code>RUF012</code>
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/23202">#23202</a>)</li>
</ul>
<h3>Formatter</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.1</h2>
<p>Released on 2026-02-12.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>airflow</code>] Add ruff rules to catch deprecated Airflow
imports for Airflow 3.1 (<code>AIR321</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22376">#22376</a>)</li>
<li>[<code>airflow</code>] Third positional parameter not named
<code>ti_key</code> should be flagged for
<code>BaseOperatorLink.get_link</code> (<code>AIR303</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22828">#22828</a>)</li>
<li>[<code>flake8-gettext</code>] Fix false negatives for plural
argument of <code>ngettext</code> (<code>INT001</code>,
<code>INT002</code>, <code>INT003</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/21078">#21078</a>)</li>
<li>[<code>pyflakes</code>] Fix infinite loop in preview fix for
<code>unused-import</code> (<code>F401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23038">#23038</a>)</li>
<li>[<code>pygrep-hooks</code>] Detect non-existent mock methods in
standalone expressions (<code>PGH005</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22830">#22830</a>)</li>
<li>[<code>pylint</code>] Allow dunder submodules and improve diagnostic
range (<code>PLC2701</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22804">#22804</a>)</li>
<li>[<code>pyupgrade</code>] Improve diagnostic range for tuples
(<code>UP024</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23013">#23013</a>)</li>
<li>[<code>refurb</code>] Check subscripts in tuple do not use lambda
parameters in <code>reimplemented-operator</code> (<code>FURB118</code>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/23079">#23079</a>)</li>
<li>[<code>ruff</code>] Detect mutable defaults in <code>field</code>
calls (<code>RUF008</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23046">#23046</a>)</li>
<li>[<code>ruff</code>] Ignore std <code>cmath.inf</code>
(<code>RUF069</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23120">#23120</a>)</li>
<li>[<code>ruff</code>] New rule <code>float-equality-comparison</code>
(<code>RUF069</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/20585">#20585</a>)</li>
<li>Don't format unlabeled Markdown code blocks (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23106">#23106</a>)</li>
<li>Markdown formatting support in LSP (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23063">#23063</a>)</li>
<li>Support Quarto Markdown language markers (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22947">#22947</a>)</li>
<li>Support formatting <code>pycon</code> Markdown code blocks (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23112">#23112</a>)</li>
<li>Use extension mapping to select Markdown code block language (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22934">#22934</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Avoid false positive for undefined variables in <code>FAST001</code>
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/23224">#23224</a>)</li>
<li>Avoid introducing syntax errors for <code>FAST003</code> autofix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23227">#23227</a>)</li>
<li>Avoid suggesting <code>InitVar</code> for <code>__post_init__</code>
that references PEP 695 type parameters (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23226">#23226</a>)</li>
<li>Deduplicate type variables in generic functions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23225">#23225</a>)</li>
<li>Fix exception handler parenthesis removal for Python 3.14+ (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23126">#23126</a>)</li>
<li>Fix f-string middle panic when parsing t-strings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23232">#23232</a>)</li>
<li>Wrap <code>RUF020</code> target for multiline fixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23210">#23210</a>)</li>
<li>Wrap <code>UP007</code> target for multiline fixes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23208">#23208</a>)</li>
<li>Fix missing diagnostics for last range suppression in file (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23242">#23242</a>)</li>
<li>[<code>pyupgrade</code>] Fix syntax error on string with newline
escape and comment (<code>UP037</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22968">#22968</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>Use <code>ruff</code> instead of <code>Ruff</code> as the program
name in GitHub output format (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23240">#23240</a>)</li>
<li>[<code>PT006</code>] Fix syntax error when unpacking nested tuples
in <code>parametrize</code> fixes (<a
href="https://redirect.github.com/astral-sh/ruff/issues/22441">#22441</a>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/22464">#22464</a>)</li>
<li>[<code>airflow</code>] Catch deprecated attribute access from
context key for Airflow 3.0 (<code>AIR301</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22850">#22850</a>)</li>
<li>[<code>airflow</code>] Capture deprecated arguments and a decorator
(<code>AIR301</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23170">#23170</a>)</li>
<li>[<code>flake8-boolean-trap</code>] Add
<code>multiprocessing.Value</code> to excluded functions for
<code>FBT003</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23010">#23010</a>)</li>
<li>[<code>flake8-bugbear</code>] Add a secondary annotation showing the
previous occurrence (<code>B033</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/22634">#22634</a>)</li>
<li>[<code>flake8-type-checking</code>] Add sub-diagnostic showing the
runtime use of an annotation (<code>TC004</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23091">#23091</a>)</li>
<li>[<code>isort</code>] Support configurable import section heading
comments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/23151">#23151</a>)</li>
<li>[<code>ruff</code>] Improve the diagnostic for <code>RUF012</code>
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/23202">#23202</a>)</li>
</ul>
<h3>Formatter</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/a2f11d239f91cf8daedb0764ec15fcfe29c5ae6d"><code>a2f11d2</code></a>
Prepare for 0.15.1 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23253">#23253</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d29628e9665baa17272aad489398eb72b70e60ff"><code>d29628e</code></a>
Remove docker-run-action (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23254">#23254</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/8a042667651d7b1cdfc1742478d2b29b04d91be0"><code>8a04266</code></a>
[ty] Allow discovering dependencies in system Python environments (<a
href="https://redirect.github.com/astral-sh/ruff/issues/22994">#22994</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/55d06c8879761c5500e9558502abc84cefcb7163"><code>55d06c8</code></a>
Ensure pending suppression diagnostics are reported (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23242">#23242</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d056a9fa6dfb842f2c0d439bf7b1a8099e5734ea"><code>d056a9f</code></a>
[<code>isort</code>] support for configurable import section heading
comments (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23151">#23151</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e22fa4f14d8fae550249e452d11bc53756df5c7a"><code>e22fa4f</code></a>
[ty] Fix method calls on subclasses of <code>Any</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23248">#23248</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/fa56c1550d723e458b91dc2405d5537d40401d5c"><code>fa56c15</code></a>
[ty] Fix bound method access on <code>None</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23246">#23246</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/4fd07d0e1cbbb4e4c3f5b4c1f04f2d8b3f4a2bf2"><code>4fd07d0</code></a>
Make range suppression test snapshot actually useful (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23251">#23251</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/8c63bced13b21d1952a56e6a096d9c2ec4af442f"><code>8c63bce</code></a>
[ty] Include conditional symbols (like <code>datetime.UTC</code>) in
auto-import in more...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/46be94361b3b4c54be911eb88bfbd9666eb06a6d"><code>46be943</code></a>
Exclude WASM artifacts from GitHub releases (<a
href="https://redirect.github.com/astral-sh/ruff/issues/23221">#23221</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.14.13...0.15.1">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>
2026-02-17 01:02:33 -08:00
..
2025-05-15 17:39:14 -07:00

LangGraph Checkpoint

This library defines the base interface for LangGraph checkpointers. Checkpointers provide a persistence layer for LangGraph. They allow you to interact with and manage the graph's state. When you use a graph with a checkpointer, the checkpointer saves a checkpoint of the graph state at every superstep, enabling several powerful capabilities like human-in-the-loop, "memory" between interactions and more.

Key concepts

Checkpoint

Checkpoint is a snapshot of the graph state at a given point in time. Checkpoint tuple refers to an object containing checkpoint and the associated config, metadata and pending writes.

Thread

Threads enable the checkpointing of multiple different runs, making them essential for multi-tenant chat applications and other scenarios where maintaining separate states is necessary. A thread is a unique ID assigned to a series of checkpoints saved by a checkpointer. When using a checkpointer, you must specify a thread_id and optionally checkpoint_id when running the graph.

  • thread_id is simply the ID of a thread. This is always required.
  • checkpoint_id can optionally be passed. This identifier refers to a specific checkpoint within a thread. This can be used to kick off a run of a graph from some point halfway through a thread.

You must pass these when invoking the graph as part of the configurable part of the config, e.g.

{"configurable": {"thread_id": "1"}}  # valid config
{"configurable": {"thread_id": "1", "checkpoint_id": "0c62ca34-ac19-445d-bbb0-5b4984975b2a"}}  # also valid config

Serde

langgraph_checkpoint also defines protocol for serialization/deserialization (serde) and provides an default implementation (langgraph.checkpoint.serde.jsonplus.JsonPlusSerializer) that handles a wide variety of types, including LangChain and LangGraph primitives, datetimes, enums and more.

Pending writes

When a graph node fails mid-execution at a given superstep, LangGraph stores pending checkpoint writes from any other nodes that completed successfully at that superstep, so that whenever we resume graph execution from that superstep we don't re-run the successful nodes.

Interface

Each checkpointer should conform to langgraph.checkpoint.base.BaseCheckpointSaver interface and must implement the following methods:

  • .put - Store a checkpoint with its configuration and metadata.
  • .put_writes - Store intermediate writes linked to a checkpoint (i.e. pending writes).
  • .get_tuple - Fetch a checkpoint tuple using for a given configuration (thread_id and checkpoint_id).
  • .list - List checkpoints that match a given configuration and filter criteria.
  • .delete_thread() - Delete all checkpoints and writes associated with a thread.
  • .get_next_version() - Generate the next version ID for a channel.

If the checkpointer will be used with asynchronous graph execution (i.e. executing the graph via .ainvoke, .astream, .abatch), checkpointer must implement asynchronous versions of the above methods (.aput, .aput_writes, .aget_tuple, .alist). Similarly, the checkpointer must implement .adelete_thread() if asynchronous thread cleanup is desired. The base class provides a default implementation of .get_next_version() that generates an integer sequence starting from 1, but this method should be overridden for custom versioning schemes.

Usage

from langgraph.checkpoint.memory import InMemorySaver

write_config = {"configurable": {"thread_id": "1", "checkpoint_ns": ""}}
read_config = {"configurable": {"thread_id": "1"}}

checkpointer = InMemorySaver()
checkpoint = {
    "v": 4,
    "ts": "2024-07-31T20:14:19.804150+00:00",
    "id": "1ef4f797-8335-6428-8001-8a1503f9b875",
    "channel_values": {
      "my_key": "meow",
      "node": "node"
    },
    "channel_versions": {
      "__start__": 2,
      "my_key": 3,
      "start:node": 3,
      "node": 3
    },
    "versions_seen": {
      "__input__": {},
      "__start__": {
        "__start__": 1
      },
      "node": {
        "start:node": 2
      }
    },
}

# store checkpoint
checkpointer.put(write_config, checkpoint, {}, {})

# load checkpoint
checkpointer.get(read_config)

# list checkpoints
list(checkpointer.list(read_config))