This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/burr.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 053dd0de Deploy site from e6f03974a5db50f1d790610b5ee5020b913c03df
053dd0de is described below
commit 053dd0de3f2c043108b2362cd61822ca30d24706
Author: GitHub Actions <[email protected]>
AuthorDate: Sat Mar 28 19:15:59 2026 +0000
Deploy site from e6f03974a5db50f1d790610b5ee5020b913c03df
---
content/404.html | 2 +-
.../_buildManifest.js | 0
.../_ssgManifest.js | 0
.../static/chunks/app/page-1b05dad031cc325b.js | 1 +
.../static/chunks/app/page-32023295eeac99ea.js | 1 -
content/_next/static/css/4ab741c5bfda45f1.css | 1 -
content/_next/static/css/e679120205939015.css | 1 +
content/docs/_sources/concepts/parallelism.rst.txt | 8 ++--
content/docs/concepts/parallelism/index.html | 8 ++--
content/docs/reference/persister/index.html | 44 ++++++++++++++++++----
content/docs/searchindex.js | 2 +-
content/index.html | 8 ++--
content/index.txt | 20 +++++-----
content/logos/taskhuman.svg | 3 ++
14 files changed, 65 insertions(+), 34 deletions(-)
diff --git a/content/404.html b/content/404.html
index 8b8c84ce..d3a0318c 100644
--- a/content/404.html
+++ b/content/404.html
@@ -1 +1 @@
-<!DOCTYPE html><!--nNdRCaWdBG1I0YGKjsytu--><html lang="en" class="font-sans
__variable_188709"><head><meta charSet="utf-8"/><meta name="viewport"
content="width=device-width, initial-scale=1"/><link rel="preload"
href="/_next/static/media/4cf2300e9c8272f7-s.p.woff2" as="font" crossorigin=""
type="font/woff2"/><link rel="stylesheet"
href="/_next/static/css/4ab741c5bfda45f1.css" data-precedence="next"/><link
rel="preload" as="script" fetchPriority="low"
href="/_next/static/chunks/webpack-7 [...]
\ No newline at end of file
+<!DOCTYPE html><!--6GCeixI9OBevhia05er6q--><html lang="en" class="font-sans
__variable_188709"><head><meta charSet="utf-8"/><meta name="viewport"
content="width=device-width, initial-scale=1"/><link rel="preload"
href="/_next/static/media/4cf2300e9c8272f7-s.p.woff2" as="font" crossorigin=""
type="font/woff2"/><link rel="stylesheet"
href="/_next/static/css/e679120205939015.css" data-precedence="next"/><link
rel="preload" as="script" fetchPriority="low"
href="/_next/static/chunks/webpack-7 [...]
\ No newline at end of file
diff --git a/content/_next/static/nNdRCaWdBG1I0YGKjsytu/_buildManifest.js
b/content/_next/static/6GCeixI9OBevhia05er6q/_buildManifest.js
similarity index 100%
rename from content/_next/static/nNdRCaWdBG1I0YGKjsytu/_buildManifest.js
rename to content/_next/static/6GCeixI9OBevhia05er6q/_buildManifest.js
diff --git a/content/_next/static/nNdRCaWdBG1I0YGKjsytu/_ssgManifest.js
b/content/_next/static/6GCeixI9OBevhia05er6q/_ssgManifest.js
similarity index 100%
rename from content/_next/static/nNdRCaWdBG1I0YGKjsytu/_ssgManifest.js
rename to content/_next/static/6GCeixI9OBevhia05er6q/_ssgManifest.js
diff --git a/content/_next/static/chunks/app/page-1b05dad031cc325b.js
b/content/_next/static/chunks/app/page-1b05dad031cc325b.js
new file mode 100644
index 00000000..412a4474
--- /dev/null
+++ b/content/_next/static/chunks/app/page-1b05dad031cc325b.js
@@ -0,0 +1 @@
+(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{12843:(e,t,a)=>{"use
strict";a.d(t,{default:()=>v});var
r=a(95155),n=a(12115),s=a(26549),i=a(33173),l=a(47922),o=a(64269);let
c=n.forwardRef((e,t)=>{let{shimmerColor:a="#ffffff",shimmerSize:n="0.05em",shimmerDuration:s="3s",borderRadius:i="100px",background:l="rgba(0,
0, 0,
1)",className:c,children:d,...m}=e;return(0,r.jsxs)("button",{style:{"--spread":"90deg","--shimmer-color":a,"--radius":i,"--speed":s,"--cut":n,"--bg":l},
[...]
\ No newline at end of file
diff --git a/content/_next/static/chunks/app/page-32023295eeac99ea.js
b/content/_next/static/chunks/app/page-32023295eeac99ea.js
deleted file mode 100644
index 374a8cb0..00000000
--- a/content/_next/static/chunks/app/page-32023295eeac99ea.js
+++ /dev/null
@@ -1 +0,0 @@
-(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{12843:(e,t,a)=>{"use
strict";a.d(t,{default:()=>b});var
r=a(95155),n=a(12115),s=a(26549),l=a(33173),i=a(47922),o=a(64269);let
c=n.forwardRef((e,t)=>{let{shimmerColor:a="#ffffff",shimmerSize:n="0.05em",shimmerDuration:s="3s",borderRadius:l="100px",background:i="rgba(0,
0, 0,
1)",className:c,children:d,...m}=e;return(0,r.jsxs)("button",{style:{"--spread":"90deg","--shimmer-color":a,"--radius":l,"--speed":s,"--cut":n,"--bg":i},
[...]
\ No newline at end of file
diff --git a/content/_next/static/css/4ab741c5bfda45f1.css
b/content/_next/static/css/4ab741c5bfda45f1.css
deleted file mode 100644
index 3ebc0907..00000000
--- a/content/_next/static/css/4ab741c5bfda45f1.css
+++ /dev/null
@@ -1 +0,0 @@
-/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer
properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline)))
or ((-moz-orient:inline) and (not (color:rgb(from red r g
b)))){*,::backdrop,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gra
[...]
\ No newline at end of file
diff --git a/content/_next/static/css/e679120205939015.css
b/content/_next/static/css/e679120205939015.css
new file mode 100644
index 00000000..385d91d9
--- /dev/null
+++ b/content/_next/static/css/e679120205939015.css
@@ -0,0 +1 @@
+/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer
properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline)))
or ((-moz-orient:inline) and (not (color:rgb(from red r g
b)))){*,::backdrop,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gra
[...]
\ No newline at end of file
diff --git a/content/docs/_sources/concepts/parallelism.rst.txt
b/content/docs/_sources/concepts/parallelism.rst.txt
index 0ced6bcc..c875c5f8 100644
--- a/content/docs/_sources/concepts/parallelism.rst.txt
+++ b/content/docs/_sources/concepts/parallelism.rst.txt
@@ -698,7 +698,7 @@ When using state persistence with async parallelism, make
sure to use the async
from burr.integrations.persisters.b_asyncpg import AsyncPGPersister
# Create an async persister with a connection pool
- persister = AsyncPGPersister.from_values(
+ persister = await AsyncPGPersister.from_values(
host="localhost",
port=5432,
user="postgres",
@@ -707,7 +707,7 @@ When using state persistence with async parallelism, make
sure to use the async
use_pool=True # Important for parallelism!
)
- app = (
+ app = await (
ApplicationBuilder()
.with_state_persister(persister)
.with_action(
@@ -722,12 +722,12 @@ Remember to properly clean up your async persisters when
you're done with them:
.. code-block:: python
- # Using as a context manager
+ # Using as a context manager (recommended)
async with AsyncPGPersister.from_values(..., use_pool=True) as persister:
# Use persister here
# Or manual cleanup
- persister = AsyncPGPersister.from_values(..., use_pool=True)
+ persister = await AsyncPGPersister.from_values(..., use_pool=True)
try:
# Use persister here
finally:
diff --git a/content/docs/concepts/parallelism/index.html
b/content/docs/concepts/parallelism/index.html
index 68513a72..3539c641 100644
--- a/content/docs/concepts/parallelism/index.html
+++ b/content/docs/concepts/parallelism/index.html
@@ -1011,7 +1011,7 @@ LLM might come up with a solution.</p>
<div class="highlight-python notranslate"><div
class="highlight"><pre><span></span><span class="kn">from</span><span
class="w"> </span><span
class="nn">burr.integrations.persisters.b_asyncpg</span><span class="w">
</span><span class="kn">import</span> <span class="n">AsyncPGPersister</span>
<span class="c1"># Create an async persister with a connection pool</span>
-<span class="n">persister</span> <span class="o">=</span> <span
class="n">AsyncPGPersister</span><span class="o">.</span><span
class="n">from_values</span><span class="p">(</span>
+<span class="n">persister</span> <span class="o">=</span> <span
class="k">await</span> <span class="n">AsyncPGPersister</span><span
class="o">.</span><span class="n">from_values</span><span class="p">(</span>
<span class="n">host</span><span class="o">=</span><span
class="s2">"localhost"</span><span class="p">,</span>
<span class="n">port</span><span class="o">=</span><span
class="mi">5432</span><span class="p">,</span>
<span class="n">user</span><span class="o">=</span><span
class="s2">"postgres"</span><span class="p">,</span>
@@ -1020,7 +1020,7 @@ LLM might come up with a solution.</p>
<span class="n">use_pool</span><span class="o">=</span><span
class="kc">True</span> <span class="c1"># Important for parallelism!</span>
<span class="p">)</span>
-<span class="n">app</span> <span class="o">=</span> <span class="p">(</span>
+<span class="n">app</span> <span class="o">=</span> <span
class="k">await</span> <span class="p">(</span>
<span class="n">ApplicationBuilder</span><span class="p">()</span>
<span class="o">.</span><span class="n">with_state_persister</span><span
class="p">(</span><span class="n">persister</span><span class="p">)</span>
<span class="o">.</span><span class="n">with_action</span><span
class="p">(</span>
@@ -1032,12 +1032,12 @@ LLM might come up with a solution.</p>
</div>
<p>Connection pools are crucial for handling concurrent operations. Direct
connections cannot be shared across different tasks and may cause errors in
concurrent scenarios.</p>
<p>Remember to properly clean up your async persisters when you’re done with
them:</p>
-<div class="highlight-python notranslate"><div
class="highlight"><pre><span></span><span class="c1"># Using as a context
manager</span>
+<div class="highlight-python notranslate"><div
class="highlight"><pre><span></span><span class="c1"># Using as a context
manager (recommended)</span>
<span class="k">async</span> <span class="k">with</span> <span
class="n">AsyncPGPersister</span><span class="o">.</span><span
class="n">from_values</span><span class="p">(</span><span
class="o">...</span><span class="p">,</span> <span
class="n">use_pool</span><span class="o">=</span><span
class="kc">True</span><span class="p">)</span> <span class="k">as</span> <span
class="n">persister</span><span class="p">:</span>
<span class="c1"># Use persister here</span>
<span class="c1"># Or manual cleanup</span>
-<span class="n">persister</span> <span class="o">=</span> <span
class="n">AsyncPGPersister</span><span class="o">.</span><span
class="n">from_values</span><span class="p">(</span><span
class="o">...</span><span class="p">,</span> <span
class="n">use_pool</span><span class="o">=</span><span
class="kc">True</span><span class="p">)</span>
+<span class="n">persister</span> <span class="o">=</span> <span
class="k">await</span> <span class="n">AsyncPGPersister</span><span
class="o">.</span><span class="n">from_values</span><span
class="p">(</span><span class="o">...</span><span class="p">,</span> <span
class="n">use_pool</span><span class="o">=</span><span
class="kc">True</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="c1"># Use persister here</span>
<span class="k">finally</span><span class="p">:</span>
diff --git a/content/docs/reference/persister/index.html
b/content/docs/reference/persister/index.html
index 3e338990..eeb63b90 100644
--- a/content/docs/reference/persister/index.html
+++ b/content/docs/reference/persister/index.html
@@ -1611,14 +1611,21 @@ we provide a close() method.</p>
<dl class="py method">
<dt class="sig sig-object py"
id="burr.integrations.persisters.b_aiosqlite.AsyncSQLitePersister.from_config">
-<em class="property"><span class="k"><span
class="pre">async</span></span><span class="w"> </span><span class="k"><span
class="pre">classmethod</span></span><span class="w"> </span></em><span
class="sig-name descname"><span class="pre">from_config</span></span><span
class="sig-paren">(</span>
+<em class="property"><span class="k"><span
class="pre">classmethod</span></span><span class="w"> </span></em><span
class="sig-name descname"><span class="pre">from_config</span></span><span
class="sig-paren">(</span>
<dl>
<dd><em class="sig-param"><span class="n"><span
class="pre">config</span></span><span class="p"><span
class="pre">:</span></span><span class="w"> </span><span class="n"><span
class="pre">dict</span></span></em>,</dd>
</dl>
-<span class="sig-paren">)</span> <span class="sig-return"><span
class="sig-return-icon">→</span> <span class="sig-return-typehint"><a
class="reference internal"
href="#burr.integrations.persisters.b_aiosqlite.AsyncSQLitePersister"
title="burr.integrations.persisters.b_aiosqlite.AsyncSQLitePersister"><span
class="pre">AsyncSQLitePersister</span></a></span></span><a class="headerlink"
href="#burr.integrations.persisters.b_aiosqlite.AsyncSQLitePersister.from_config"
title="Link to th [...]
+<span class="sig-paren">)</span> <span class="sig-return"><span
class="sig-return-icon">→</span> <span class="sig-return-typehint"><span
class="pre">_AsyncPersisterContextManager</span></span></span><a
class="headerlink"
href="#burr.integrations.persisters.b_aiosqlite.AsyncSQLitePersister.from_config"
title="Link to this definition">¶</a></dt>
<dd><p>Creates a new instance of the AsyncSQLitePersister from a configuration
dictionary.</p>
+<p>Can be used with <code class="docutils literal notranslate"><span
class="pre">await</span></code> or as an async context manager:</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="n">persister</span> <span
class="o">=</span> <span class="k">await</span> <span
class="n">AsyncSQLitePersister</span><span class="o">.</span><span
class="n">from_config</span><span class="p">(</span><span
class="n">config</span><span class="p">)</span>
+<span class="c1"># or</span>
+<span class="k">async</span> <span class="k">with</span> <span
class="n">AsyncSQLitePersister</span><span class="o">.</span><span
class="n">from_config</span><span class="p">(</span><span
class="n">config</span><span class="p">)</span> <span class="k">as</span> <span
class="n">persister</span><span class="p">:</span>
+ <span class="o">...</span>
+</pre></div>
+</div>
<p>The config key:value pair needed are:
db_path: str,
table_name: str,
@@ -1628,7 +1635,7 @@ connect_kwargs: dict,</p>
<dl class="py method">
<dt class="sig sig-object py"
id="burr.integrations.persisters.b_aiosqlite.AsyncSQLitePersister.from_values">
-<em class="property"><span class="k"><span
class="pre">async</span></span><span class="w"> </span><span class="k"><span
class="pre">classmethod</span></span><span class="w"> </span></em><span
class="sig-name descname"><span class="pre">from_values</span></span><span
class="sig-paren">(</span>
+<em class="property"><span class="k"><span
class="pre">classmethod</span></span><span class="w"> </span></em><span
class="sig-name descname"><span class="pre">from_values</span></span><span
class="sig-paren">(</span>
<dl>
<dd><em class="sig-param"><span class="n"><span
class="pre">db_path</span></span><span class="p"><span
class="pre">:</span></span><span class="w"> </span><span class="n"><span
class="pre">str</span></span></em>,</dd>
@@ -1637,8 +1644,15 @@ connect_kwargs: dict,</p>
<dd><em class="sig-param"><span class="n"><span
class="pre">connect_kwargs</span></span><span class="p"><span
class="pre">:</span></span><span class="w"> </span><span class="n"><span
class="pre">dict</span></span><span class="w"> </span><span class="o"><span
class="pre">=</span></span><span class="w"> </span><span
class="default_value"><span class="pre">None</span></span></em>,</dd>
</dl>
-<span class="sig-paren">)</span> <span class="sig-return"><span
class="sig-return-icon">→</span> <span class="sig-return-typehint"><a
class="reference internal"
href="#burr.integrations.persisters.b_aiosqlite.AsyncSQLitePersister"
title="burr.integrations.persisters.b_aiosqlite.AsyncSQLitePersister"><span
class="pre">AsyncSQLitePersister</span></a></span></span><a class="headerlink"
href="#burr.integrations.persisters.b_aiosqlite.AsyncSQLitePersister.from_values"
title="Link to th [...]
+<span class="sig-paren">)</span> <span class="sig-return"><span
class="sig-return-icon">→</span> <span class="sig-return-typehint"><span
class="pre">_AsyncPersisterContextManager</span></span></span><a
class="headerlink"
href="#burr.integrations.persisters.b_aiosqlite.AsyncSQLitePersister.from_values"
title="Link to this definition">¶</a></dt>
<dd><p>Creates a new instance of the AsyncSQLitePersister from passed in
values.</p>
+<p>Can be used with <code class="docutils literal notranslate"><span
class="pre">await</span></code> or as an async context manager:</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="n">persister</span> <span
class="o">=</span> <span class="k">await</span> <span
class="n">AsyncSQLitePersister</span><span class="o">.</span><span
class="n">from_values</span><span class="p">(</span><span
class="n">db_path</span><span class="o">=</span><span
class="s2">"test.db"</span><span class="p">)</span>
+<span class="c1"># or</span>
+<span class="k">async</span> <span class="k">with</span> <span
class="n">AsyncSQLitePersister</span><span class="o">.</span><span
class="n">from_values</span><span class="p">(</span><span
class="n">db_path</span><span class="o">=</span><span
class="s2">"test.db"</span><span class="p">)</span> <span
class="k">as</span> <span class="n">persister</span><span class="p">:</span>
+ <span class="o">...</span>
+</pre></div>
+</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
@@ -1860,19 +1874,26 @@ If using a direct connection, just returns a new
persister with the same connect
<dl class="py method">
<dt class="sig sig-object py"
id="burr.integrations.persisters.b_asyncpg.AsyncPostgreSQLPersister.from_config">
-<em class="property"><span class="k"><span
class="pre">async</span></span><span class="w"> </span><span class="k"><span
class="pre">classmethod</span></span><span class="w"> </span></em><span
class="sig-name descname"><span class="pre">from_config</span></span><span
class="sig-paren">(</span>
+<em class="property"><span class="k"><span
class="pre">classmethod</span></span><span class="w"> </span></em><span
class="sig-name descname"><span class="pre">from_config</span></span><span
class="sig-paren">(</span>
<dl>
<dd><em class="sig-param"><span class="n"><span
class="pre">config</span></span><span class="p"><span
class="pre">:</span></span><span class="w"> </span><span class="n"><span
class="pre">dict</span></span></em>,</dd>
</dl>
-<span class="sig-paren">)</span> <span class="sig-return"><span
class="sig-return-icon">→</span> <span class="sig-return-typehint"><a
class="reference internal"
href="#burr.integrations.persisters.b_asyncpg.AsyncPostgreSQLPersister"
title="burr.integrations.persisters.b_asyncpg.AsyncPostgreSQLPersister"><span
class="pre">AsyncPostgreSQLPersister</span></a></span></span><a
class="headerlink"
href="#burr.integrations.persisters.b_asyncpg.AsyncPostgreSQLPersister.from_config"
title=" [...]
+<span class="sig-paren">)</span> <span class="sig-return"><span
class="sig-return-icon">→</span> <span class="sig-return-typehint"><span
class="pre">_AsyncPersisterContextManager</span></span></span><a
class="headerlink"
href="#burr.integrations.persisters.b_asyncpg.AsyncPostgreSQLPersister.from_config"
title="Link to this definition">¶</a></dt>
<dd><p>Creates a new instance of the PostgreSQLPersister from a configuration
dictionary.</p>
+<p>Can be used with <code class="docutils literal notranslate"><span
class="pre">await</span></code> or as an async context manager:</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="n">persister</span> <span
class="o">=</span> <span class="k">await</span> <span
class="n">AsyncPostgreSQLPersister</span><span class="o">.</span><span
class="n">from_config</span><span class="p">(</span><span
class="n">config</span><span class="p">)</span>
+<span class="c1"># or</span>
+<span class="k">async</span> <span class="k">with</span> <span
class="n">AsyncPostgreSQLPersister</span><span class="o">.</span><span
class="n">from_config</span><span class="p">(</span><span
class="n">config</span><span class="p">)</span> <span class="k">as</span> <span
class="n">persister</span><span class="p">:</span>
+ <span class="o">...</span>
+</pre></div>
+</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py"
id="burr.integrations.persisters.b_asyncpg.AsyncPostgreSQLPersister.from_values">
-<em class="property"><span class="k"><span
class="pre">async</span></span><span class="w"> </span><span class="k"><span
class="pre">classmethod</span></span><span class="w"> </span></em><span
class="sig-name descname"><span class="pre">from_values</span></span><span
class="sig-paren">(</span>
+<em class="property"><span class="k"><span
class="pre">classmethod</span></span><span class="w"> </span></em><span
class="sig-name descname"><span class="pre">from_values</span></span><span
class="sig-paren">(</span>
<dl>
<dd><em class="sig-param"><span class="n"><span
class="pre">db_name</span></span><span class="p"><span
class="pre">:</span></span><span class="w"> </span><span class="n"><span
class="pre">str</span></span></em>,</dd>
@@ -1885,8 +1906,15 @@ If using a direct connection, just returns a new
persister with the same connect
<dd><em class="sig-param"><span class="o"><span
class="pre">**</span></span><span class="n"><span
class="pre">pool_kwargs</span></span></em>,</dd>
</dl>
-<span class="sig-paren">)</span> <span class="sig-return"><span
class="sig-return-icon">→</span> <span class="sig-return-typehint"><a
class="reference internal"
href="#burr.integrations.persisters.b_asyncpg.AsyncPostgreSQLPersister"
title="burr.integrations.persisters.b_asyncpg.AsyncPostgreSQLPersister"><span
class="pre">AsyncPostgreSQLPersister</span></a></span></span><a
class="headerlink"
href="#burr.integrations.persisters.b_asyncpg.AsyncPostgreSQLPersister.from_values"
title=" [...]
+<span class="sig-paren">)</span> <span class="sig-return"><span
class="sig-return-icon">→</span> <span class="sig-return-typehint"><span
class="pre">_AsyncPersisterContextManager</span></span></span><a
class="headerlink"
href="#burr.integrations.persisters.b_asyncpg.AsyncPostgreSQLPersister.from_values"
title="Link to this definition">¶</a></dt>
<dd><p>Builds a new instance of the PostgreSQLPersister from the provided
values.</p>
+<p>Can be used with <code class="docutils literal notranslate"><span
class="pre">await</span></code> or as an async context manager:</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="n">persister</span> <span
class="o">=</span> <span class="k">await</span> <span
class="n">AsyncPostgreSQLPersister</span><span class="o">.</span><span
class="n">from_values</span><span class="p">(</span><span
class="o">...</span><span class="p">)</span>
+<span class="c1"># or</span>
+<span class="k">async</span> <span class="k">with</span> <span
class="n">AsyncPostgreSQLPersister</span><span class="o">.</span><span
class="n">from_values</span><span class="p">(</span><span
class="o">...</span><span class="p">)</span> <span class="k">as</span> <span
class="n">persister</span><span class="p">:</span>
+ <span class="o">...</span>
+</pre></div>
+</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
diff --git a/content/docs/searchindex.js b/content/docs/searchindex.js
index 4426c5e1..c55bce05 100644
--- a/content/docs/searchindex.js
+++ b/content/docs/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles":{"1. Agent application is modeled as State +
Actions \u2013>
Graph":[[28,"agent-application-is-modeled-as-state-actions-graph"]],"1. Make
your methods async":[[6,"make-your-methods-async"]],"2. Build application
\u2013> built in checkpointing &
tracking":[[28,"build-application-built-in-checkpointing-tracking"]],"2.
Implement the is_async method":[[6,"implement-the-is-async-method"]],"3. Comes
with a UI":[[28,"comes-with-a-ui"]],"3. Use async persisters with [...]
\ No newline at end of file
+Search.setIndex({"alltitles":{"1. Agent application is modeled as State +
Actions \u2013>
Graph":[[28,"agent-application-is-modeled-as-state-actions-graph"]],"1. Make
your methods async":[[6,"make-your-methods-async"]],"2. Build application
\u2013> built in checkpointing &
tracking":[[28,"build-application-built-in-checkpointing-tracking"]],"2.
Implement the is_async method":[[6,"implement-the-is-async-method"]],"3. Comes
with a UI":[[28,"comes-with-a-ui"]],"3. Use async persisters with [...]
\ No newline at end of file
diff --git a/content/index.html b/content/index.html
index 96b4d0ba..2818952a 100644
--- a/content/index.html
+++ b/content/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><!--nNdRCaWdBG1I0YGKjsytu--><html lang="en" class="font-sans
__variable_188709"><head><meta charSet="utf-8"/><meta name="viewport"
content="width=device-width, initial-scale=1"/><link rel="preload"
href="/_next/static/media/4cf2300e9c8272f7-s.p.woff2" as="font" crossorigin=""
type="font/woff2"/><link rel="preload" as="image" href="/burr_logo.svg"/><link
rel="stylesheet" href="/_next/static/css/4ab741c5bfda45f1.css"
data-precedence="next"/><link rel="preload" as="script" fe [...]
+<!DOCTYPE html><!--6GCeixI9OBevhia05er6q--><html lang="en" class="font-sans
__variable_188709"><head><meta charSet="utf-8"/><meta name="viewport"
content="width=device-width, initial-scale=1"/><link rel="preload"
href="/_next/static/media/4cf2300e9c8272f7-s.p.woff2" as="font" crossorigin=""
type="font/woff2"/><link rel="preload" as="image" href="/burr_logo.svg"/><link
rel="preload" as="image"
href="https://www.google.com/s2/favicons?domain=peanutrobotics.com&sz=64"/><link
rel="preloa [...]
@action(reads=["messages"], writes=["messages"])
def chat(state: State, llm_client) -> State:
@@ -16,7 +16,7 @@ app = (
.build()
)
-app.run(halt_after=["chat"], inputs={"llm_client":
client})</code></pre></div><div class="flex items-center justify-between
bg-[#12121f] px-4 py-2 border-t border-white/5 text-[10px]
text-white/25"><span>Python 3.12</span><span>UTF-8</span><span>burr >=
0.30</span></div></div></div></div></section><section id="features"
class="py-20 sm:py-28"><div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8"><div
style="opacity:0;filter:blur(6px);transform:translateY(-6px)"><div [...]
+app.run(halt_after=["chat"], inputs={"llm_client":
client})</code></pre></div><div class="flex items-center justify-between
bg-[#12121f] px-4 py-2 border-t border-white/5 text-[10px]
text-white/25"><span>Python 3.12</span><span>UTF-8</span><span>burr >=
0.30</span></div></div></div></div></section><section id="features"
class="py-20 sm:py-28"><div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8"><div
style="opacity:0;filter:blur(6px);transform:translateY(-6px)"><div [...]
radial-gradient(200px circle at -200px -200px,
#5865F2,
#7B2FBE,
@@ -32,7 +32,7 @@ app.run(halt_after=["chat"],
inputs={"llm_client": client})<
) border-box"><div class="bg-background absolute inset-px z-20
rounded-[inherit] overflow-hidden"></div><div class="pointer-events-none
absolute inset-px z-30 rounded-[inherit] overflow-hidden opacity-0
transition-opacity duration-300 group-hover:opacity-100"
style="opacity:0.12;background:radial-gradient(200px circle at -200px -200px,
#262626,
transparent 100%
- )"></div><div class="relative z-40 h-full"><div class="flex
flex-col items-center gap-3 p-6 min-h-[160px]"><div class="inline-flex
items-center justify-center rounded-xl p-3 bg-[var(--card-border)]/30"><svg
xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" class="lucide lucide-github h-6 w-6"><path d="M15
22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1. [...]
+ )"></div><div class="relative z-40 h-full"><div class="flex
flex-col items-center gap-3 p-6 min-h-[160px]"><div class="inline-flex
items-center justify-center rounded-xl p-3 bg-[var(--card-border)]/30"><svg
xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" class="lucide lucide-github h-6 w-6"><path d="M15
22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1. [...]
radial-gradient(200px circle at -200px -200px,
#1DA1F2,
#7B2FBE,
@@ -40,4 +40,4 @@ app.run(halt_after=["chat"],
inputs={"llm_client": client})<
) border-box"><div class="bg-background absolute inset-px z-20
rounded-[inherit] overflow-hidden"></div><div class="pointer-events-none
absolute inset-px z-30 rounded-[inherit] overflow-hidden opacity-0
transition-opacity duration-300 group-hover:opacity-100"
style="opacity:0.12;background:radial-gradient(200px circle at -200px -200px,
#262626,
transparent 100%
- )"></div><div class="relative z-40 h-full"><div class="flex
flex-col items-center gap-3 p-6 min-h-[160px]"><div class="inline-flex
items-center justify-center rounded-xl p-3 bg-[var(--card-border)]/30"><svg
xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" class="lucide lucide-twitter h-6 w-6"><path d="M22
4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2. [...]
\ No newline at end of file
+ )"></div><div class="relative z-40 h-full"><div class="flex
flex-col items-center gap-3 p-6 min-h-[160px]"><div class="inline-flex
items-center justify-center rounded-xl p-3 bg-[var(--card-border)]/30"><svg
xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" class="lucide lucide-twitter h-6 w-6"><path d="M22
4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2. [...]
\ No newline at end of file
diff --git a/content/index.txt b/content/index.txt
index 08bfa14b..74f78914 100644
--- a/content/index.txt
+++ b/content/index.txt
@@ -2,23 +2,23 @@
2:I[63479,["7177","static/chunks/app/layout-3c8f4d75951c8a87.js"],"ThemeProvider"]
3:I[9766,[],""]
4:I[98924,[],""]
-5:I[65923,["8734","static/chunks/8734-f0efcfa0d7c14bb2.js","8974","static/chunks/app/page-32023295eeac99ea.js"],"default"]
-6:I[12843,["8734","static/chunks/8734-f0efcfa0d7c14bb2.js","8974","static/chunks/app/page-32023295eeac99ea.js"],"default"]
-7:I[15666,["8734","static/chunks/8734-f0efcfa0d7c14bb2.js","8974","static/chunks/app/page-32023295eeac99ea.js"],"default"]
-8:I[41948,["8734","static/chunks/8734-f0efcfa0d7c14bb2.js","8974","static/chunks/app/page-32023295eeac99ea.js"],"default"]
-9:I[40200,["8734","static/chunks/8734-f0efcfa0d7c14bb2.js","8974","static/chunks/app/page-32023295eeac99ea.js"],"default"]
-a:I[23469,["8734","static/chunks/8734-f0efcfa0d7c14bb2.js","8974","static/chunks/app/page-32023295eeac99ea.js"],"default"]
-b:I[23859,["8734","static/chunks/8734-f0efcfa0d7c14bb2.js","8974","static/chunks/app/page-32023295eeac99ea.js"],"default"]
+5:I[65923,["8734","static/chunks/8734-f0efcfa0d7c14bb2.js","8974","static/chunks/app/page-1b05dad031cc325b.js"],"default"]
+6:I[12843,["8734","static/chunks/8734-f0efcfa0d7c14bb2.js","8974","static/chunks/app/page-1b05dad031cc325b.js"],"default"]
+7:I[15666,["8734","static/chunks/8734-f0efcfa0d7c14bb2.js","8974","static/chunks/app/page-1b05dad031cc325b.js"],"default"]
+8:I[41948,["8734","static/chunks/8734-f0efcfa0d7c14bb2.js","8974","static/chunks/app/page-1b05dad031cc325b.js"],"default"]
+9:I[40200,["8734","static/chunks/8734-f0efcfa0d7c14bb2.js","8974","static/chunks/app/page-1b05dad031cc325b.js"],"default"]
+a:I[23469,["8734","static/chunks/8734-f0efcfa0d7c14bb2.js","8974","static/chunks/app/page-1b05dad031cc325b.js"],"default"]
+b:I[23859,["8734","static/chunks/8734-f0efcfa0d7c14bb2.js","8974","static/chunks/app/page-1b05dad031cc325b.js"],"default"]
11:I[57150,[],""]
:HL["/_next/static/media/4cf2300e9c8272f7-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
-:HL["/_next/static/css/4ab741c5bfda45f1.css","style"]
-0:{"P":null,"b":"nNdRCaWdBG1I0YGKjsytu","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/4ab741c5bfda45f1.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"className":"font-sans
__variable_188709","children":[["$","head",null,{"children":[["$","link",null,{"
[...]
+:HL["/_next/static/css/e679120205939015.css","style"]
+0:{"P":null,"b":"6GCeixI9OBevhia05er6q","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/e679120205939015.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"className":"font-sans
__variable_188709","children":[["$","head",null,{"children":[["$","link",null,{"
[...]
12:I[24431,[],"OutletBoundary"]
14:I[15278,[],"AsyncMetadataOutlet"]
16:I[24431,[],"ViewportBoundary"]
18:I[24431,[],"MetadataBoundary"]
19:"$Sreact.suspense"
-c:["$","div","Community",{"children":[["$","h3",null,{"className":"text-sm
font-semibold
mb-4","children":"Community"}],["$","ul",null,{"className":"space-y-2.5","children":[["$","li","Discord",{"children":["$","a",null,{"href":"https://discord.gg/6Zy2DwP4f3","target":"_blank","rel":"noopener
noreferrer","className":"text-sm text-[var(--muted)] hover:text-[var(--text)]
transition-colors","children":"Discord"}]}],["$","li","GitHub",{"children":["$","a",null,{"href":"https://github.com/apa
[...]
+c:["$","div","Community",{"children":[["$","h3",null,{"className":"text-sm
font-semibold
mb-4","children":"Community"}],["$","ul",null,{"className":"space-y-2.5","children":[["$","li","Discord",{"children":["$","a",null,{"href":"https://discord.gg/6Zy2DwP4f3","target":"_blank","rel":"noopener
noreferrer","className":"text-sm text-[var(--muted)] hover:text-[var(--text)]
transition-colors","children":"Discord"}]}],["$","li","GitHub",{"children":["$","a",null,{"href":"https://github.com/apa
[...]
d:["$","div","Apache",{"children":[["$","h3",null,{"className":"text-sm
font-semibold
mb-4","children":"Apache"}],["$","ul",null,{"className":"space-y-2.5","children":[["$","li","Apache
Homepage",{"children":["$","a",null,{"href":"https://www.apache.org/","target":"_blank","rel":"noopener
noreferrer","className":"text-sm text-[var(--muted)] hover:text-[var(--text)]
transition-colors","children":"Apache
Homepage"}]}],["$","li","Incubator",{"children":["$","a",null,{"href":"https://incubat
[...]
e:["$","div",null,{"className":"border-t border-[var(--card-border)]
pt-8","children":[["$","div",null,{"className":"flex flex-col sm:flex-row
items-start sm:items-center justify-between
gap-4","children":["$","div",null,{"className":"flex items-center
gap-3","children":[["$","img",null,{"src":"/burr_logo.svg","alt":"Apache
Burr","className":"h-6 w-6 opacity-60"}],["$","span",null,{"className":"text-sm
text-[var(--muted)]","children":["© ",2026," The Apache Software
Foundation"]}]]}]}],[ [...]
f:["$","$L12",null,{"children":["$L13",["$","$L14",null,{"promise":"$@15"}]]}]
diff --git a/content/logos/taskhuman.svg b/content/logos/taskhuman.svg
new file mode 100644
index 00000000..4831a2ed
--- /dev/null
+++ b/content/logos/taskhuman.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 56" fill="none">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M15.6558 43.0155L5.98378
47.2569C5.27261 47.5824 4.50143 47.7561 3.7194 47.767C3.15959 47.7716 2.60496
47.6597 2.09069 47.4385C1.58062 47.2167 1.13281 46.873 0.786541
46.4377C0.557469 46.1465 0.37676 45.8203 0.251355 45.4717C0.0802762 45.0033
-0.00482117 44.5078 0.000177577 44.0091V13.326C0.0047203 12.8026 0.0820902
12.2824 0.230082 11.7803C0.379229 11.2715 0.583326 10.7805 0.838711
10.3158C1.36738 9.35741 2.06971 8.5057 2.90988 7.80415C3. [...]
+</svg>