arborist/docs/_source/_build/html/api/substrate.html
russell@unturf.com 49607a5997
docs: add Sphinx API reference generation from docstrings
Implements Read the Docs infrastructure to generate API documentation
directly from code docstrings. Replaces static modules.md (1200+ lines).

New structure:
- docs/_source/conf.py — Sphinx configuration (furo theme)
- docs/_source/index.rst — Main TOC
- docs/_source/api/*.rst — Module groups (substrate, storage, retrieval,
  qa, distill, mesh, cli)
- docs/_source/Makefile — Local build targets
- docs/_source/README.md — Documentation on building and extending

Makefile integration:
- make docs-api — generate HTML (output: docs/_source/_build/html/)
- make docs-api-clean — remove build artifacts

Build output (40 HTML files):
- API module reference with docstrings
- Source code links (:viewcode: extension)
- Full-text search index
- Module index (genindex, py-modindex)

Sphinx installed in venv as dev dependency. HTML is browseable at
docs/_source/_build/html/index.html (open in browser after build).

This justifies the deletion of modules.md: code docstrings + Sphinx
autodoc = automatically-generated, always-current API reference.
2026-05-04 07:55:34 -04:00

866 lines
No EOL
76 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html class="no-js" lang="en" data-content_root="../">
<head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="index" title="Index" href="../genindex.html"><link rel="search" title="Search" href="../search.html"><link rel="next" title="Storage: SQLite schema and audit" href="storage.html"><link rel="prev" title="Aborist API Reference" href="../index.html">
<!-- Generated with Sphinx 9.1.0 and Furo 2025.12.19 -->
<title>Substrate: Core data structures - Aborist API Reference</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=d111a655" />
<link rel="stylesheet" type="text/css" href="../_static/styles/furo.css?v=7bdb33bb" />
<link rel="stylesheet" type="text/css" href="../_static/styles/furo-extensions.css?v=8dab3a3b" />
<style>
body {
--color-code-background: #f2f2f2;
--color-code-foreground: #1e1e1e;
}
@media not print {
body[data-theme="dark"] {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
}
}
</style></head>
<body>
<script>
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
</script>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="svg-toc" viewBox="0 0 24 24">
<title>Contents</title>
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
</svg>
</symbol>
<symbol id="svg-menu" viewBox="0 0 24 24">
<title>Menu</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</symbol>
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
<title>Expand</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</symbol>
<symbol id="svg-sun" viewBox="0 0 24 24">
<title>Light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</symbol>
<symbol id="svg-moon" viewBox="0 0 24 24">
<title>Dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
</svg>
</symbol>
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
<title>Auto light/dark, in light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
<circle cx="14.5" cy="9.55" r="3.6"/>
</svg>
</symbol>
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
<title>Auto light/dark, in dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
</svg>
</symbol>
<symbol id="svg-pencil" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
<path d="M13.5 6.5l4 4" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
<symbol id="svg-eye" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
</svg>
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation" aria-label="Toggle site navigation sidebar">
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc" aria-label="Toggle table of contents sidebar">
<label class="overlay sidebar-overlay" for="__navigation"></label>
<label class="overlay toc-overlay" for="__toc"></label>
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
<div class="page">
<header class="mobile-header">
<div class="header-left">
<label class="nav-overlay-icon" for="__navigation">
<span class="icon"><svg><use href="#svg-menu"></use></svg></span>
</label>
</div>
<div class="header-center">
<a href="../index.html"><div class="brand">Aborist API Reference</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
</header>
<aside class="sidebar-drawer">
<div class="sidebar-container">
<div class="sidebar-sticky"><div class="sidebar-tree">
<p class="caption" role="heading"><span class="caption-text">API Modules</span></p>
<ul class="current">
<li class="toctree-l1 current current-page"><a class="current reference internal" href="#">Substrate: Core data structures</a></li>
<li class="toctree-l1"><a class="reference internal" href="storage.html">Storage: SQLite schema and audit</a></li>
<li class="toctree-l1"><a class="reference internal" href="retrieval.html">Retrieval: FTS5 search and concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="qa.html">Q&amp;A Pipeline: question → answer → verify → cache</a></li>
<li class="toctree-l1"><a class="reference internal" href="distill.html">Distillation: surface → core compression</a></li>
<li class="toctree-l1"><a class="reference internal" href="mesh.html">Federation: multiplayer aborist</a></li>
<li class="toctree-l1"><a class="reference internal" href="cli.html">CLI: Command-line interface</a></li>
</ul>
</div>
</div>
</div>
</aside>
<div class="main">
<div class="content">
<div class="article-container">
<a href="#" class="back-to-top muted-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
</svg>
<span>Back to top</span>
</a>
<div class="content-icon-container">
<div class="view-this-page">
<a class="muted-link" href="../_sources/api/substrate.rst.txt" title="View this page">
<svg><use href="#svg-eye"></use></svg>
<span class="visually-hidden">View this page</span>
</a>
</div>
<div class="theme-toggle-container theme-toggle-content">
<button class="theme-toggle" aria-label="Toggle Light / Dark / Auto color theme">
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="substrate-core-data-structures">
<h1>Substrate: Core data structures<a class="headerlink" href="#substrate-core-data-structures" title="Link to this heading"></a></h1>
<p>Pure Merkle tree and document primitives.</p>
<section id="module-aborist.merkle">
<span id="merkle"></span><h2>merkle<a class="headerlink" href="#module-aborist.merkle" title="Link to this heading"></a></h2>
<p>Merkle tree with non-commutative HashCombine.</p>
<p>Python port of ~/git/proxy.unturf.com/pkg/verified/merkle.go conventions:</p>
<ul class="simple">
<li><p>Domain separation via single-byte prefixes (leaf=0x00, node=0x03).</p></li>
<li><p>HashCombine is non-commutative; sibling order matters always.</p></li>
<li><p>Odd layers self-duplicate the trailing element (NOT zero-pad).</p></li>
<li><p>Proof carries explicit IsLeft flag per sibling (NOT lexical sort).</p></li>
<li><p>Empty tree root is ZeroHash (32 zero bytes).</p></li>
</ul>
<dl class="py function">
<dt class="sig sig-object py" id="aborist.merkle.hash_leaf">
<span class="sig-prename descclassname"><span class="pre">aborist.merkle.</span></span><span class="sig-name descname"><span class="pre">hash_leaf</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">content</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/merkle.html#hash_leaf"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.merkle.hash_leaf" title="Link to this definition"></a></dt>
<dd><p>Hash a leaf with domain prefix 0x00.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>content</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)"><em>bytes</em></a>)</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)">bytes</a></p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="aborist.merkle.hash_combine">
<span class="sig-prename descclassname"><span class="pre">aborist.merkle.</span></span><span class="sig-name descname"><span class="pre">hash_combine</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">left</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">right</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/merkle.html#hash_combine"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.merkle.hash_combine" title="Link to this definition"></a></dt>
<dd><p>Non-commutative interior combine with domain prefix 0x03.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>left</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)"><em>bytes</em></a>)</p></li>
<li><p><strong>right</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)"><em>bytes</em></a>)</p></li>
</ul>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)">bytes</a></p>
</dd>
</dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="aborist.merkle.ProofNode">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">aborist.merkle.</span></span><span class="sig-name descname"><span class="pre">ProofNode</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">hash</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_left</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/merkle.html#ProofNode"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.merkle.ProofNode" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.14)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<p>One sibling step in a Merkle inclusion proof.</p>
<p>is_left=True means the sibling sits to the LEFT of the running hash,
so verification order is: HashCombine(sibling, current).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>hash</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)"><em>bytes</em></a>)</p></li>
<li><p><strong>is_left</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.14)"><em>bool</em></a>)</p></li>
</ul>
</dd>
</dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.merkle.ProofNode.hash">
<span class="sig-name descname"><span class="pre">hash</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)"><span class="pre">bytes</span></a></span><a class="headerlink" href="#aborist.merkle.ProofNode.hash" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.merkle.ProofNode.is_left">
<span class="sig-name descname"><span class="pre">is_left</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.14)"><span class="pre">bool</span></a></span><a class="headerlink" href="#aborist.merkle.ProofNode.is_left" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="aborist.merkle.MerkleProof">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">aborist.merkle.</span></span><span class="sig-name descname"><span class="pre">MerkleProof</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">leaf</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">leaf_index</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">siblings</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">root</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/merkle.html#MerkleProof"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.merkle.MerkleProof" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.14)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<p>Merkle inclusion proof: leaf + index + sibling path to root.</p>
<p>Proves that a leaf at leaf_index exists in a tree with the given root.
verify_proof() recomputes the root by combining the leaf with siblings.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>leaf</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)"><em>bytes</em></a>)</p></li>
<li><p><strong>leaf_index</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.14)"><em>int</em></a>)</p></li>
<li><p><strong>siblings</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#tuple" title="(in Python v3.14)"><em>tuple</em></a><em>[</em><a class="reference internal" href="#aborist.merkle.ProofNode" title="aborist.merkle.ProofNode"><em>ProofNode</em></a><em>, </em><em>...</em><em>]</em>)</p></li>
<li><p><strong>root</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)"><em>bytes</em></a>)</p></li>
</ul>
</dd>
</dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.merkle.MerkleProof.leaf">
<span class="sig-name descname"><span class="pre">leaf</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)"><span class="pre">bytes</span></a></span><a class="headerlink" href="#aborist.merkle.MerkleProof.leaf" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.merkle.MerkleProof.leaf_index">
<span class="sig-name descname"><span class="pre">leaf_index</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.14)"><span class="pre">int</span></a></span><a class="headerlink" href="#aborist.merkle.MerkleProof.leaf_index" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.merkle.MerkleProof.siblings">
<span class="sig-name descname"><span class="pre">siblings</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#tuple" title="(in Python v3.14)"><span class="pre">tuple</span></a><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#aborist.merkle.ProofNode" title="aborist.merkle.ProofNode"><span class="pre">ProofNode</span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span></span><a class="headerlink" href="#aborist.merkle.MerkleProof.siblings" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.merkle.MerkleProof.root">
<span class="sig-name descname"><span class="pre">root</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)"><span class="pre">bytes</span></a></span><a class="headerlink" href="#aborist.merkle.MerkleProof.root" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="aborist.merkle.MerkleTree">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">aborist.merkle.</span></span><span class="sig-name descname"><span class="pre">MerkleTree</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">layers</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">&lt;factory&gt;</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/merkle.html#MerkleTree"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.merkle.MerkleTree" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.14)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<p>Layered tree. layers[0] = leaves, layers[-1] = [root].</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>layers</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#list" title="(in Python v3.14)"><em>list</em></a><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#list" title="(in Python v3.14)"><em>list</em></a><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)"><em>bytes</em></a><em>]</em><em>]</em>)</p>
</dd>
</dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.merkle.MerkleTree.layers">
<span class="sig-name descname"><span class="pre">layers</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#list" title="(in Python v3.14)"><span class="pre">list</span></a><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#list" title="(in Python v3.14)"><span class="pre">list</span></a><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)"><span class="pre">bytes</span></a><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><a class="headerlink" href="#aborist.merkle.MerkleTree.layers" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="aborist.merkle.MerkleTree.root">
<span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">root</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)"><span class="pre">bytes</span></a></span><a class="headerlink" href="#aborist.merkle.MerkleTree.root" title="Link to this definition"></a></dt>
<dd><p>Root hash of the tree (topmost layer). Empty tree → ZERO_HASH.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="aborist.merkle.MerkleTree.leaves">
<span class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">leaves</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#list" title="(in Python v3.14)"><span class="pre">list</span></a><span class="p"><span class="pre">[</span></span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)"><span class="pre">bytes</span></a><span class="p"><span class="pre">]</span></span></span><a class="headerlink" href="#aborist.merkle.MerkleTree.leaves" title="Link to this definition"></a></dt>
<dd><p>Leaf hashes in input order (bottom layer of tree).</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="aborist.merkle.MerkleTree.build">
<span class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">build</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">leaves</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/merkle.html#MerkleTree.build"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.merkle.MerkleTree.build" title="Link to this definition"></a></dt>
<dd><p>Build tree from leaf hashes. Applies odd-element self-duplication.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>leaves</strong> (<a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.Iterable" title="(in Python v3.14)"><em>Iterable</em></a><em>[</em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#bytes" title="(in Python v3.14)"><em>bytes</em></a><em>]</em>)</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="#aborist.merkle.MerkleTree" title="aborist.merkle.MerkleTree"><em>MerkleTree</em></a></p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="aborist.merkle.MerkleTree.proof">
<span class="sig-name descname"><span class="pre">proof</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">leaf_index</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/merkle.html#MerkleTree.proof"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.merkle.MerkleTree.proof" title="Link to this definition"></a></dt>
<dd><p>Generate inclusion proof for the leaf at leaf_index.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>leaf_index</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.14)"><em>int</em></a>)</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="#aborist.merkle.MerkleProof" title="aborist.merkle.MerkleProof"><em>MerkleProof</em></a></p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="aborist.merkle.verify_proof">
<span class="sig-prename descclassname"><span class="pre">aborist.merkle.</span></span><span class="sig-name descname"><span class="pre">verify_proof</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">proof</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/merkle.html#verify_proof"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.merkle.verify_proof" title="Link to this definition"></a></dt>
<dd><p>Recompute root from leaf + sibling path. Returns True iff matches.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>proof</strong> (<a class="reference internal" href="#aborist.merkle.MerkleProof" title="aborist.merkle.MerkleProof"><em>MerkleProof</em></a>)</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.14)">bool</a></p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="aborist.merkle.proof_to_dict">
<span class="sig-prename descclassname"><span class="pre">aborist.merkle.</span></span><span class="sig-name descname"><span class="pre">proof_to_dict</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">proof</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/merkle.html#proof_to_dict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.merkle.proof_to_dict" title="Link to this definition"></a></dt>
<dd><p>JSON-serializable form for storage in providence_cache.merkle_proof.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>proof</strong> (<a class="reference internal" href="#aborist.merkle.MerkleProof" title="aborist.merkle.MerkleProof"><em>MerkleProof</em></a>)</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#dict" title="(in Python v3.14)">dict</a></p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="aborist.merkle.proof_from_dict">
<span class="sig-prename descclassname"><span class="pre">aborist.merkle.</span></span><span class="sig-name descname"><span class="pre">proof_from_dict</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">d</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/merkle.html#proof_from_dict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.merkle.proof_from_dict" title="Link to this definition"></a></dt>
<dd><p>Deserialize a proof from JSON dict (inverse of proof_to_dict).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>d</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#dict" title="(in Python v3.14)"><em>dict</em></a>)</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="#aborist.merkle.MerkleProof" title="aborist.merkle.MerkleProof"><em>MerkleProof</em></a></p>
</dd>
</dl>
</dd></dl>
</section>
<section id="module-aborist.document">
<span id="document"></span><h2>document<a class="headerlink" href="#module-aborist.document" title="Link to this heading"></a></h2>
<p>Document and Chunk dataclasses + canonical chunkers.</p>
<p>Every Document carries a URI (identification, backtrack, cross-link) and content.
Chunkers split content into byte-determined chunks before Merkle hashing. The
chunkers name is committed in chunking_version — changing chunker invalidates
all prior cache records under v9.8 admissibility.</p>
<dl class="py class">
<dt class="sig sig-object py" id="aborist.document.Edge">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">aborist.document.</span></span><span class="sig-name descname"><span class="pre">Edge</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">edge_type</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dst_uri</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dst_root</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">anchor</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/document.html#Edge"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.document.Edge" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.14)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<p>A cross-link from this document to another.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>edge_type</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a>)</p></li>
<li><p><strong>dst_uri</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a>)</p></li>
<li><p><strong>dst_root</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a><em> | </em><em>None</em>)</p></li>
<li><p><strong>anchor</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a><em> | </em><em>None</em>)</p></li>
</ul>
</dd>
</dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.document.Edge.edge_type">
<span class="sig-name descname"><span class="pre">edge_type</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><span class="pre">str</span></a></span><a class="headerlink" href="#aborist.document.Edge.edge_type" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.document.Edge.dst_uri">
<span class="sig-name descname"><span class="pre">dst_uri</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><span class="pre">str</span></a></span><a class="headerlink" href="#aborist.document.Edge.dst_uri" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.document.Edge.dst_root">
<span class="sig-name descname"><span class="pre">dst_root</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><span class="pre">str</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.14)"><span class="pre">None</span></a></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#aborist.document.Edge.dst_root" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.document.Edge.anchor">
<span class="sig-name descname"><span class="pre">anchor</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><span class="pre">str</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.14)"><span class="pre">None</span></a></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#aborist.document.Edge.anchor" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="aborist.document.Document">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">aborist.document.</span></span><span class="sig-name descname"><span class="pre">Document</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">uri</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">content</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source_type</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">title</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">edges</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">&lt;factory&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extra</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">&lt;factory&gt;</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/document.html#Document"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.document.Document" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.14)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<p>An ingestable document: URI + content + outbound edges.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>uri</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a>)</p></li>
<li><p><strong>content</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a>)</p></li>
<li><p><strong>source_type</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a>)</p></li>
<li><p><strong>title</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a><em> | </em><em>None</em>)</p></li>
<li><p><strong>edges</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#list" title="(in Python v3.14)"><em>list</em></a><em>[</em><a class="reference internal" href="#aborist.document.Edge" title="aborist.document.Edge"><em>Edge</em></a><em>]</em>)</p></li>
<li><p><strong>extra</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#dict" title="(in Python v3.14)"><em>dict</em></a>)</p></li>
</ul>
</dd>
</dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.document.Document.uri">
<span class="sig-name descname"><span class="pre">uri</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><span class="pre">str</span></a></span><a class="headerlink" href="#aborist.document.Document.uri" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.document.Document.content">
<span class="sig-name descname"><span class="pre">content</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><span class="pre">str</span></a></span><a class="headerlink" href="#aborist.document.Document.content" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.document.Document.source_type">
<span class="sig-name descname"><span class="pre">source_type</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><span class="pre">str</span></a></span><a class="headerlink" href="#aborist.document.Document.source_type" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.document.Document.title">
<span class="sig-name descname"><span class="pre">title</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><span class="pre">str</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.14)"><span class="pre">None</span></a></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></span><a class="headerlink" href="#aborist.document.Document.title" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.document.Document.edges">
<span class="sig-name descname"><span class="pre">edges</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#list" title="(in Python v3.14)"><span class="pre">list</span></a><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#aborist.document.Edge" title="aborist.document.Edge"><span class="pre">Edge</span></a><span class="p"><span class="pre">]</span></span></span><a class="headerlink" href="#aborist.document.Document.edges" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.document.Document.extra">
<span class="sig-name descname"><span class="pre">extra</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#dict" title="(in Python v3.14)"><span class="pre">dict</span></a></span><a class="headerlink" href="#aborist.document.Document.extra" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="aborist.document.canonicalize">
<span class="sig-prename descclassname"><span class="pre">aborist.document.</span></span><span class="sig-name descname"><span class="pre">canonicalize</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/document.html#canonicalize"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.document.canonicalize" title="Link to this definition"></a></dt>
<dd><p>Stable text normalization. Bumping this requires CANONICALIZATION_VERSION bump.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>text</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a>)</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)">str</a></p>
</dd>
</dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="aborist.document.Chunker">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">aborist.document.</span></span><span class="sig-name descname"><span class="pre">Chunker</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/document.html#Chunker"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.document.Chunker" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/typing.html#typing.Protocol" title="(in Python v3.14)"><code class="xref py py-class docutils literal notranslate"><span class="pre">Protocol</span></code></a></p>
<p>A chunker splits canonicalized text into ordered chunks.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.document.Chunker.name">
<span class="sig-name descname"><span class="pre">name</span></span><span class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><span class="pre">str</span></a></span><a class="headerlink" href="#aborist.document.Chunker.name" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="aborist.document.Chunker.split">
<span class="sig-name descname"><span class="pre">split</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/document.html#Chunker.split"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.document.Chunker.split" title="Link to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>text</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a>)</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#list" title="(in Python v3.14)">list</a>[<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)">str</a>]</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="aborist.document.TokenChunker">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">aborist.document.</span></span><span class="sig-name descname"><span class="pre">TokenChunker</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tokens_per_chunk</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">512</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/document.html#TokenChunker"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.document.TokenChunker" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.14)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<p>512-token chunker (whitespace-tokenized, byte-deterministic).</p>
<p>“Token” here means whitespace-separated unit, NOT a model BPE token. This
avoids tokenizer-version drift in the chunking_version.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>tokens_per_chunk</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.14)"><em>int</em></a>)</p>
</dd>
</dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.document.TokenChunker.name">
<span class="sig-name descname"><span class="pre">name</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'tok-512-v1'</span></span><a class="headerlink" href="#aborist.document.TokenChunker.name" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="aborist.document.TokenChunker.split">
<span class="sig-name descname"><span class="pre">split</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/document.html#TokenChunker.split"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.document.TokenChunker.split" title="Link to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>text</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a>)</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#list" title="(in Python v3.14)">list</a>[<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)">str</a>]</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="aborist.document.SentenceChunker">
<span class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></span><span class="sig-prename descclassname"><span class="pre">aborist.document.</span></span><span class="sig-name descname"><span class="pre">SentenceChunker</span></span><a class="reference internal" href="../_modules/aborist/document.html#SentenceChunker"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.document.SentenceChunker" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.14)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<p>Sentence-aligned chunker (better for short docs like 2003 Wikipedia).</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="aborist.document.SentenceChunker.name">
<span class="sig-name descname"><span class="pre">name</span></span><span class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'sent-v1'</span></span><a class="headerlink" href="#aborist.document.SentenceChunker.name" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="aborist.document.SentenceChunker.split">
<span class="sig-name descname"><span class="pre">split</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">text</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/document.html#SentenceChunker.split"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.document.SentenceChunker.split" title="Link to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>text</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a>)</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#list" title="(in Python v3.14)">list</a>[<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)">str</a>]</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="aborist.document.get_chunker">
<span class="sig-prename descclassname"><span class="pre">aborist.document.</span></span><span class="sig-name descname"><span class="pre">get_chunker</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/document.html#get_chunker"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.document.get_chunker" title="Link to this definition"></a></dt>
<dd><p>Lookup chunker by name. Default = TokenChunker.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>name</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a><em> | </em><em>None</em>)</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="#aborist.document.Chunker" title="aborist.document.Chunker"><em>Chunker</em></a></p>
</dd>
</dl>
</dd></dl>
</section>
<section id="module-aborist.wikitext">
<span id="wikitext"></span><h2>wikitext<a class="headerlink" href="#module-aborist.wikitext" title="Link to this heading"></a></h2>
<p>Wikitext → base prose conversion.</p>
<p>Aborist stores raw MediaWiki wikitext in <code class="docutils literal notranslate"><span class="pre">chunks.content</span></code> so the link
graph and original markup are recoverable from any page on demand. For
LLM context and post-LLM faithfulness verification we need <em>prose</em> — a
deterministic plain-text projection of the same chunk.</p>
<p>This module provides that projection. <code class="docutils literal notranslate"><span class="pre">to_base(raw)</span></code> is a pure function
of its input plus <code class="docutils literal notranslate"><span class="pre">BASE_VERSION</span></code>: same wikitext → same prose, forever,
as long as <code class="docutils literal notranslate"><span class="pre">BASE_VERSION</span></code> is unchanged.</p>
<section id="versioning-protocol">
<h3>Versioning protocol<a class="headerlink" href="#versioning-protocol" title="Link to this heading"></a></h3>
<p>Bump <code class="docutils literal notranslate"><span class="pre">BASE_VERSION</span></code> whenever the algorithm changes. Callers fold
<code class="docutils literal notranslate"><span class="pre">BASE_VERSION</span></code> into <code class="docutils literal notranslate"><span class="pre">governance_policy_hash</span></code> (via <code class="docutils literal notranslate"><span class="pre">policy[&quot;base_version&quot;]</span></code>
in <code class="docutils literal notranslate"><span class="pre">aborist.qa.runner</span></code> / <code class="docutils literal notranslate"><span class="pre">aborist.qa.query</span></code>) so a bump invalidates every
prior providence-cache records 8-dim cache_key on the next lookup. No
schema migration; the next <code class="docutils literal notranslate"><span class="pre">ask</span></code> re-derives against fresh prose.</p>
</section>
<section id="algorithm-wikitext-base-v1">
<h3>Algorithm (wikitext-base-v1)<a class="headerlink" href="#algorithm-wikitext-base-v1" title="Link to this heading"></a></h3>
<ol class="arabic simple">
<li><p>Parse with <code class="docutils literal notranslate"><span class="pre">mwparserfromhell</span></code> (handles nested templates, complex
tables, and edge cases that pure regex mangles).</p></li>
<li><p>Drop <code class="docutils literal notranslate"><span class="pre">&lt;ref&gt;...&lt;/ref&gt;</span></code> and self-closing <code class="docutils literal notranslate"><span class="pre">&lt;ref</span> <span class="pre">...</span> <span class="pre">/&gt;</span></code> tags. Citations
are not quotable claims about the topic.</p></li>
<li><p>Drop namespace-prefixed wikilinks: <code class="docutils literal notranslate"><span class="pre">[[File:...]]</span></code>, <code class="docutils literal notranslate"><span class="pre">[[Image:...]]</span></code>,
<code class="docutils literal notranslate"><span class="pre">[[Category:...]]</span></code>. Image params (<code class="docutils literal notranslate"><span class="pre">thumb|250px|...</span></code>) and category
tags are not prose; theyre metadata.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">strip_code(normalize=True,</span> <span class="pre">collapse=True)</span></code> — converts surviving
templates to empty, wikilinks to their display text, headers to bare
text, bold/italic markers to plain text, HTML tags to inner text,
HTML entities to characters, external links to anchor text.</p></li>
<li><p>Whitespace pass: collapse runs of spaces/tabs, drop trailing space on
lines, collapse 3+ newlines to 2.</p></li>
</ol>
<p>Optional dependency. Install with <code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">aborist[wikitext]</span></code>.</p>
</section>
<dl class="py function">
<dt class="sig sig-object py" id="aborist.wikitext.to_base">
<span class="sig-prename descclassname"><span class="pre">aborist.wikitext.</span></span><span class="sig-name descname"><span class="pre">to_base</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">raw</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/wikitext.html#to_base"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.wikitext.to_base" title="Link to this definition"></a></dt>
<dd><p>Convert raw wikitext to base prose. Deterministic. Idempotent.</p>
<p>Empty / whitespace-only input returns <code class="docutils literal notranslate"><span class="pre">&quot;&quot;</span></code>. Non-wikitext input
(already-clean prose) round-trips unchanged modulo whitespace
collapsing.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>raw</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a>)</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)">str</a></p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="aborist.wikitext.extract_wikilinks">
<span class="sig-prename descclassname"><span class="pre">aborist.wikitext.</span></span><span class="sig-name descname"><span class="pre">extract_wikilinks</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">raw</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/aborist/wikitext.html#extract_wikilinks"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#aborist.wikitext.extract_wikilinks" title="Link to this definition"></a></dt>
<dd><p>Return <code class="docutils literal notranslate"><span class="pre">(target,</span> <span class="pre">display)</span></code> for every wikilink in <code class="docutils literal notranslate"><span class="pre">raw</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">target</span></code> is the link target (page title) with any <code class="docutils literal notranslate"><span class="pre">#section</span></code>
fragment stripped. <code class="docutils literal notranslate"><span class="pre">display</span></code> is the visible text if the link uses
<code class="docutils literal notranslate"><span class="pre">[[Target|Display]]</span></code> form, else <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p>
<p>File / Image / Category namespace links are <em>included</em> — theyre the
very signal the link graph wants. This is the “definition cloud”
artifact: from any page, recover its full out-link set without
re-parsing wikitext at query time.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>raw</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)"><em>str</em></a>)</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#list" title="(in Python v3.14)">list</a>[<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#tuple" title="(in Python v3.14)">tuple</a>[<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)">str</a>, <a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.14)">str</a> | None]]</p>
</dd>
</dl>
</dd></dl>
</section>
</section>
</article>
</div>
<footer>
<div class="related-pages">
<a class="next-page" href="storage.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
<div class="title">Storage: SQLite schema and audit</div>
</div>
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
</a>
<a class="prev-page" href="../index.html">
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
<div class="title">Home</div>
</div>
</a>
</div>
<div class="bottom-of-page">
<div class="left-details">
<div class="copyright">
Copyright &#169; 2026, agent blackops
</div>
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
<a href="https://github.com/pradyunsg/furo">Furo</a>
</div>
<div class="right-details">
</div>
</div>
</footer>
</div>
<aside class="toc-drawer">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Substrate: Core data structures</a><ul>
<li><a class="reference internal" href="#module-aborist.merkle">merkle</a><ul>
<li><a class="reference internal" href="#aborist.merkle.hash_leaf"><code class="docutils literal notranslate"><span class="pre">hash_leaf()</span></code></a></li>
<li><a class="reference internal" href="#aborist.merkle.hash_combine"><code class="docutils literal notranslate"><span class="pre">hash_combine()</span></code></a></li>
<li><a class="reference internal" href="#aborist.merkle.ProofNode"><code class="docutils literal notranslate"><span class="pre">ProofNode</span></code></a><ul>
<li><a class="reference internal" href="#aborist.merkle.ProofNode.hash"><code class="docutils literal notranslate"><span class="pre">ProofNode.hash</span></code></a></li>
<li><a class="reference internal" href="#aborist.merkle.ProofNode.is_left"><code class="docutils literal notranslate"><span class="pre">ProofNode.is_left</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#aborist.merkle.MerkleProof"><code class="docutils literal notranslate"><span class="pre">MerkleProof</span></code></a><ul>
<li><a class="reference internal" href="#aborist.merkle.MerkleProof.leaf"><code class="docutils literal notranslate"><span class="pre">MerkleProof.leaf</span></code></a></li>
<li><a class="reference internal" href="#aborist.merkle.MerkleProof.leaf_index"><code class="docutils literal notranslate"><span class="pre">MerkleProof.leaf_index</span></code></a></li>
<li><a class="reference internal" href="#aborist.merkle.MerkleProof.siblings"><code class="docutils literal notranslate"><span class="pre">MerkleProof.siblings</span></code></a></li>
<li><a class="reference internal" href="#aborist.merkle.MerkleProof.root"><code class="docutils literal notranslate"><span class="pre">MerkleProof.root</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#aborist.merkle.MerkleTree"><code class="docutils literal notranslate"><span class="pre">MerkleTree</span></code></a><ul>
<li><a class="reference internal" href="#aborist.merkle.MerkleTree.layers"><code class="docutils literal notranslate"><span class="pre">MerkleTree.layers</span></code></a></li>
<li><a class="reference internal" href="#aborist.merkle.MerkleTree.root"><code class="docutils literal notranslate"><span class="pre">MerkleTree.root</span></code></a></li>
<li><a class="reference internal" href="#aborist.merkle.MerkleTree.leaves"><code class="docutils literal notranslate"><span class="pre">MerkleTree.leaves</span></code></a></li>
<li><a class="reference internal" href="#aborist.merkle.MerkleTree.build"><code class="docutils literal notranslate"><span class="pre">MerkleTree.build()</span></code></a></li>
<li><a class="reference internal" href="#aborist.merkle.MerkleTree.proof"><code class="docutils literal notranslate"><span class="pre">MerkleTree.proof()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#aborist.merkle.verify_proof"><code class="docutils literal notranslate"><span class="pre">verify_proof()</span></code></a></li>
<li><a class="reference internal" href="#aborist.merkle.proof_to_dict"><code class="docutils literal notranslate"><span class="pre">proof_to_dict()</span></code></a></li>
<li><a class="reference internal" href="#aborist.merkle.proof_from_dict"><code class="docutils literal notranslate"><span class="pre">proof_from_dict()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#module-aborist.document">document</a><ul>
<li><a class="reference internal" href="#aborist.document.Edge"><code class="docutils literal notranslate"><span class="pre">Edge</span></code></a><ul>
<li><a class="reference internal" href="#aborist.document.Edge.edge_type"><code class="docutils literal notranslate"><span class="pre">Edge.edge_type</span></code></a></li>
<li><a class="reference internal" href="#aborist.document.Edge.dst_uri"><code class="docutils literal notranslate"><span class="pre">Edge.dst_uri</span></code></a></li>
<li><a class="reference internal" href="#aborist.document.Edge.dst_root"><code class="docutils literal notranslate"><span class="pre">Edge.dst_root</span></code></a></li>
<li><a class="reference internal" href="#aborist.document.Edge.anchor"><code class="docutils literal notranslate"><span class="pre">Edge.anchor</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#aborist.document.Document"><code class="docutils literal notranslate"><span class="pre">Document</span></code></a><ul>
<li><a class="reference internal" href="#aborist.document.Document.uri"><code class="docutils literal notranslate"><span class="pre">Document.uri</span></code></a></li>
<li><a class="reference internal" href="#aborist.document.Document.content"><code class="docutils literal notranslate"><span class="pre">Document.content</span></code></a></li>
<li><a class="reference internal" href="#aborist.document.Document.source_type"><code class="docutils literal notranslate"><span class="pre">Document.source_type</span></code></a></li>
<li><a class="reference internal" href="#aborist.document.Document.title"><code class="docutils literal notranslate"><span class="pre">Document.title</span></code></a></li>
<li><a class="reference internal" href="#aborist.document.Document.edges"><code class="docutils literal notranslate"><span class="pre">Document.edges</span></code></a></li>
<li><a class="reference internal" href="#aborist.document.Document.extra"><code class="docutils literal notranslate"><span class="pre">Document.extra</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#aborist.document.canonicalize"><code class="docutils literal notranslate"><span class="pre">canonicalize()</span></code></a></li>
<li><a class="reference internal" href="#aborist.document.Chunker"><code class="docutils literal notranslate"><span class="pre">Chunker</span></code></a><ul>
<li><a class="reference internal" href="#aborist.document.Chunker.name"><code class="docutils literal notranslate"><span class="pre">Chunker.name</span></code></a></li>
<li><a class="reference internal" href="#aborist.document.Chunker.split"><code class="docutils literal notranslate"><span class="pre">Chunker.split()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#aborist.document.TokenChunker"><code class="docutils literal notranslate"><span class="pre">TokenChunker</span></code></a><ul>
<li><a class="reference internal" href="#aborist.document.TokenChunker.name"><code class="docutils literal notranslate"><span class="pre">TokenChunker.name</span></code></a></li>
<li><a class="reference internal" href="#aborist.document.TokenChunker.split"><code class="docutils literal notranslate"><span class="pre">TokenChunker.split()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#aborist.document.SentenceChunker"><code class="docutils literal notranslate"><span class="pre">SentenceChunker</span></code></a><ul>
<li><a class="reference internal" href="#aborist.document.SentenceChunker.name"><code class="docutils literal notranslate"><span class="pre">SentenceChunker.name</span></code></a></li>
<li><a class="reference internal" href="#aborist.document.SentenceChunker.split"><code class="docutils literal notranslate"><span class="pre">SentenceChunker.split()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#aborist.document.get_chunker"><code class="docutils literal notranslate"><span class="pre">get_chunker()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#module-aborist.wikitext">wikitext</a><ul>
<li><a class="reference internal" href="#versioning-protocol">Versioning protocol</a></li>
<li><a class="reference internal" href="#algorithm-wikitext-base-v1">Algorithm (wikitext-base-v1)</a></li>
<li><a class="reference internal" href="#aborist.wikitext.to_base"><code class="docutils literal notranslate"><span class="pre">to_base()</span></code></a></li>
<li><a class="reference internal" href="#aborist.wikitext.extract_wikilinks"><code class="docutils literal notranslate"><span class="pre">extract_wikilinks()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>
</div><script src="../_static/documentation_options.js?v=335b8a46"></script>
<script src="../_static/doctools.js?v=fd6eb6e6"></script>
<script src="../_static/sphinx_highlight.js?v=6ffebe34"></script>
<script src="../_static/scripts/furo.js?v=46bd48cc"></script>
</body>
</html>