You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by gi...@apache.org on 2023/11/07 17:11:36 UTC
(iceberg-python) 01/01: Publish Python docs
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch gh-pages
in repository https://gitbox.apache.org/repos/asf/iceberg-python.git
commit b07335bc518f0b01e4afb3169d2d513e559819ae
Author: GitHub Actions <ac...@github.com>
AuthorDate: Tue Nov 7 17:11:29 2023 +0000
Publish Python docs
---
404.html | 2095 +++++
CNAME | 1 +
SUMMARY/index.html | 2138 +++++
api/index.html | 2739 ++++++
assets/_mkdocstrings.css | 64 +
assets/images/favicon.png | Bin 0 -> 1870 bytes
assets/images/iceberg-logo-icon.png | Bin 0 -> 17608 bytes
assets/javascripts/bundle.dff1b7c8.min.js | 29 +
assets/javascripts/bundle.dff1b7c8.min.js.map | 8 +
assets/javascripts/lunr/min/lunr.ar.min.js | 1 +
assets/javascripts/lunr/min/lunr.da.min.js | 18 +
assets/javascripts/lunr/min/lunr.de.min.js | 18 +
assets/javascripts/lunr/min/lunr.du.min.js | 18 +
assets/javascripts/lunr/min/lunr.es.min.js | 18 +
assets/javascripts/lunr/min/lunr.fi.min.js | 18 +
assets/javascripts/lunr/min/lunr.fr.min.js | 18 +
assets/javascripts/lunr/min/lunr.he.min.js | 1 +
assets/javascripts/lunr/min/lunr.hi.min.js | 1 +
assets/javascripts/lunr/min/lunr.hu.min.js | 18 +
assets/javascripts/lunr/min/lunr.hy.min.js | 1 +
assets/javascripts/lunr/min/lunr.it.min.js | 18 +
assets/javascripts/lunr/min/lunr.ja.min.js | 1 +
assets/javascripts/lunr/min/lunr.jp.min.js | 1 +
assets/javascripts/lunr/min/lunr.kn.min.js | 1 +
assets/javascripts/lunr/min/lunr.ko.min.js | 1 +
assets/javascripts/lunr/min/lunr.multi.min.js | 1 +
assets/javascripts/lunr/min/lunr.nl.min.js | 18 +
assets/javascripts/lunr/min/lunr.no.min.js | 18 +
assets/javascripts/lunr/min/lunr.pt.min.js | 18 +
assets/javascripts/lunr/min/lunr.ro.min.js | 18 +
assets/javascripts/lunr/min/lunr.ru.min.js | 18 +
assets/javascripts/lunr/min/lunr.sa.min.js | 1 +
.../lunr/min/lunr.stemmer.support.min.js | 1 +
assets/javascripts/lunr/min/lunr.sv.min.js | 18 +
assets/javascripts/lunr/min/lunr.ta.min.js | 1 +
assets/javascripts/lunr/min/lunr.te.min.js | 1 +
assets/javascripts/lunr/min/lunr.th.min.js | 1 +
assets/javascripts/lunr/min/lunr.tr.min.js | 18 +
assets/javascripts/lunr/min/lunr.vi.min.js | 1 +
assets/javascripts/lunr/min/lunr.zh.min.js | 1 +
assets/javascripts/lunr/tinyseg.js | 206 +
assets/javascripts/lunr/wordcut.js | 6708 ++++++++++++++
assets/javascripts/workers/search.dfff1995.min.js | 42 +
.../javascripts/workers/search.dfff1995.min.js.map | 8 +
assets/stylesheets/main.046329b4.min.css | 1 +
assets/stylesheets/main.046329b4.min.css.map | 1 +
assets/stylesheets/palette.85d0ee34.min.css | 1 +
assets/stylesheets/palette.85d0ee34.min.css.map | 1 +
cli/index.html | 2337 +++++
configuration/index.html | 2688 ++++++
contributing/index.html | 2384 +++++
feature-support/index.html | 2356 +++++
how-to-release/index.html | 2397 +++++
index.html | 2277 +++++
objects.inv | Bin 0 -> 9088 bytes
reference/SUMMARY/index.html | 2180 +++++
reference/pyiceberg/avro/codecs/bzip2/index.html | 2214 +++++
reference/pyiceberg/avro/codecs/codec/index.html | 2295 +++++
reference/pyiceberg/avro/codecs/deflate/index.html | 2214 +++++
reference/pyiceberg/avro/codecs/index.html | 2177 +++++
.../pyiceberg/avro/codecs/snappy_codec/index.html | 2214 +++++
.../avro/codecs/zstandard_codec/index.html | 2214 +++++
reference/pyiceberg/avro/decoder/index.html | 3363 +++++++
reference/pyiceberg/avro/encoder/index.html | 2748 ++++++
reference/pyiceberg/avro/file/index.html | 3387 +++++++
reference/pyiceberg/avro/index.html | 2169 +++++
reference/pyiceberg/avro/reader/index.html | 3915 ++++++++
reference/pyiceberg/avro/resolver/index.html | 2877 ++++++
reference/pyiceberg/avro/writer/index.html | 3039 ++++++
reference/pyiceberg/catalog/dynamodb/index.html | 5359 +++++++++++
reference/pyiceberg/catalog/glue/index.html | 4910 ++++++++++
reference/pyiceberg/catalog/hive/index.html | 4791 ++++++++++
reference/pyiceberg/catalog/index.html | 5673 ++++++++++++
reference/pyiceberg/catalog/noop/index.html | 2552 +++++
reference/pyiceberg/catalog/rest/index.html | 3603 +++++++
reference/pyiceberg/catalog/sql/index.html | 5089 ++++++++++
reference/pyiceberg/cli/console/index.html | 3270 +++++++
reference/pyiceberg/cli/index.html | 2169 +++++
reference/pyiceberg/cli/output/index.html | 2769 ++++++
reference/pyiceberg/conversions/index.html | 2636 ++++++
reference/pyiceberg/exceptions/index.html | 3110 +++++++
reference/pyiceberg/expressions/index.html | 9247 ++++++++++++++++++
.../pyiceberg/expressions/literals/index.html | 3952 ++++++++
reference/pyiceberg/expressions/parser/index.html | 2255 +++++
.../pyiceberg/expressions/visitors/index.html | 4900 ++++++++++
reference/pyiceberg/index.html | 2167 +++++
reference/pyiceberg/io/fsspec/index.html | 3686 ++++++++
reference/pyiceberg/io/index.html | 4036 ++++++++
reference/pyiceberg/io/pyarrow/index.html | 4856 ++++++++++
reference/pyiceberg/manifest/index.html | 3512 +++++++
reference/pyiceberg/partitioning/index.html | 3101 +++++++
reference/pyiceberg/schema/index.html | 9792 ++++++++++++++++++++
reference/pyiceberg/serializers/index.html | 3209 +++++++
reference/pyiceberg/table/index.html | 8180 ++++++++++++++++
reference/pyiceberg/table/metadata/index.html | 4686 ++++++++++
reference/pyiceberg/table/refs/index.html | 2336 +++++
reference/pyiceberg/table/snapshots/index.html | 2709 ++++++
reference/pyiceberg/table/sorting/index.html | 3160 +++++++
reference/pyiceberg/transforms/index.html | 4770 ++++++++++
reference/pyiceberg/typedef/index.html | 3210 +++++++
reference/pyiceberg/types/index.html | 6314 +++++++++++++
reference/pyiceberg/utils/bin_packing/index.html | 2523 +++++
reference/pyiceberg/utils/concurrent/index.html | 2453 +++++
reference/pyiceberg/utils/config/index.html | 2627 ++++++
reference/pyiceberg/utils/datetime/index.html | 3210 +++++++
reference/pyiceberg/utils/decimal/index.html | 3039 ++++++
reference/pyiceberg/utils/deprecated/index.html | 2298 +++++
reference/pyiceberg/utils/index.html | 2169 +++++
reference/pyiceberg/utils/lazydict/index.html | 2488 +++++
reference/pyiceberg/utils/parsing/index.html | 2297 +++++
.../pyiceberg/utils/schema_conversion/index.html | 3756 ++++++++
reference/pyiceberg/utils/singleton/index.html | 2219 +++++
search/search_index.json | 1 +
sitemap.xml | 323 +
sitemap.xml.gz | Bin 0 -> 637 bytes
verify-release/index.html | 2326 +++++
116 files changed, 233511 insertions(+)
diff --git a/404.html b/404.html
new file mode 100644
index 0000000..7a947b0
--- /dev/null
+++ b/404.html
@@ -0,0 +1,2095 @@
+
+<!doctype html>
+<html lang="en" class="no-js">
+ <head>
+
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+
+
+
+
+
+
+ <link rel="icon" href="/assets/images/iceberg-logo-icon.png">
+ <meta name="generator" content="mkdocs-1.5.2, mkdocs-material-9.2.8">
+
+
+
+ <title>PyIceberg</title>
+
+
+
+ <link rel="stylesheet" href="/assets/stylesheets/main.046329b4.min.css">
+
+
+ <link rel="stylesheet" href="/assets/stylesheets/palette.85d0ee34.min.css">
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
+ <style>:root{--md-text-font:"Lato";--md-code-font:"Roboto Mono"}</style>
+
+
+
+ <link rel="stylesheet" href="/assets/_mkdocstrings.css">
+
+ <script>__md_scope=new URL("/",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
+
+
+
+
+
+
+ </head>
+
+
+
+
+
+
+
+
+
+ <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
+
+
+
+ <script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
+
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
+ <label class="md-overlay" for="__drawer"></label>
+ <div data-md-component="skip">
+
+ </div>
+ <div data-md-component="announce">
+
+ </div>
+
+
+
+
+
+
+<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
+ <nav class="md-header__inner md-grid" aria-label="Header">
+ <a href="/." title="PyIceberg" class="md-header__button md-logo" aria-label="PyIceberg" data-md-component="logo">
+
+ <img src="/assets/images/iceberg-logo-icon.png" alt="logo">
+
+ </a>
+ <label class="md-header__button md-icon" for="__drawer">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
+ </label>
+ <div class="md-header__title" data-md-component="header-title">
+ <div class="md-header__ellipsis">
+ <div class="md-header__topic">
+ <span class="md-ellipsis">
+ PyIceberg
+ </span>
+ </div>
+ <div class="md-header__topic" data-md-component="header-topic">
+ <span class="md-ellipsis">
+
+
+
+ </span>
+ </div>
+ </div>
+ </div>
+
+
+ <form class="md-header__option" data-md-component="palette">
+
+
+
+
+ <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
+
+ <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
+ </label>
+
+
+
+
+
+ <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_2">
+
+ <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
+ </label>
+
+
+</form>
+
+
+
+
+ <label class="md-header__button md-icon" for="__search">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+ </label>
+ <div class="md-search" data-md-component="search" role="dialog">
+ <label class="md-search__overlay" for="__search"></label>
+ <div class="md-search__inner" role="search">
+ <form class="md-search__form" name="search">
+ <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
+ <label class="md-search__icon md-icon" for="__search">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
+ </label>
+ <nav class="md-search__options" aria-label="Search">
+
+ <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
+ </button>
+ </nav>
+
+ </form>
+ <div class="md-search__output">
+ <div class="md-search__scrollwrap" data-md-scrollfix>
+ <div class="md-search-result" data-md-component="search-result">
+ <div class="md-search-result__meta">
+ Initializing search
+ </div>
+ <ol class="md-search-result__list" role="presentation"></ol>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+
+ <div class="md-header__source">
+ <a href="https://github.com/apache/iceberg-python" title="Go to repository" class="md-source" data-md-component="source">
+ <div class="md-source__icon md-icon">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25 [...]
+ </div>
+ <div class="md-source__repository">
+ apache/iceberg-python
+ </div>
+</a>
+ </div>
+
+ </nav>
+
+
+
+<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
+ <div class="md-grid">
+ <ul class="md-tabs__list">
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="/." class="md-tabs__link">
+
+
+
+
+ Home
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="/configuration/" class="md-tabs__link">
+
+
+
+
+ Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="/cli/" class="md-tabs__link">
+
+
+
+
+ CLI
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="/api/" class="md-tabs__link">
+
+
+
+
+ API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="/contributing/" class="md-tabs__link">
+
+
+
+
+ Contributing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="/feature-support/" class="md-tabs__link">
+
+
+
+
+ Feature support
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="/verify-release/" class="md-tabs__link">
+
+
+ Releases
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="/reference/pyiceberg/" class="md-tabs__link">
+
+
+
+
+ pyiceberg
+
+ </a>
+ </li>
+
+
+
+
+
+
+ </ul>
+ </div>
+</nav>
+
+
+</header>
+
+ <div class="md-container" data-md-component="container">
+
+
+
+
+ <main class="md-main" data-md-component="main">
+ <div class="md-main__inner md-grid">
+
+
+
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
+ <div class="md-sidebar__scrollwrap">
+ <div class="md-sidebar__inner">
+
+
+
+
+
+
+<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
+ <label class="md-nav__title" for="__drawer">
+ <a href="/." title="PyIceberg" class="md-nav__button md-logo" aria-label="PyIceberg" data-md-component="logo">
+
+ <img src="/assets/images/iceberg-logo-icon.png" alt="logo">
+
+ </a>
+ PyIceberg
+ </label>
+
+ <div class="md-nav__source">
+ <a href="https://github.com/apache/iceberg-python" title="Go to repository" class="md-source" data-md-component="source">
+ <div class="md-source__icon md-icon">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25 [...]
+ </div>
+ <div class="md-source__repository">
+ apache/iceberg-python
+ </div>
+</a>
+ </div>
+
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/." class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Home
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/configuration/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Configuration
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/cli/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ CLI
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/api/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ API
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/contributing/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Contributing
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/feature-support/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Feature support
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
+
+ <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
+
+
+ <span class="md-ellipsis">
+ Releases
+ </span>
+
+
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_7">
+ <span class="md-nav__icon md-icon"></span>
+ Releases
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/verify-release/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Verify a release
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/how-to-release/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ How to release
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
+
+ <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
+
+
+ <span class="md-ellipsis">
+ Code Reference
+ </span>
+
+
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8">
+ <span class="md-nav__icon md-icon"></span>
+ Code Reference
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="/reference/pyiceberg/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ pyiceberg
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_1_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1">
+ <span class="md-nav__icon md-icon"></span>
+ pyiceberg
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_1" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="/reference/pyiceberg/avro/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ avro
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_1">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_1_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_1">
+ <span class="md-nav__icon md-icon"></span>
+ avro
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_1_1" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="/reference/pyiceberg/avro/codecs/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ codecs
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_1_1">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_8_1_1_1_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_1_1">
+ <span class="md-nav__icon md-icon"></span>
+ codecs
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/avro/codecs/bzip2/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ bzip2
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/avro/codecs/codec/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ codec
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/avro/codecs/deflate/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ deflate
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/avro/codecs/snappy_codec/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ snappy_codec
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/avro/codecs/zstandard_codec/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ zstandard_codec
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/avro/decoder/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ decoder
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/avro/encoder/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ encoder
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/avro/file/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ file
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/avro/reader/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ reader
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/avro/resolver/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ resolver
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/avro/writer/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ writer
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_2" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="/reference/pyiceberg/catalog/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ catalog
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_2">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_2_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_2">
+ <span class="md-nav__icon md-icon"></span>
+ catalog
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/catalog/dynamodb/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ dynamodb
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/catalog/glue/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ glue
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/catalog/hive/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ hive
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/catalog/noop/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ noop
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/catalog/rest/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ rest
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/catalog/sql/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ sql
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_3" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="/reference/pyiceberg/cli/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ cli
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_3">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_3_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_3">
+ <span class="md-nav__icon md-icon"></span>
+ cli
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/cli/console/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ console
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/cli/output/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ output
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/conversions/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ conversions
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/exceptions/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ exceptions
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_6" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="/reference/pyiceberg/expressions/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ expressions
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_6">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_6_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_6">
+ <span class="md-nav__icon md-icon"></span>
+ expressions
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/expressions/literals/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ literals
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/expressions/parser/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ parser
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/expressions/visitors/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ visitors
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_7" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="/reference/pyiceberg/io/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ io
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_7">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_7_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_7">
+ <span class="md-nav__icon md-icon"></span>
+ io
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/io/fsspec/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ fsspec
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/io/pyarrow/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ pyarrow
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/manifest/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ manifest
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/partitioning/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ partitioning
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/schema/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ schema
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/serializers/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ serializers
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_12" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="/reference/pyiceberg/table/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ table
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_12">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_12_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_12">
+ <span class="md-nav__icon md-icon"></span>
+ table
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/table/metadata/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ metadata
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/table/refs/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ refs
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/table/snapshots/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ snapshots
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/table/sorting/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ sorting
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/transforms/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ transforms
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/typedef/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ typedef
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/types/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ types
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_16" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="/reference/pyiceberg/utils/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ utils
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_16">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_16_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_16">
+ <span class="md-nav__icon md-icon"></span>
+ utils
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/utils/bin_packing/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ bin_packing
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/utils/concurrent/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ concurrent
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/utils/config/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ config
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/utils/datetime/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ datetime
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/utils/decimal/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ decimal
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/utils/deprecated/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ deprecated
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/utils/lazydict/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ lazydict
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/utils/parsing/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ parsing
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/utils/schema_conversion/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ schema_conversion
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="/reference/pyiceberg/utils/singleton/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ singleton
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+ </ul>
+</nav>
+ </div>
+ </div>
+ </div>
+
+
+
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
+ <div class="md-sidebar__scrollwrap">
+ <div class="md-sidebar__inner">
+
+
+<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
+
+
+
+
+</nav>
+ </div>
+ </div>
+ </div>
+
+
+
+ <div class="md-content" data-md-component="content">
+ <article class="md-content__inner md-typeset">
+
+ <h1>404 - Not found</h1>
+
+ </article>
+ </div>
+
+
+ </div>
+
+ <button type="button" class="md-top md-icon" data-md-component="top" hidden>
+
+ <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"/></svg>
+ Back to top
+ </button>
+
+ </main>
+
+ <footer class="md-footer">
+
+ <div class="md-footer-meta md-typeset">
+ <div class="md-footer-meta__inner md-grid">
+ <div class="md-copyright">
+
+
+ Made with
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
+ Material for MkDocs
+ </a>
+
+</div>
+
+ </div>
+ </div>
+</footer>
+
+ </div>
+ <div class="md-dialog" data-md-component="dialog">
+ <div class="md-dialog__inner md-typeset"></div>
+ </div>
+
+ <script id="__config" type="application/json">{"base": "/", "features": ["navigation.top", "navigation.tracking", "navigation.tabs", "navigation.tabs.sticky"], "search": "/assets/javascripts/workers/search.dfff1995.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one [...]
+
+
+ <script src="/assets/javascripts/bundle.dff1b7c8.min.js"></script>
+
+
+ </body>
+</html>
\ No newline at end of file
diff --git a/CNAME b/CNAME
new file mode 100644
index 0000000..0b63f25
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+py.iceberg.apache.org
diff --git a/SUMMARY/index.html b/SUMMARY/index.html
new file mode 100644
index 0000000..e24916c
--- /dev/null
+++ b/SUMMARY/index.html
@@ -0,0 +1,2138 @@
+
+<!doctype html>
+<html lang="en" class="no-js">
+ <head>
+
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+
+
+
+
+
+
+ <link rel="icon" href="../assets/images/iceberg-logo-icon.png">
+ <meta name="generator" content="mkdocs-1.5.2, mkdocs-material-9.2.8">
+
+
+
+ <title>SUMMARY - PyIceberg</title>
+
+
+
+ <link rel="stylesheet" href="../assets/stylesheets/main.046329b4.min.css">
+
+
+ <link rel="stylesheet" href="../assets/stylesheets/palette.85d0ee34.min.css">
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
+ <style>:root{--md-text-font:"Lato";--md-code-font:"Roboto Mono"}</style>
+
+
+
+ <link rel="stylesheet" href="../assets/_mkdocstrings.css">
+
+ <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
+
+
+
+
+
+
+ </head>
+
+
+
+
+
+
+
+
+
+ <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
+
+
+
+ <script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
+
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
+ <label class="md-overlay" for="__drawer"></label>
+ <div data-md-component="skip">
+
+ </div>
+ <div data-md-component="announce">
+
+ </div>
+
+
+
+
+
+
+<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
+ <nav class="md-header__inner md-grid" aria-label="Header">
+ <a href=".." title="PyIceberg" class="md-header__button md-logo" aria-label="PyIceberg" data-md-component="logo">
+
+ <img src="../assets/images/iceberg-logo-icon.png" alt="logo">
+
+ </a>
+ <label class="md-header__button md-icon" for="__drawer">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
+ </label>
+ <div class="md-header__title" data-md-component="header-title">
+ <div class="md-header__ellipsis">
+ <div class="md-header__topic">
+ <span class="md-ellipsis">
+ PyIceberg
+ </span>
+ </div>
+ <div class="md-header__topic" data-md-component="header-topic">
+ <span class="md-ellipsis">
+
+ SUMMARY
+
+ </span>
+ </div>
+ </div>
+ </div>
+
+
+ <form class="md-header__option" data-md-component="palette">
+
+
+
+
+ <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
+
+ <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
+ </label>
+
+
+
+
+
+ <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_2">
+
+ <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
+ </label>
+
+
+</form>
+
+
+
+
+ <label class="md-header__button md-icon" for="__search">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+ </label>
+ <div class="md-search" data-md-component="search" role="dialog">
+ <label class="md-search__overlay" for="__search"></label>
+ <div class="md-search__inner" role="search">
+ <form class="md-search__form" name="search">
+ <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
+ <label class="md-search__icon md-icon" for="__search">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
+ </label>
+ <nav class="md-search__options" aria-label="Search">
+
+ <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
+ </button>
+ </nav>
+
+ </form>
+ <div class="md-search__output">
+ <div class="md-search__scrollwrap" data-md-scrollfix>
+ <div class="md-search-result" data-md-component="search-result">
+ <div class="md-search-result__meta">
+ Initializing search
+ </div>
+ <ol class="md-search-result__list" role="presentation"></ol>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+
+ <div class="md-header__source">
+ <a href="https://github.com/apache/iceberg-python" title="Go to repository" class="md-source" data-md-component="source">
+ <div class="md-source__icon md-icon">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25 [...]
+ </div>
+ <div class="md-source__repository">
+ apache/iceberg-python
+ </div>
+</a>
+ </div>
+
+ </nav>
+
+
+
+<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
+ <div class="md-grid">
+ <ul class="md-tabs__list">
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href=".." class="md-tabs__link">
+
+
+
+
+ Home
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="../configuration/" class="md-tabs__link">
+
+
+
+
+ Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="../cli/" class="md-tabs__link">
+
+
+
+
+ CLI
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="../api/" class="md-tabs__link">
+
+
+
+
+ API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="../contributing/" class="md-tabs__link">
+
+
+
+
+ Contributing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="../feature-support/" class="md-tabs__link">
+
+
+
+
+ Feature support
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="../verify-release/" class="md-tabs__link">
+
+
+ Releases
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="../reference/pyiceberg/" class="md-tabs__link">
+
+
+
+
+ pyiceberg
+
+ </a>
+ </li>
+
+
+
+
+
+
+ </ul>
+ </div>
+</nav>
+
+
+</header>
+
+ <div class="md-container" data-md-component="container">
+
+
+
+
+ <main class="md-main" data-md-component="main">
+ <div class="md-main__inner md-grid">
+
+
+
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
+ <div class="md-sidebar__scrollwrap">
+ <div class="md-sidebar__inner">
+
+
+
+
+
+
+<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
+ <label class="md-nav__title" for="__drawer">
+ <a href=".." title="PyIceberg" class="md-nav__button md-logo" aria-label="PyIceberg" data-md-component="logo">
+
+ <img src="../assets/images/iceberg-logo-icon.png" alt="logo">
+
+ </a>
+ PyIceberg
+ </label>
+
+ <div class="md-nav__source">
+ <a href="https://github.com/apache/iceberg-python" title="Go to repository" class="md-source" data-md-component="source">
+ <div class="md-source__icon md-icon">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25 [...]
+ </div>
+ <div class="md-source__repository">
+ apache/iceberg-python
+ </div>
+</a>
+ </div>
+
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href=".." class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Home
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../configuration/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Configuration
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../cli/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ CLI
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../api/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ API
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../contributing/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Contributing
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../feature-support/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Feature support
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
+
+ <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
+
+
+ <span class="md-ellipsis">
+ Releases
+ </span>
+
+
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_7">
+ <span class="md-nav__icon md-icon"></span>
+ Releases
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../verify-release/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Verify a release
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../how-to-release/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ How to release
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
+
+ <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
+
+
+ <span class="md-ellipsis">
+ Code Reference
+ </span>
+
+
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8">
+ <span class="md-nav__icon md-icon"></span>
+ Code Reference
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ pyiceberg
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_1_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1">
+ <span class="md-nav__icon md-icon"></span>
+ pyiceberg
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_1" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/avro/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ avro
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_1">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_1_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_1">
+ <span class="md-nav__icon md-icon"></span>
+ avro
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_1_1" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/avro/codecs/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ codecs
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_1_1">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_8_1_1_1_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_1_1">
+ <span class="md-nav__icon md-icon"></span>
+ codecs
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/codecs/bzip2/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ bzip2
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/codecs/codec/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ codec
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/codecs/deflate/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ deflate
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/codecs/snappy_codec/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ snappy_codec
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/codecs/zstandard_codec/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ zstandard_codec
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/decoder/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ decoder
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/encoder/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ encoder
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/file/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ file
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/reader/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ reader
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/resolver/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ resolver
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/writer/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ writer
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_2" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/catalog/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ catalog
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_2">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_2_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_2">
+ <span class="md-nav__icon md-icon"></span>
+ catalog
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/catalog/dynamodb/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ dynamodb
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/catalog/glue/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ glue
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/catalog/hive/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ hive
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/catalog/noop/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ noop
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/catalog/rest/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ rest
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/catalog/sql/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ sql
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_3" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/cli/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ cli
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_3">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_3_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_3">
+ <span class="md-nav__icon md-icon"></span>
+ cli
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/cli/console/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ console
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/cli/output/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ output
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/conversions/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ conversions
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/exceptions/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ exceptions
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_6" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/expressions/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ expressions
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_6">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_6_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_6">
+ <span class="md-nav__icon md-icon"></span>
+ expressions
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/expressions/literals/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ literals
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/expressions/parser/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ parser
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/expressions/visitors/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ visitors
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_7" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/io/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ io
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_7">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_7_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_7">
+ <span class="md-nav__icon md-icon"></span>
+ io
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/io/fsspec/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ fsspec
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/io/pyarrow/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ pyarrow
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/manifest/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ manifest
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/partitioning/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ partitioning
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/schema/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ schema
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/serializers/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ serializers
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_12" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/table/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ table
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_12">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_12_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_12">
+ <span class="md-nav__icon md-icon"></span>
+ table
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/table/metadata/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ metadata
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/table/refs/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ refs
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/table/snapshots/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ snapshots
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/table/sorting/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ sorting
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/transforms/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ transforms
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/typedef/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ typedef
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/types/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ types
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_16" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/utils/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ utils
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_16">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_16_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_16">
+ <span class="md-nav__icon md-icon"></span>
+ utils
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/bin_packing/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ bin_packing
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/concurrent/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ concurrent
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/config/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ config
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/datetime/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ datetime
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/decimal/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ decimal
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/deprecated/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ deprecated
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/lazydict/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ lazydict
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/parsing/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ parsing
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/schema_conversion/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ schema_conversion
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/singleton/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ singleton
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+ </ul>
+</nav>
+ </div>
+ </div>
+ </div>
+
+
+
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
+ <div class="md-sidebar__scrollwrap">
+ <div class="md-sidebar__inner">
+
+
+<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
+
+
+
+
+</nav>
+ </div>
+ </div>
+ </div>
+
+
+
+ <div class="md-content" data-md-component="content">
+ <article class="md-content__inner md-typeset">
+
+
+
+
+ <h1>SUMMARY</h1>
+
+<!--
+ - Licensed to the Apache Software Foundation (ASF) under one or more
+ - contributor license agreements. See the NOTICE file distributed with
+ - this work for additional information regarding copyright ownership.
+ - The ASF licenses this file to You under the Apache License, Version 2.0
+ - (the "License"); you may not use this file except in compliance with
+ - the License. You may obtain a copy of the License at
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing, software
+ - distributed under the License is distributed on an "AS IS" BASIS,
+ - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ - See the License for the specific language governing permissions and
+ - limitations under the License.
+ -->
+
+<!-- prettier-ignore-start -->
+
+<ul>
+<li><a href="../">Home</a></li>
+<li><a href="../configuration/">Configuration</a></li>
+<li><a href="../cli/">CLI</a></li>
+<li><a href="../api/">API</a></li>
+<li><a href="../contributing/">Contributing</a></li>
+<li><a href="../feature-support/">Feature support</a></li>
+<li>Releases<ul>
+<li><a href="../verify-release/">Verify a release</a></li>
+<li><a href="../how-to-release/">How to release</a></li>
+</ul>
+</li>
+<li><a href="reference/">Code Reference</a></li>
+</ul>
+<!-- prettier-ignore-end -->
+
+
+
+
+
+
+ </article>
+ </div>
+
+
+ </div>
+
+ <button type="button" class="md-top md-icon" data-md-component="top" hidden>
+
+ <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"/></svg>
+ Back to top
+ </button>
+
+ </main>
+
+ <footer class="md-footer">
+
+ <div class="md-footer-meta md-typeset">
+ <div class="md-footer-meta__inner md-grid">
+ <div class="md-copyright">
+
+
+ Made with
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
+ Material for MkDocs
+ </a>
+
+</div>
+
+ </div>
+ </div>
+</footer>
+
+ </div>
+ <div class="md-dialog" data-md-component="dialog">
+ <div class="md-dialog__inner md-typeset"></div>
+ </div>
+
+ <script id="__config" type="application/json">{"base": "..", "features": ["navigation.top", "navigation.tracking", "navigation.tabs", "navigation.tabs.sticky"], "search": "../assets/javascripts/workers/search.dfff1995.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result. [...]
+
+
+ <script src="../assets/javascripts/bundle.dff1b7c8.min.js"></script>
+
+
+ </body>
+</html>
\ No newline at end of file
diff --git a/api/index.html b/api/index.html
new file mode 100644
index 0000000..5bf9736
--- /dev/null
+++ b/api/index.html
@@ -0,0 +1,2739 @@
+
+<!doctype html>
+<html lang="en" class="no-js">
+ <head>
+
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+
+
+
+ <link rel="canonical" href="https://py.iceberg.apache.org/api/">
+
+
+ <link rel="prev" href="../cli/">
+
+
+ <link rel="next" href="../contributing/">
+
+
+ <link rel="icon" href="../assets/images/iceberg-logo-icon.png">
+ <meta name="generator" content="mkdocs-1.5.2, mkdocs-material-9.2.8">
+
+
+
+ <title>API - PyIceberg</title>
+
+
+
+ <link rel="stylesheet" href="../assets/stylesheets/main.046329b4.min.css">
+
+
+ <link rel="stylesheet" href="../assets/stylesheets/palette.85d0ee34.min.css">
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
+ <style>:root{--md-text-font:"Lato";--md-code-font:"Roboto Mono"}</style>
+
+
+
+ <link rel="stylesheet" href="../assets/_mkdocstrings.css">
+
+ <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
+
+
+
+
+
+
+ </head>
+
+
+
+
+
+
+
+
+
+ <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
+
+
+
+ <script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
+
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
+ <label class="md-overlay" for="__drawer"></label>
+ <div data-md-component="skip">
+
+
+ <a href="#python-api" class="md-skip">
+ Skip to content
+ </a>
+
+ </div>
+ <div data-md-component="announce">
+
+ </div>
+
+
+
+
+
+
+<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
+ <nav class="md-header__inner md-grid" aria-label="Header">
+ <a href=".." title="PyIceberg" class="md-header__button md-logo" aria-label="PyIceberg" data-md-component="logo">
+
+ <img src="../assets/images/iceberg-logo-icon.png" alt="logo">
+
+ </a>
+ <label class="md-header__button md-icon" for="__drawer">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
+ </label>
+ <div class="md-header__title" data-md-component="header-title">
+ <div class="md-header__ellipsis">
+ <div class="md-header__topic">
+ <span class="md-ellipsis">
+ PyIceberg
+ </span>
+ </div>
+ <div class="md-header__topic" data-md-component="header-topic">
+ <span class="md-ellipsis">
+
+ API
+
+ </span>
+ </div>
+ </div>
+ </div>
+
+
+ <form class="md-header__option" data-md-component="palette">
+
+
+
+
+ <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
+
+ <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
+ </label>
+
+
+
+
+
+ <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_2">
+
+ <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
+ </label>
+
+
+</form>
+
+
+
+
+ <label class="md-header__button md-icon" for="__search">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+ </label>
+ <div class="md-search" data-md-component="search" role="dialog">
+ <label class="md-search__overlay" for="__search"></label>
+ <div class="md-search__inner" role="search">
+ <form class="md-search__form" name="search">
+ <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
+ <label class="md-search__icon md-icon" for="__search">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
+ </label>
+ <nav class="md-search__options" aria-label="Search">
+
+ <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
+ </button>
+ </nav>
+
+ </form>
+ <div class="md-search__output">
+ <div class="md-search__scrollwrap" data-md-scrollfix>
+ <div class="md-search-result" data-md-component="search-result">
+ <div class="md-search-result__meta">
+ Initializing search
+ </div>
+ <ol class="md-search-result__list" role="presentation"></ol>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+
+ <div class="md-header__source">
+ <a href="https://github.com/apache/iceberg-python" title="Go to repository" class="md-source" data-md-component="source">
+ <div class="md-source__icon md-icon">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25 [...]
+ </div>
+ <div class="md-source__repository">
+ apache/iceberg-python
+ </div>
+</a>
+ </div>
+
+ </nav>
+
+
+
+<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
+ <div class="md-grid">
+ <ul class="md-tabs__list">
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href=".." class="md-tabs__link">
+
+
+
+
+ Home
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="../configuration/" class="md-tabs__link">
+
+
+
+
+ Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="../cli/" class="md-tabs__link">
+
+
+
+
+ CLI
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-tabs__item md-tabs__item--active">
+ <a href="./" class="md-tabs__link">
+
+
+
+
+ API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="../contributing/" class="md-tabs__link">
+
+
+
+
+ Contributing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="../feature-support/" class="md-tabs__link">
+
+
+
+
+ Feature support
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="../verify-release/" class="md-tabs__link">
+
+
+ Releases
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-tabs__item">
+ <a href="../reference/pyiceberg/" class="md-tabs__link">
+
+
+
+
+ pyiceberg
+
+ </a>
+ </li>
+
+
+
+
+
+
+ </ul>
+ </div>
+</nav>
+
+
+</header>
+
+ <div class="md-container" data-md-component="container">
+
+
+
+
+ <main class="md-main" data-md-component="main">
+ <div class="md-main__inner md-grid">
+
+
+
+
+
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" hidden>
+ <div class="md-sidebar__scrollwrap">
+ <div class="md-sidebar__inner">
+
+
+
+
+
+
+<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
+ <label class="md-nav__title" for="__drawer">
+ <a href=".." title="PyIceberg" class="md-nav__button md-logo" aria-label="PyIceberg" data-md-component="logo">
+
+ <img src="../assets/images/iceberg-logo-icon.png" alt="logo">
+
+ </a>
+ PyIceberg
+ </label>
+
+ <div class="md-nav__source">
+ <a href="https://github.com/apache/iceberg-python" title="Go to repository" class="md-source" data-md-component="source">
+ <div class="md-source__icon md-icon">
+
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25 [...]
+ </div>
+ <div class="md-source__repository">
+ apache/iceberg-python
+ </div>
+</a>
+ </div>
+
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href=".." class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Home
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../configuration/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Configuration
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../cli/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ CLI
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--active">
+
+ <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
+
+
+
+
+
+ <label class="md-nav__link md-nav__link--active" for="__toc">
+
+
+ <span class="md-ellipsis">
+ API
+ </span>
+
+
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ <a href="./" class="md-nav__link md-nav__link--active">
+
+
+ <span class="md-ellipsis">
+ API
+ </span>
+
+
+ </a>
+
+
+
+<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
+
+
+
+
+
+
+ <label class="md-nav__title" for="__toc">
+ <span class="md-nav__icon md-icon"></span>
+ Table of contents
+ </label>
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
+
+ <li class="md-nav__item">
+ <a href="#create-a-table" class="md-nav__link">
+ Create a table
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#load-a-table" class="md-nav__link">
+ Load a table
+ </a>
+
+ <nav class="md-nav" aria-label="Load a table">
+ <ul class="md-nav__list">
+
+ <li class="md-nav__item">
+ <a href="#catalog-table" class="md-nav__link">
+ Catalog table
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#static-table" class="md-nav__link">
+ Static table
+ </a>
+
+</li>
+
+ </ul>
+ </nav>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#schema-evolution" class="md-nav__link">
+ Schema evolution
+ </a>
+
+ <nav class="md-nav" aria-label="Schema evolution">
+ <ul class="md-nav__list">
+
+ <li class="md-nav__item">
+ <a href="#add-column" class="md-nav__link">
+ Add column
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#rename-column" class="md-nav__link">
+ Rename column
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#move-column" class="md-nav__link">
+ Move column
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#update-column" class="md-nav__link">
+ Update column
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#delete-column" class="md-nav__link">
+ Delete column
+ </a>
+
+</li>
+
+ </ul>
+ </nav>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#table-properties" class="md-nav__link">
+ Table properties
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#query-the-data" class="md-nav__link">
+ Query the data
+ </a>
+
+ <nav class="md-nav" aria-label="Query the data">
+ <ul class="md-nav__list">
+
+ <li class="md-nav__item">
+ <a href="#apache-arrow" class="md-nav__link">
+ Apache Arrow
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#duckdb" class="md-nav__link">
+ DuckDB
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#ray" class="md-nav__link">
+ Ray
+ </a>
+
+</li>
+
+ </ul>
+ </nav>
+
+</li>
+
+ </ul>
+
+</nav>
+
+ </li>
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../contributing/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Contributing
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../feature-support/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Feature support
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
+
+ <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
+
+
+ <span class="md-ellipsis">
+ Releases
+ </span>
+
+
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_7">
+ <span class="md-nav__icon md-icon"></span>
+ Releases
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../verify-release/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ Verify a release
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../how-to-release/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ How to release
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
+
+ <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
+
+
+ <span class="md-ellipsis">
+ Code Reference
+ </span>
+
+
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8">
+ <span class="md-nav__icon md-icon"></span>
+ Code Reference
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ pyiceberg
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_1_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1">
+ <span class="md-nav__icon md-icon"></span>
+ pyiceberg
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_1" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/avro/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ avro
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_1">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_1_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_1">
+ <span class="md-nav__icon md-icon"></span>
+ avro
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_1_1" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/avro/codecs/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ codecs
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_1_1">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_8_1_1_1_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_1_1">
+ <span class="md-nav__icon md-icon"></span>
+ codecs
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/codecs/bzip2/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ bzip2
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/codecs/codec/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ codec
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/codecs/deflate/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ deflate
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/codecs/snappy_codec/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ snappy_codec
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/codecs/zstandard_codec/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ zstandard_codec
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/decoder/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ decoder
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/encoder/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ encoder
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/file/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ file
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/reader/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ reader
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/resolver/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ resolver
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/avro/writer/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ writer
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_2" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/catalog/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ catalog
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_2">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_2_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_2">
+ <span class="md-nav__icon md-icon"></span>
+ catalog
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/catalog/dynamodb/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ dynamodb
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/catalog/glue/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ glue
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/catalog/hive/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ hive
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/catalog/noop/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ noop
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/catalog/rest/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ rest
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/catalog/sql/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ sql
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_3" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/cli/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ cli
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_3">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_3_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_3">
+ <span class="md-nav__icon md-icon"></span>
+ cli
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/cli/console/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ console
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/cli/output/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ output
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/conversions/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ conversions
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/exceptions/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ exceptions
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_6" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/expressions/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ expressions
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_6">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_6_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_6">
+ <span class="md-nav__icon md-icon"></span>
+ expressions
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/expressions/literals/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ literals
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/expressions/parser/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ parser
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/expressions/visitors/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ visitors
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_7" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/io/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ io
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_7">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_7_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_7">
+ <span class="md-nav__icon md-icon"></span>
+ io
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/io/fsspec/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ fsspec
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/io/pyarrow/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ pyarrow
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/manifest/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ manifest
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/partitioning/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ partitioning
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/schema/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ schema
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/serializers/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ serializers
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_12" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/table/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ table
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_12">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_12_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_12">
+ <span class="md-nav__icon md-icon"></span>
+ table
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/table/metadata/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ metadata
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/table/refs/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ refs
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/table/snapshots/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ snapshots
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/table/sorting/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ sorting
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/transforms/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ transforms
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/typedef/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ typedef
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/types/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ types
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item md-nav__item--nested">
+
+
+
+
+
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1_16" >
+
+
+
+ <div class="md-nav__link md-nav__container">
+ <a href="../reference/pyiceberg/utils/" class="md-nav__link ">
+
+
+ <span class="md-ellipsis">
+ utils
+ </span>
+
+
+ </a>
+
+ <label class="md-nav__link " for="__nav_8_1_16">
+ <span class="md-nav__icon md-icon"></span>
+ </label>
+
+ </div>
+
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_8_1_16_label" aria-expanded="false">
+ <label class="md-nav__title" for="__nav_8_1_16">
+ <span class="md-nav__icon md-icon"></span>
+ utils
+ </label>
+ <ul class="md-nav__list" data-md-scrollfix>
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/bin_packing/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ bin_packing
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/concurrent/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ concurrent
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/config/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ config
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/datetime/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ datetime
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/decimal/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ decimal
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/deprecated/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ deprecated
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/lazydict/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ lazydict
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/parsing/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ parsing
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/schema_conversion/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ schema_conversion
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+ <li class="md-nav__item">
+ <a href="../reference/pyiceberg/utils/singleton/" class="md-nav__link">
+
+
+ <span class="md-ellipsis">
+ singleton
+ </span>
+
+
+ </a>
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+
+ </ul>
+ </nav>
+
+ </li>
+
+
+
+ </ul>
+</nav>
+ </div>
+ </div>
+ </div>
+
+
+
+
+
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
+ <div class="md-sidebar__scrollwrap">
+ <div class="md-sidebar__inner">
+
+
+<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
+
+
+
+
+
+
+ <label class="md-nav__title" for="__toc">
+ <span class="md-nav__icon md-icon"></span>
+ Table of contents
+ </label>
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
+
+ <li class="md-nav__item">
+ <a href="#create-a-table" class="md-nav__link">
+ Create a table
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#load-a-table" class="md-nav__link">
+ Load a table
+ </a>
+
+ <nav class="md-nav" aria-label="Load a table">
+ <ul class="md-nav__list">
+
+ <li class="md-nav__item">
+ <a href="#catalog-table" class="md-nav__link">
+ Catalog table
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#static-table" class="md-nav__link">
+ Static table
+ </a>
+
+</li>
+
+ </ul>
+ </nav>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#schema-evolution" class="md-nav__link">
+ Schema evolution
+ </a>
+
+ <nav class="md-nav" aria-label="Schema evolution">
+ <ul class="md-nav__list">
+
+ <li class="md-nav__item">
+ <a href="#add-column" class="md-nav__link">
+ Add column
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#rename-column" class="md-nav__link">
+ Rename column
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#move-column" class="md-nav__link">
+ Move column
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#update-column" class="md-nav__link">
+ Update column
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#delete-column" class="md-nav__link">
+ Delete column
+ </a>
+
+</li>
+
+ </ul>
+ </nav>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#table-properties" class="md-nav__link">
+ Table properties
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#query-the-data" class="md-nav__link">
+ Query the data
+ </a>
+
+ <nav class="md-nav" aria-label="Query the data">
+ <ul class="md-nav__list">
+
+ <li class="md-nav__item">
+ <a href="#apache-arrow" class="md-nav__link">
+ Apache Arrow
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#duckdb" class="md-nav__link">
+ DuckDB
+ </a>
+
+</li>
+
+ <li class="md-nav__item">
+ <a href="#ray" class="md-nav__link">
+ Ray
+ </a>
+
+</li>
+
+ </ul>
+ </nav>
+
+</li>
+
+ </ul>
+
+</nav>
+ </div>
+ </div>
+ </div>
+
+
+
+ <div class="md-content" data-md-component="content">
+ <article class="md-content__inner md-typeset">
+
+
+
+
+
+
+
+<!--
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License. You may obtain a copy of the License at
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied. See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -->
+
+<h1 id="python-api">Python API</h1>
+<p>PyIceberg is based around catalogs to load tables. First step is to instantiate a catalog that loads tables. Let's use the following configuration to define a catalog called <code>prod</code>:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nt">catalog</span><span class="p">:</span>
+<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="w"> </span><span class="nt">prod</span><span class="p">:</span>
+<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="w"> </span><span class="nt">uri</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">http://rest-catalog/ws/</span>
+<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="w"> </span><span class="nt">credential</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">t-1234:secret</span>
+</code></pre></div>
+<p>This information must be placed inside a file called <code>.pyiceberg.yaml</code> located either in the <code>$HOME</code> or <code>%USERPROFILE%</code> directory (depending on whether the operating system is Unix-based or Windows-based, respectively) or in the <code>$PYICEBERG_HOME</code> directory (if the corresponding environment variable is set).</p>
+<p>For more details on possible configurations refer to the <a href="https://py.iceberg.apache.org/configuration/">specific page</a>.</p>
+<p>Then load the <code>prod</code> catalog:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="kn">from</span> <span class="nn">pyiceberg.catalog</span> <span class="kn">import</span> <span class="n">load_catalog</span>
+<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>
+<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="n">catalog</span> <span class="o">=</span> <span class="n">load_catalog</span><span class="p">(</span>
+<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a> <span class="s2">"docs"</span><span class="p">,</span>
+<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a> <span class="o">**</span><span class="p">{</span>
+<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a> <span class="s2">"uri"</span><span class="p">:</span> <span class="s2">"http://127.0.0.1:8181"</span><span class="p">,</span>
+<a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a> <span class="s2">"s3.endpoint"</span><span class="p">:</span> <span class="s2">"http://127.0.0.1:9000"</span><span class="p">,</span>
+<a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a> <span class="s2">"py-io-impl"</span><span class="p">:</span> <span class="s2">"pyiceberg.io.pyarrow.PyArrowFileIO"</span><span class="p">,</span>
+<a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a> <span class="s2">"s3.access-key-id"</span><span class="p">:</span> <span class="s2">"admin"</span><span class="p">,</span>
+<a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a> <span class="s2">"s3.secret-access-key"</span><span class="p">:</span> <span class="s2">"password"</span><span class="p">,</span>
+<a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a> <span class="p">}</span>
+<a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a><span class="p">)</span>
+</code></pre></div>
+<p>Let's create a namespace:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="n">catalog</span><span class="o">.</span><span class="n">create_namespace</span><span class="p">(</span><span class="s2">"docs_example"</span><span class="p">)</span>
+</code></pre></div>
+<p>And then list them:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="n">ns</span> <span class="o">=</span> <span class="n">catalog</span><span class="o">.</span><span class="n">list_namespaces</span><span class="p">()</span>
+<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>
+<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="k">assert</span> <span class="n">ns</span> <span class="o">==</span> <span class="p">[(</span><span class="s2">"docs_example"</span><span class="p">,)]</span>
+</code></pre></div>
+<p>And then list tables in the namespace:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="n">catalog</span><span class="o">.</span><span class="n">list_tables</span><span class="p">(</span><span class="s2">"docs_example"</span><span class="p">)</span>
+</code></pre></div>
+<h2 id="create-a-table">Create a table</h2>
+<p>To create a table from a catalog:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="kn">from</span> <span class="nn">pyiceberg.schema</span> <span class="kn">import</span> <span class="n">Schema</span>
+<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="kn">from</span> <span class="nn">pyiceberg.types</span> <span class="kn">import</span> <span class="p">(</span>
+<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a> <span class="n">TimestampType</span><span class="p">,</span>
+<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a> <span class="n">FloatType</span><span class="p">,</span>
+<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a> <span class="n">DoubleType</span><span class="p">,</span>
+<a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a> <span class="n">StringType</span><span class="p">,</span>
+<a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a> <span class="n">NestedField</span><span class="p">,</span>
+<a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a> <span class="n">StructType</span><span class="p">,</span>
+<a id="__codelineno-5-9" name="__codelineno-5-9" href="#__codelineno-5-9"></a><span class="p">)</span>
+<a id="__codelineno-5-10" name="__codelineno-5-10" href="#__codelineno-5-10"></a>
+<a id="__codelineno-5-11" name="__codelineno-5-11" href="#__codelineno-5-11"></a><span class="n">schema</span> <span class="o">=</span> <span class="n">Schema</span><span class="p">(</span>
+<a id="__codelineno-5-12" name="__codelineno-5-12" href="#__codelineno-5-12"></a> <span class="n">NestedField</span><span class="p">(</span><span class="n">field_id</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"datetime"</span><span class="p">,</span> <span class="n">field_type</span><span class="o">=</span><span class="n">TimestampType</span><span class="p">(),</span> <spa [...]
+<a id="__codelineno-5-13" name="__codelineno-5-13" href="#__codelineno-5-13"></a> <span class="n">NestedField</span><span class="p">(</span><span class="n">field_id</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"symbol"</span><span class="p">,</span> <span class="n">field_type</span><span class="o">=</span><span class="n">StringType</span><span class="p">(),</span> <span cla [...]
+<a id="__codelineno-5-14" name="__codelineno-5-14" href="#__codelineno-5-14"></a> <span class="n">NestedField</span><span class="p">(</span><span class="n">field_id</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"bid"</span><span class="p">,</span> <span class="n">field_type</span><span class="o">=</span><span class="n">FloatType</span><span class="p">(),</span> <span class=" [...]
+<a id="__codelineno-5-15" name="__codelineno-5-15" href="#__codelineno-5-15"></a> <span class="n">NestedField</span><span class="p">(</span><span class="n">field_id</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"ask"</span><span class="p">,</span> <span class="n">field_type</span><span class="o">=</span><span class="n">DoubleType</span><span class="p">(),</span> <span class= [...]
+<a id="__codelineno-5-16" name="__codelineno-5-16" href="#__codelineno-5-16"></a> <span class="n">NestedField</span><span class="p">(</span>
+<a id="__codelineno-5-17" name="__codelineno-5-17" href="#__codelineno-5-17"></a> <span class="n">field_id</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
+<a id="__codelineno-5-18" name="__codelineno-5-18" href="#__codelineno-5-18"></a> <span class="n">name</span><span class="o">=</span><span class="s2">"details"</span><span class="p">,</span>
+<a id="__codelineno-5-19" name="__codelineno-5-19" href="#__codelineno-5-19"></a> <span class="n">field_type</span><span class="o">=</span><span class="n">StructType</span><span class="p">(</span>
+<a id="__codelineno-5-20" name="__codelineno-5-20" href="#__codelineno-5-20"></a> <span class="n">NestedField</span><span class="p">(</span>
+<a id="__codelineno-5-21" name="__codelineno-5-21" href="#__codelineno-5-21"></a> <span class="n">field_id</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"created_by"</span><span class="p">,</span> <span class="n">field_type</span><span class="o">=</span><span class="n">StringType</span><span class="p">(),</span> <span class="n">required</span><span class="o">=</s [...]
+<a id="__codelineno-5-22" name="__codelineno-5-22" href="#__codelineno-5-22"></a> <span class="p">),</span>
+<a id="__codelineno-5-23" name="__codelineno-5-23" href="#__codelineno-5-23"></a> <span class="p">),</span>
+<a id="__codelineno-5-24" name="__codelineno-5-24" href="#__codelineno-5-24"></a> <span class="n">required</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+<a id="__codelineno-5-25" name="__codelineno-5-25" href="#__codelineno-5-25"></a> <span class="p">),</span>
+<a id="__codelineno-5-26" name="__codelineno-5-26" href="#__codelineno-5-26"></a><span class="p">)</span>
+<a id="__codelineno-5-27" name="__codelineno-5-27" href="#__codelineno-5-27"></a>
+<a id="__codelineno-5-28" name="__codelineno-5-28" href="#__codelineno-5-28"></a><span class="kn">from</span> <span class="nn">pyiceberg.partitioning</span> <span class="kn">import</span> <span class="n">PartitionSpec</span><span class="p">,</span> <span class="n">PartitionField</span>
+<a id="__codelineno-5-29" name="__codelineno-5-29" href="#__codelineno-5-29"></a><span class="kn">from</span> <span class="nn">pyiceberg.transforms</span> <span class="kn">import</span> <span class="n">DayTransform</span>
+<a id="__codelineno-5-30" name="__codelineno-5-30" href="#__codelineno-5-30"></a>
+<a id="__codelineno-5-31" name="__codelineno-5-31" href="#__codelineno-5-31"></a><span class="n">partition_spec</span> <span class="o">=</span> <span class="n">PartitionSpec</span><span class="p">(</span>
+<a id="__codelineno-5-32" name="__codelineno-5-32" href="#__codelineno-5-32"></a> <span class="n">PartitionField</span><span class="p">(</span>
+<a id="__codelineno-5-33" name="__codelineno-5-33" href="#__codelineno-5-33"></a> <span class="n">source_id</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">field_id</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="n">transform</span><span class="o">=</span><span class="n">DayTransform</span><span class="p">(),</span> <span class="n">name</span><span class="o">=</span><span class="s2">&qu [...]
+<a id="__codelineno-5-34" name="__codelineno-5-34" href="#__codelineno-5-34"></a> <span class="p">)</span>
+<a id="__codelineno-5-35" name="__codelineno-5-35" href="#__codelineno-5-35"></a><span class="p">)</span>
+<a id="__codelineno-5-36" name="__codelineno-5-36" href="#__codelineno-5-36"></a>
+<a id="__codelineno-5-37" name="__codelineno-5-37" href="#__codelineno-5-37"></a><span class="kn">from</span> <span class="nn">pyiceberg.table.sorting</span> <span class="kn">import</span> <span class="n">SortOrder</span><span class="p">,</span> <span class="n">SortField</span>
+<a id="__codelineno-5-38" name="__codelineno-5-38" href="#__codelineno-5-38"></a><span class="kn">from</span> <span class="nn">pyiceberg.transforms</span> <span class="kn">import</span> <span class="n">IdentityTransform</span>
+<a id="__codelineno-5-39" name="__codelineno-5-39" href="#__codelineno-5-39"></a>
+<a id="__codelineno-5-40" name="__codelineno-5-40" href="#__codelineno-5-40"></a><span class="c1"># Sort on the symbol</span>
+<a id="__codelineno-5-41" name="__codelineno-5-41" href="#__codelineno-5-41"></a><span class="n">sort_order</span> <span class="o">=</span> <span class="n">SortOrder</span><span class="p">(</span><span class="n">SortField</span><span class="p">(</span><span class="n">source_id</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">transform</span><span class="o">=</span><span class="n">IdentityTransform</span><span class="p">()))</span>
+<a id="__codelineno-5-42" name="__codelineno-5-42" href="#__codelineno-5-42"></a>
+<a id="__codelineno-5-43" name="__codelineno-5-43" href="#__codelineno-5-43"></a><span class="n">catalog</span><span class="o">.</span><span class="n">create_table</span><span class="p">(</span>
+<a id="__codelineno-5-44" name="__codelineno-5-44" href="#__codelineno-5-44"></a> <span class="n">identifier</span><span class="o">=</span><span class="s2">"docs_example.bids"</span><span class="p">,</span>
+<a id="__codelineno-5-45" name="__codelineno-5-45" href="#__codelineno-5-45"></a> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span>
+<a id="__codelineno-5-46" name="__codelineno-5-46" href="#__codelineno-5-46"></a> <span class="n">partition_spec</span><span class="o">=</span><span class="n">partition_spec</span><span class="p">,</span>
+<a id="__codelineno-5-47" name="__codelineno-5-47" href="#__codelineno-5-47"></a> <span class="n">sort_order</span><span class="o">=</span><span class="n">sort_order</span><span class="p">,</span>
+<a id="__codelineno-5-48" name="__codelineno-5-48" href="#__codelineno-5-48"></a><span class="p">)</span>
+</code></pre></div>
+<h2 id="load-a-table">Load a table</h2>
+<h3 id="catalog-table">Catalog table</h3>
+<p>Loading the <code>bids</code> table:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="n">table</span> <span class="o">=</span> <span class="n">catalog</span><span class="o">.</span><span class="n">load_table</span><span class="p">(</span><span class="s2">"docs_example.bids"</span><span class="p">)</span>
+<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="c1"># Equivalent to:</span>
+<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="n">table</span> <span class="o">=</span> <span class="n">catalog</span><span class="o">.</span><span class="n">load_table</span><span class="p">((</span><span class="s2">"docs_example"</span><span class="p">,</span> <span class="s2">"bids"</span><span class="p">))</span>
+<a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a><span class="c1"># The tuple syntax can be used if the namespace or table contains a dot.</span>
+</code></pre></div>
+<p>This returns a <code>Table</code> that represents an Iceberg table that can be queried and altered.</p>
+<h3 id="static-table">Static table</h3>
+<p>To load a table directly from a metadata file (i.e., <strong>without</strong> using a catalog), you can use a <code>StaticTable</code> as follows:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="kn">from</span> <span class="nn">pyiceberg.table</span> <span class="kn">import</span> <span class="n">StaticTable</span>
+<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a>
+<a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a><span class="n">static_table</span> <span class="o">=</span> <span class="n">StaticTable</span><span class="o">.</span><span class="n">from_metadata</span><span class="p">(</span>
+<a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a> <span class="s2">"s3://warehouse/wh/nyc.db/taxis/metadata/00002-6ea51ce3-62aa-4197-9cf8-43d07c3440ca.metadata.json"</span>
+<a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a><span class="p">)</span>
+</code></pre></div>
+<p>The static-table is considered read-only.</p>
+<h2 id="schema-evolution">Schema evolution</h2>
+<p>PyIceberg supports full schema evolution through the Python API. It takes care of setting the field-IDs and makes sure that only non-breaking changes are done (can be overriden).</p>
+<p>In the examples below, the <code>.update_schema()</code> is called from the table itself.</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="k">with</span> <span class="n">table</span><span class="o">.</span><span class="n">update_schema</span><span class="p">()</span> <span class="k">as</span> <span class="n">update</span><span class="p">:</span>
+<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a> <span class="n">update</span><span class="o">.</span><span class="n">add_column</span><span class="p">(</span><span class="s2">"some_field"</span><span class="p">,</span> <span class="n">IntegerType</span><span class="p">(),</span> <span class="s2">"doc"</span><span class="p">)</span>
+</code></pre></div>
+<p>You can also initiate a transaction if you want to make more changes than just evolving the schema:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="k">with</span> <span class="n">table</span><span class="o">.</span><span class="n">transaction</span><span class="p">()</span> <span class="k">as</span> <span class="n">transaction</span><span class="p">:</span>
+<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a> <span class="k">with</span> <span class="n">transaction</span><span class="o">.</span><span class="n">update_schema</span><span class="p">()</span> <span class="k">as</span> <span class="n">update_schema</span><span class="p">:</span>
+<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a> <span class="n">update</span><span class="o">.</span><span class="n">add_column</span><span class="p">(</span><span class="s2">"some_other_field"</span><span class="p">,</span> <span class="n">IntegerType</span><span class="p">(),</span> <span class="s2">"doc"</span><span class="p">)</span>
+<a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a> <span class="c1"># ... Update properties etc</span>
+</code></pre></div>
+<h3 id="add-column">Add column</h3>
+<p>Using <code>add_column</code> you can add a column, without having to worry about the field-id:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="k">with</span> <span class="n">table</span><span class="o">.</span><span class="n">update_schema</span><span class="p">()</span> <span class="k">as</span> <span class="n">update</span><span class="p">:</span>
+<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a> <span class="n">update</span><span class="o">.</span><span class="n">add_column</span><span class="p">(</span><span class="s2">"retries"</span><span class="p">,</span> <span class="n">IntegerType</span><span class="p">(),</span> <span class="s2">"Number of retries to place the bid"</span><span class="p">)</span>
+<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a> <span class="c1"># In a struct</span>
+<a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a> <span class="n">update</span><span class="o">.</span><span class="n">add_column</span><span class="p">(</span><span class="s2">"details.confirmed_by"</span><span class="p">,</span> <span class="n">StringType</span><span class="p">(),</span> <span class="s2">"Name of the exchange"</span><span class="p">)</span>
+</code></pre></div>
+<h3 id="rename-column">Rename column</h3>
+<p>Renaming a field in an Iceberg table is simple:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="k">with</span> <span class="n">table</span><span class="o">.</span><span class="n">update_schema</span><span class="p">()</span> <span class="k">as</span> <span class="n">update</span><span class="p">:</span>
+<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a> <span class="n">update</span><span class="o">.</span><span class="n">rename_column</span><span class="p">(</span><span class="s2">"retries"</span><span class="p">,</span> <span class="s2">"num_retries"</span><span class="p">)</span>
+<a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a> <span class="c1"># This will rename `confirmed_by` to `exchange`</span>
+<a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a> <span class="n">update</span><span class="o">.</span><span class="n">rename_column</span><span class="p">(</span><span class="s2">"properties.confirmed_by"</span><span class="p">,</span> <span class="s2">"exchange"</span><span class="p">)</span>
+</code></pre></div>
+<h3 id="move-column">Move column</h3>
+<p>Move a field inside of struct:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="k">with</span> <span class="n">table</span><span class="o">.</span><span class="n">update_schema</span><span class="p">()</span> <span class="k">as</span> <span class="n">update</span><span class="p">:</span>
+<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a> <span class="n">update</span><span class="o">.</span><span class="n">move_first</span><span class="p">(</span><span class="s2">"symbol"</span><span class="p">)</span>
+<a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a> <span class="n">update</span><span class="o">.</span><span class="n">move_after</span><span class="p">(</span><span class="s2">"bid"</span><span class="p">,</span> <span class="s2">"ask"</span><span class="p">)</span>
+<a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a> <span class="c1"># This will move `confirmed_by` before `exchange`</span>
+<a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a> <span class="n">update</span><span class="o">.</span><span class="n">move_before</span><span class="p">(</span><span class="s2">"details.created_by"</span><span class="p">,</span> <span class="s2">"details.exchange"</span><span class="p">)</span>
+</code></pre></div>
+<h3 id="update-column">Update column</h3>
+<p>Update a fields' type, description or required.</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="k">with</span> <span class="n">table</span><span class="o">.</span><span class="n">update_schema</span><span class="p">()</span> <span class="k">as</span> <span class="n">update</span><span class="p">:</span>
+<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a> <span class="c1"># Promote a float to a double</span>
+<a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a> <span class="n">update</span><span class="o">.</span><span class="n">update_column</span><span class="p">(</span><span class="s2">"bid"</span><span class="p">,</span> <span class="n">field_type</span><span class="o">=</span><span class="n">DoubleType</span><span class="p">())</span>
+<a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a> <span class="c1"># Make a field optional</span>
+<a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a> <span class="n">update</span><span class="o">.</span><span class="n">update_column</span><span class="p">(</span><span class="s2">"symbol"</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+<a id="__codelineno-13-6" name="__codelineno-13-6" href="#__codelineno-13-6"></a> <span class="c1"># Update the documentation</span>
+<a id="__codelineno-13-7" name="__codelineno-13-7" href="#__codelineno-13-7"></a> <span class="n">update</span><span class="o">.</span><span class="n">update_column</span><span class="p">(</span><span class="s2">"symbol"</span><span class="p">,</span> <span class="n">doc</span><span class="o">=</span><span class="s2">"Name of the share on the exchange"</span><span class="p">)</span>
+</code></pre></div>
+<p>Be careful, some operations are not compatible, but can still be done at your own risk by setting <code>allow_incompatible_changes</code>:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="k">with</span> <span class="n">table</span><span class="o">.</span><span class="n">update_schema</span><span class="p">(</span><span class="n">allow_incompatible_changes</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">as</span> <span class="n">update</span><span class="p">:</span>
+<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a> <span class="c1"># Incompatible change, cannot require an optional field</span>
+<a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a> <span class="n">update</span><span class="o">.</span><span class="n">update_column</span><span class="p">(</span><span class="s2">"symbol"</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+</code></pre></div>
+<h3 id="delete-column">Delete column</h3>
+<p>Delete a field, careful this is a incompatible change (readers/writers might expect this field):</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="k">with</span> <span class="n">table</span><span class="o">.</span><span class="n">update_schema</span><span class="p">(</span><span class="n">allow_incompatible_changes</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">as</span> <span class="n">update</span><span class="p">:</span>
+<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a> <span class="n">update</span><span class="o">.</span><span class="n">delete_column</span><span class="p">(</span><span class="s2">"some_field"</span><span class="p">)</span>
+</code></pre></div>
+<h2 id="table-properties">Table properties</h2>
+<p>Set and remove properties through the <code>Transaction</code> API:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="k">with</span> <span class="n">table</span><span class="o">.</span><span class="n">transaction</span><span class="p">()</span> <span class="k">as</span> <span class="n">transaction</span><span class="p">:</span>
+<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a> <span class="n">transaction</span><span class="o">.</span><span class="n">set_properties</span><span class="p">(</span><span class="n">abc</span><span class="o">=</span><span class="s2">"def"</span><span class="p">)</span>
+<a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a>
+<a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a><span class="k">assert</span> <span class="n">table</span><span class="o">.</span><span class="n">properties</span> <span class="o">==</span> <span class="p">{</span><span class="s2">"abc"</span><span class="p">:</span> <span class="s2">"def"</span><span class="p">}</span>
+<a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a>
+<a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a><span class="k">with</span> <span class="n">table</span><span class="o">.</span><span class="n">transaction</span><span class="p">()</span> <span class="k">as</span> <span class="n">transaction</span><span class="p">:</span>
+<a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a> <span class="n">transaction</span><span class="o">.</span><span class="n">remove_properties</span><span class="p">(</span><span class="s2">"abc"</span><span class="p">)</span>
+<a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a>
+<a id="__codelineno-16-9" name="__codelineno-16-9" href="#__codelineno-16-9"></a><span class="k">assert</span> <span class="n">table</span><span class="o">.</span><span class="n">properties</span> <span class="o">==</span> <span class="p">{}</span>
+</code></pre></div>
+<p>Or, without context manager:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="n">table</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">transaction</span><span class="p">()</span><span class="o">.</span><span class="n">set_properties</span><span class="p">(</span><span class="n">abc</span><span class="o">=</span><span class="s2">"def"</span><span class="p">)</span>< [...]
+<a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a>
+<a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a><span class="k">assert</span> <span class="n">table</span><span class="o">.</span><span class="n">properties</span> <span class="o">==</span> <span class="p">{</span><span class="s2">"abc"</span><span class="p">:</span> <span class="s2">"def"</span><span class="p">}</span>
+<a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a>
+<a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a><span class="n">table</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">transaction</span><span class="p">()</span><span class="o">.</span><span class="n">remove_properties</span><span class="p">(</span><span class="s2">"abc"</span><span class="p">)</span><span class="o">.</span><span class="n">commit_transaction</span><span class="p">()</span>
+<a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a>
+<a id="__codelineno-17-7" name="__codelineno-17-7" href="#__codelineno-17-7"></a><span class="k">assert</span> <span class="n">table</span><span class="o">.</span><span class="n">properties</span> <span class="o">==</span> <span class="p">{}</span>
+</code></pre></div>
+<h2 id="query-the-data">Query the data</h2>
+<p>To query a table, a table scan is needed. A table scan accepts a filter, columns, optionally a limit and a snapshot ID:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="kn">from</span> <span class="nn">pyiceberg.catalog</span> <span class="kn">import</span> <span class="n">load_catalog</span>
+<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a><span class="kn">from</span> <span class="nn">pyiceberg.expressions</span> <span class="kn">import</span> <span class="n">GreaterThanOrEqual</span>
+<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a>
+<a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a><span class="n">catalog</span> <span class="o">=</span> <span class="n">load_catalog</span><span class="p">(</span><span class="s2">"default"</span><span class="p">)</span>
+<a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a><span class="n">table</span> <span class="o">=</span> <span class="n">catalog</span><span class="o">.</span><span class="n">load_table</span><span class="p">(</span><span class="s2">"nyc.taxis"</span><span class="p">)</span>
+<a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a>
+<a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a><span class="n">scan</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">scan</span><span class="p">(</span>
+<a id="__codelineno-18-8" name="__codelineno-18-8" href="#__codelineno-18-8"></a> <span class="n">row_filter</span><span class="o">=</span><span class="n">GreaterThanOrEqual</span><span class="p">(</span><span class="s2">"trip_distance"</span><span class="p">,</span> <span class="mf">10.0</span><span class="p">),</span>
+<a id="__codelineno-18-9" name="__codelineno-18-9" href="#__codelineno-18-9"></a> <span class="n">selected_fields</span><span class="o">=</span><span class="p">(</span><span class="s2">"VendorID"</span><span class="p">,</span> <span class="s2">"tpep_pickup_datetime"</span><span class="p">,</span> <span class="s2">"tpep_dropoff_datetime"</span><span class="p">),</span>
+<a id="__codelineno-18-10" name="__codelineno-18-10" href="#__codelineno-18-10"></a> <span class="n">limit</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
+<a id="__codelineno-18-11" name="__codelineno-18-11" href="#__codelineno-18-11"></a><span class="p">)</span>
+<a id="__codelineno-18-12" name="__codelineno-18-12" href="#__codelineno-18-12"></a>
+<a id="__codelineno-18-13" name="__codelineno-18-13" href="#__codelineno-18-13"></a><span class="c1"># Or filter using a string predicate</span>
+<a id="__codelineno-18-14" name="__codelineno-18-14" href="#__codelineno-18-14"></a><span class="n">scan</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">scan</span><span class="p">(</span>
+<a id="__codelineno-18-15" name="__codelineno-18-15" href="#__codelineno-18-15"></a> <span class="n">row_filter</span><span class="o">=</span><span class="s2">"trip_distance > 10.0"</span><span class="p">,</span>
+<a id="__codelineno-18-16" name="__codelineno-18-16" href="#__codelineno-18-16"></a><span class="p">)</span>
+<a id="__codelineno-18-17" name="__codelineno-18-17" href="#__codelineno-18-17"></a>
+<a id="__codelineno-18-18" name="__codelineno-18-18" href="#__codelineno-18-18"></a><span class="p">[</span><span class="n">task</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">file_path</span> <span class="k">for</span> <span class="n">task</span> <span class="ow">in</span> <span class="n">scan</span><span class="o">.</span><span class="n">plan_files</span><span class="p">()]</span>
+</code></pre></div>
+<p>The low level API <code>plan_files</code> methods returns a set of tasks that provide the files that might contain matching rows:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="p">[</span>
+<a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a><span class="w"> </span><span class="s2">"s3://warehouse/wh/nyc/taxis/data/00003-4-42464649-92dd-41ad-b83b-dea1a2fe4b58-00001.parquet"</span>
+<a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a><span class="p">]</span>
+</code></pre></div>
+<p>In this case it is up to the engine itself to filter the file itself. Below, <code>to_arrow()</code> and <code>to_duckdb()</code> that already do this for you.</p>
+<h3 id="apache-arrow">Apache Arrow</h3>
+<!-- prettier-ignore-start -->
+
+<div class="admonition note">
+<p class="admonition-title">Requirements</p>
+<p>This requires <a href="../">PyArrow to be installed</a>.</p>
+</div>
+<!-- prettier-ignore-end -->
+
+<p>Using PyIceberg it is filter out data from a huge table and pull it into a PyArrow table:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="n">table</span><span class="o">.</span><span class="n">scan</span><span class="p">(</span>
+<a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a> <span class="n">row_filter</span><span class="o">=</span><span class="n">GreaterThanOrEqual</span><span class="p">(</span><span class="s2">"trip_distance"</span><span class="p">,</span> <span class="mf">10.0</span><span class="p">),</span>
+<a id="__codelineno-20-3" name="__codelineno-20-3" href="#__codelineno-20-3"></a> <span class="n">selected_fields</span><span class="o">=</span><span class="p">(</span><span class="s2">"VendorID"</span><span class="p">,</span> <span class="s2">"tpep_pickup_datetime"</span><span class="p">,</span> <span class="s2">"tpep_dropoff_datetime"</span><span class="p">),</span>
+<a id="__codelineno-20-4" name="__codelineno-20-4" href="#__codelineno-20-4"></a><span class="p">)</span><span class="o">.</span><span class="n">to_arrow</span><span class="p">()</span>
+</code></pre></div>
+<p>This will return a PyArrow table:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a>pyarrow.Table
+<a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a>VendorID: int64
+<a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a>tpep_pickup_datetime: timestamp[us, tz=+00:00]
+<a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a>tpep_dropoff_datetime: timestamp[us, tz=+00:00]
+<a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a>----
+<a id="__codelineno-21-6" name="__codelineno-21-6" href="#__codelineno-21-6"></a>VendorID: [[2,1,2,1,1,...,2,2,2,2,2],[2,1,1,1,2,...,1,1,2,1,2],...,[2,2,2,2,2,...,2,6,6,2,2],[2,2,2,2,2,...,2,2,2,2,2]]
+<a id="__codelineno-21-7" name="__codelineno-21-7" href="#__codelineno-21-7"></a>tpep_pickup_datetime: [[2021-04-01 00:28:05.000000,...,2021-04-30 23:44:25.000000]]
+<a id="__codelineno-21-8" name="__codelineno-21-8" href="#__codelineno-21-8"></a>tpep_dropoff_datetime: [[2021-04-01 00:47:59.000000,...,2021-05-01 00:14:47.000000]]
+</code></pre></div>
+<p>This will only pull in the files that that might contain matching rows.</p>
+<h3 id="duckdb">DuckDB</h3>
+<!-- prettier-ignore-start -->
+
+<div class="admonition note">
+<p class="admonition-title">Requirements</p>
+<p>This requires <a href="../">DuckDB to be installed</a>.</p>
+</div>
+<!-- prettier-ignore-end -->
+
+<p>A table scan can also be converted into a in-memory DuckDB table:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="n">con</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">scan</span><span class="p">(</span>
+<a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a> <span class="n">row_filter</span><span class="o">=</span><span class="n">GreaterThanOrEqual</span><span class="p">(</span><span class="s2">"trip_distance"</span><span class="p">,</span> <span class="mf">10.0</span><span class="p">),</span>
+<a id="__codelineno-22-3" name="__codelineno-22-3" href="#__codelineno-22-3"></a> <span class="n">selected_fields</span><span class="o">=</span><span class="p">(</span><span class="s2">"VendorID"</span><span class="p">,</span> <span class="s2">"tpep_pickup_datetime"</span><span class="p">,</span> <span class="s2">"tpep_dropoff_datetime"</span><span class="p">),</span>
+<a id="__codelineno-22-4" name="__codelineno-22-4" href="#__codelineno-22-4"></a><span class="p">)</span><span class="o">.</span><span class="n">to_duckdb</span><span class="p">(</span><span class="n">table_name</span><span class="o">=</span><span class="s2">"distant_taxi_trips"</span><span class="p">)</span>
+</code></pre></div>
+<p>Using the cursor that we can run queries on the DuckDB table:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a><span class="nb">print</span><span class="p">(</span>
+<a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a> <span class="n">con</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span>
+<a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a> <span class="s2">"SELECT tpep_dropoff_datetime - tpep_pickup_datetime AS duration FROM distant_taxi_trips LIMIT 4"</span>
+<a id="__codelineno-23-4" name="__codelineno-23-4" href="#__codelineno-23-4"></a> <span class="p">)</span><span class="o">.</span><span class="n">fetchall</span><span class="p">()</span>
+<a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a><span class="p">)</span>
+<a id="__codelineno-23-6" name="__codelineno-23-6" href="#__codelineno-23-6"></a><span class="p">[</span>
+<a id="__codelineno-23-7" name="__codelineno-23-7" href="#__codelineno-23-7"></a> <span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">seconds</span><span class="o">=</span><span class="mi">1194</span><span class="p">),),</span>
+<a id="__codelineno-23-8" name="__codelineno-23-8" href="#__codelineno-23-8"></a> <span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">seconds</span><span class="o">=</span><span class="mi">1118</span><span class="p">),),</span>
+<a id="__codelineno-23-9" name="__codelineno-23-9" href="#__codelineno-23-9"></a> <span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">seconds</span><span class="o">=</span><span class="mi">1697</span><span class="p">),),</span>
+<a id="__codelineno-23-10" name="__codelineno-23-10" href="#__codelineno-23-10"></a> <span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">seconds</span><span class="o">=</span><span class="mi">1581</span><span class="p">),),</span>
+<a id="__codelineno-23-11" name="__codelineno-23-11" href="#__codelineno-23-11"></a><span class="p">]</span>
+</code></pre></div>
+<h3 id="ray">Ray</h3>
+<!-- prettier-ignore-start -->
+
+<div class="admonition note">
+<p class="admonition-title">Requirements</p>
+<p>This requires <a href="../">Ray to be installed</a>.</p>
+</div>
+<!-- prettier-ignore-end -->
+
+<p>A table scan can also be converted into a Ray dataset:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a><span class="n">ray_dataset</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">scan</span><span class="p">(</span>
+<a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a> <span class="n">row_filter</span><span class="o">=</span><span class="n">GreaterThanOrEqual</span><span class="p">(</span><span class="s2">"trip_distance"</span><span class="p">,</span> <span class="mf">10.0</span><span class="p">),</span>
+<a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a> <span class="n">selected_fields</span><span class="o">=</span><span class="p">(</span><span class="s2">"VendorID"</span><span class="p">,</span> <span class="s2">"tpep_pickup_datetime"</span><span class="p">,</span> <span class="s2">"tpep_dropoff_datetime"</span><span class="p">),</span>
+<a id="__codelineno-24-4" name="__codelineno-24-4" href="#__codelineno-24-4"></a><span class="p">)</span><span class="o">.</span><span class="n">to_ray</span><span class="p">()</span>
+</code></pre></div>
+<p>This will return a Ray dataset:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a>Dataset(
+<a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a> num_blocks=1,
+<a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a> num_rows=1168798,
+<a id="__codelineno-25-4" name="__codelineno-25-4" href="#__codelineno-25-4"></a> schema={
+<a id="__codelineno-25-5" name="__codelineno-25-5" href="#__codelineno-25-5"></a> VendorID: int64,
+<a id="__codelineno-25-6" name="__codelineno-25-6" href="#__codelineno-25-6"></a> tpep_pickup_datetime: timestamp[us, tz=UTC],
+<a id="__codelineno-25-7" name="__codelineno-25-7" href="#__codelineno-25-7"></a> tpep_dropoff_datetime: timestamp[us, tz=UTC]
+<a id="__codelineno-25-8" name="__codelineno-25-8" href="#__codelineno-25-8"></a> }
+<a id="__codelineno-25-9" name="__codelineno-25-9" href="#__codelineno-25-9"></a>)
+</code></pre></div>
+<p>Using <a href="https://docs.ray.io/en/latest/data/api/dataset.html">Ray Dataset API</a> to interact with the dataset:</p>
+<div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a><span class="nb">print</span><span class="p">(</span><span class="n">ray_dataset</span><span class="o">.</span><span class="n">take</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span>
+<a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a><span class="p">[</span>
+<a id="__codelineno-26-3" name="__codelineno-26-3" href="#__codelineno-26-3"></a> <span class="p">{</span>
+<a id="__codelineno-26-4" name="__codelineno-26-4" href="#__codelineno-26-4"></a> <span class="s2">"VendorID"</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span>
+<a id="__codelineno-26-5" name="__codelineno-26-5" href="#__codelineno-26-5"></a> <span class="s2">"tpep_pickup_datetime"</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">(</span><span class="mi">2008</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">23</span><span class="p">,</span> <span [...]
+<a id="__codelineno-26-6" name="__codelineno-26-6" href="#__codelineno-26-6"></a> <span class="s2">"tpep_dropoff_datetime"</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">(</span><span class="mi">2009</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span cl [...]
+<a id="__codelineno-26-7" name="__codelineno-26-7" href="#__codelineno-26-7"></a> <span class="p">},</span>
+<a id="__codelineno-26-8" name="__codelineno-26-8" href="#__codelineno-26-8"></a> <span class="p">{</span>
+<a id="__codelineno-26-9" name="__codelineno-26-9" href="#__codelineno-26-9"></a> <span class="s2">"VendorID"</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span>
+<a id="__codelineno-26-10" name="__codelineno-26-10" href="#__codelineno-26-10"></a> <span class="s2">"tpep_pickup_datetime"</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">(</span><span class="mi">2008</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">23</span><span class="p">,</span> <sp [...]
+<a id="__codelineno-26-11" name="__codelineno-26-11" href="#__codelineno-26-11"></a> <span class="s2">"tpep_dropoff_datetime"</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">(</span><span class="mi">2009</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <spa [...]
+<a id="__codelineno-26-12" name="__codelineno-26-12" href="#__codelineno-26-12"></a> <span class="p">},</span>
+<a id="__codelineno-26-13" name="__codelineno-26-13" href="#__codelineno-26-13"></a><span class="p">]</span>
+</code></pre></div>
+
+
+
+
+
+
+
+
+ </article>
+ </div>
+
+
+ </div>
+
+ <button type="button" class="md-top md-icon" data-md-component="top" hidden>
+
+ <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"/></svg>
+ Back to top
+ </button>
+
+ </main>
+
+ <footer class="md-footer">
+
+ <div class="md-footer-meta md-typeset">
+ <div class="md-footer-meta__inner md-grid">
+ <div class="md-copyright">
+
+
+ Made with
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
+ Material for MkDocs
+ </a>
+
+</div>
+
+ </div>
+ </div>
+</footer>
+
+ </div>
+ <div class="md-dialog" data-md-component="dialog">
+ <div class="md-dialog__inner md-typeset"></div>
+ </div>
+
+ <script id="__config" type="application/json">{"base": "..", "features": ["navigation.top", "navigation.tracking", "navigation.tabs", "navigation.tabs.sticky"], "search": "../assets/javascripts/workers/search.dfff1995.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result. [...]
+
+
+ <script src="../assets/javascripts/bundle.dff1b7c8.min.js"></script>
+
+
+ </body>
+</html>
\ No newline at end of file
diff --git a/assets/_mkdocstrings.css b/assets/_mkdocstrings.css
new file mode 100644
index 0000000..049a254
--- /dev/null
+++ b/assets/_mkdocstrings.css
@@ -0,0 +1,64 @@
+
+/* Avoid breaking parameter names, etc. in table cells. */
+.doc-contents td code {
+ word-break: normal !important;
+}
+
+/* No line break before first paragraph of descriptions. */
+.doc-md-description,
+.doc-md-description>p:first-child {
+ display: inline;
+}
+
+/* Max width for docstring sections tables. */
+.doc .md-typeset__table,
+.doc .md-typeset__table table {
+ display: table !important;
+ width: 100%;
+}
+
+.doc .md-typeset__table tr {
+ display: table-row;
+}
+
+/* Defaults in Spacy table style. */
+.doc-param-default {
+ float: right;
+}
+
+/* Keep headings consistent. */
+h1.doc-heading,
+h2.doc-heading,
+h3.doc-heading,
+h4.doc-heading,
+h5.doc-heading,
+h6.doc-heading {
+ font-weight: 400;
+ line-height: 1.5;
+ color: inherit;
+ text-transform: none;
+}
+
+h1.doc-heading {
+ font-size: 1.6rem;
+}
+
+h2.doc-heading {
+ font-size: 1.2rem;
+}
+
+h3.doc-heading {
+ font-size: 1.15rem;
+}
+
+h4.doc-heading {
+ font-size: 1.10rem;
+}
+
+h5.doc-heading {
+ font-size: 1.05rem;
+}
+
+h6.doc-heading {
+ font-size: 1rem;
+}
\ No newline at end of file
diff --git a/assets/images/favicon.png b/assets/images/favicon.png
new file mode 100644
index 0000000..1cf13b9
Binary files /dev/null and b/assets/images/favicon.png differ
diff --git a/assets/images/iceberg-logo-icon.png b/assets/images/iceberg-logo-icon.png
new file mode 100644
index 0000000..e4a99c3
Binary files /dev/null and b/assets/images/iceberg-logo-icon.png differ
diff --git a/assets/javascripts/bundle.dff1b7c8.min.js b/assets/javascripts/bundle.dff1b7c8.min.js
new file mode 100644
index 0000000..a89e799
--- /dev/null
+++ b/assets/javascripts/bundle.dff1b7c8.min.js
@@ -0,0 +1,29 @@
+"use strict";(()=>{var gi=Object.create;var dr=Object.defineProperty;var xi=Object.getOwnPropertyDescriptor;var yi=Object.getOwnPropertyNames,Ht=Object.getOwnPropertySymbols,Ei=Object.getPrototypeOf,hr=Object.prototype.hasOwnProperty,Xr=Object.prototype.propertyIsEnumerable;var Jr=(e,t,r)=>t in e?dr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,I=(e,t)=>{for(var r in t||(t={}))hr.call(t,r)&&Jr(e,r,t[r]);if(Ht)for(var r of Ht(t))Xr.call(t,r)&&Jr(e,r,t[r]);return e};var Z [...]
+ * clipboard.js v2.0.11
+ * https://clipboardjs.com/
+ *
+ * Licensed MIT ÂĐ Zeno Rocha
+ */(function(t,r){typeof Mt=="object"&&typeof Dr=="object"?Dr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Mt=="object"?Mt.ClipboardJS=r():t.ClipboardJS=r()})(Mt,function(){return function(){var e={686:function(o,n,i){"use strict";i.d(n,{default:function(){return vi}});var s=i(279),a=i.n(s),c=i(370),p=i.n(c),m=i(817),f=i.n(m);function u(F){try{return document.execCommand(F)}catch(S){return!1}}var d=function(S){var y=f()(S);return u("cut"),y},b=d;function _(F){var [...]
+ * escape-html
+ * Copyright(c) 2012-2013 TJ Holowaychuk
+ * Copyright(c) 2015 Andreas Lubbe
+ * Copyright(c) 2015 Tiancheng "Timothy" Gu
+ * MIT Licensed
+ */var _a=/["'&<>]/;Pn.exports=Aa;function Aa(e){var t=""+e,r=_a.exec(t);if(!r)return t;var o,n="",i=0,s=0;for(i=r.index;i<t.length;i++){switch(t.charCodeAt(i)){case 34:o=""";break;case 38:o="&";break;case 39:o="'";break;case 60:o="<";break;case 62:o=">";break;default:continue}s!==i&&(n+=t.substring(s,i)),s=i+1,n+=o}return s!==i?n+t.substring(s,i):n}});var cO=$t(to());/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */var gr=function(e,t){return gr=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(r[n]=o[n])},gr(e,t)};function ie(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");gr(e,t);function r(){this.constructor=e}e.prototype=t===null?Obje [...]
+`+r.map(function(o,n){return n+1+") "+o.toString()}).join(`
+ `):"",this.name="UnsubscriptionError",this.errors=r}});function De(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Pe=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,o,n,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Ee(s),c=a.next();!c.done;c=a.next()){var p=c.value;p.remove(this)}}catch(_){t={error:_}}f [...]
+//# sourceMappingURL=bundle.dff1b7c8.min.js.map
+
diff --git a/assets/javascripts/bundle.dff1b7c8.min.js.map b/assets/javascripts/bundle.dff1b7c8.min.js.map
new file mode 100644
index 0000000..82d9023
--- /dev/null
+++ b/assets/javascripts/bundle.dff1b7c8.min.js.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/clipboard/dist/clipboard.js", "node_modules/escape-html/index.js", "src/assets/javascripts/bundle.ts", "node_modules/rxjs/node_modules/tslib/tslib.es6.js", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/interna [...]
+ "sourceRoot": "../../..",
+ "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-vis [...]
+ "mappings": "6+BAAA,IAAAA,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAAC,SAAUC,EAAQC,EAAS,CAC1B,OAAOH,IAAY,UAAY,OAAOC,IAAW,YAAcE,EAAQ,EACvE,OAAO,QAAW,YAAc,OAAO,IAAM,OAAOA,CAAO,EAC1DA,EAAQ,CACX,GAAEH,GAAO,UAAY,CAAE,aASrB,SAASI,EAA0BC,EAAO,CACxC,IAAIC,EAAmB,GACnBC,EAA0B,GAC1BC,EAAiC,KAEjCC,EAAsB,CACxB,KAAM,GACN,OAAQ,GACR,IAAK,GACL,IAAK,GACL,MAAO,GACP,SAAU,GACV,OAAQ,GACR,KAAM,GACN,MAAO,GACP,KAAM,GACN,KAAM,GACN,SAAU,GACV,iBAAkB,EACpB,EAOA,SAASC,EAAmBC,EAAI,CAC9B,MACE,GAAAA,GACAA,IAAO,UACPA,EAAG,WAAa,QAC [...]
+ "names": ["require_focus_visible", "__commonJSMin", "exports", "module", "global", "factory", "applyFocusVisiblePolyfill", "scope", "hadKeyboardEvent", "hadFocusVisibleRecently", "hadFocusVisibleRecentlyTimeout", "inputTypesAllowlist", "isValidFocusTarget", "el", "focusTriggersKeyboardModality", "type", "tagName", "addFocusVisibleClass", "removeFocusVisibleClass", "onKeyDown", "e", "onPointerDown", "onFocus", "onBlur", "onVisibilityChange", "addInitialPointerMoveListeners", "onInitialP [...]
+}
diff --git a/assets/javascripts/lunr/min/lunr.ar.min.js b/assets/javascripts/lunr/min/lunr.ar.min.js
new file mode 100644
index 0000000..9b06c26
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.ar.min.js
@@ -0,0 +1 @@
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ar=function(){this.pipeline.reset(),this.pipeline.add(e.ar.trimmer,e.ar.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.da.min.js b/assets/javascripts/lunr/min/lunr.da.min.js
new file mode 100644
index 0000000..b9d8509
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.da.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `Danish` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.de.min.js b/assets/javascripts/lunr/min/lunr.de.min.js
new file mode 100644
index 0000000..f3b5c10
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.de.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `German` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.de=function(){this.pipeline.reset(),this.pipeline.add(e.de.trimmer,e.de.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.du.min.js b/assets/javascripts/lunr/min/lunr.du.min.js
new file mode 100644
index 0000000..49a0f3f
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.du.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `Dutch` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");console.warn('[Lunr Languages] Please use the "nl" instead of the "du". The "nl" c [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.es.min.js b/assets/javascripts/lunr/min/lunr.es.min.js
new file mode 100644
index 0000000..2989d34
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.es.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `Spanish` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(e,s){"function"==typeof define&&define.amd?define(s):"object"==typeof exports?module.exports=s():s()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.es=function(){this.pipeline.reset(),this.pipeline.add(e.es.trimmer,e.es.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.fi.min.js b/assets/javascripts/lunr/min/lunr.fi.min.js
new file mode 100644
index 0000000..29f5dfc
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.fi.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `Finnish` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(i,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(i.lunr)}(this,function(){return function(i){if(void 0===i)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===i.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");i.fi=function(){this.pipeline.reset(),this.pipeline.add(i.fi.trimmer,i.fi.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.fr.min.js b/assets/javascripts/lunr/min/lunr.fr.min.js
new file mode 100644
index 0000000..68cd009
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.fr.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `French` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.fr=function(){this.pipeline.reset(),this.pipeline.add(e.fr.trimmer,e.fr.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.he.min.js b/assets/javascripts/lunr/min/lunr.he.min.js
new file mode 100644
index 0000000..b863d3e
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.he.min.js
@@ -0,0 +1 @@
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.he=function(){this.pipeline.reset(),this.pipeline.add(e.he.trimmer,e.he.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.hi.min.js b/assets/javascripts/lunr/min/lunr.hi.min.js
new file mode 100644
index 0000000..7dbc414
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.hi.min.js
@@ -0,0 +1 @@
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hi=function(){this.pipeline.reset(),this.pipeline.add(e.hi.trimmer,e.hi.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.hu.min.js b/assets/javascripts/lunr/min/lunr.hu.min.js
new file mode 100644
index 0000000..ed9d909
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.hu.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `Hungarian` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hu=function(){this.pipeline.reset(),this.pipeline.add(e.hu.trimmer,e.hu.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.hy.min.js b/assets/javascripts/lunr/min/lunr.hy.min.js
new file mode 100644
index 0000000..b37f792
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.hy.min.js
@@ -0,0 +1 @@
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hy=function(){this.pipeline.reset(),this.pipeline.add(e.hy.trimmer,e.hy.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.it.min.js b/assets/javascripts/lunr/min/lunr.it.min.js
new file mode 100644
index 0000000..344b6a3
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.it.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `Italian` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.it=function(){this.pipeline.reset(),this.pipeline.add(e.it.trimmer,e.it.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.ja.min.js b/assets/javascripts/lunr/min/lunr.ja.min.js
new file mode 100644
index 0000000..5f254eb
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.ja.min.js
@@ -0,0 +1 @@
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.ja=function(){this.pipeline.reset(),this.pipeline.add(e. [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.jp.min.js b/assets/javascripts/lunr/min/lunr.jp.min.js
new file mode 100644
index 0000000..c055eba
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.jp.min.js
@@ -0,0 +1 @@
+module.exports=require("./lunr.ja");
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.kn.min.js b/assets/javascripts/lunr/min/lunr.kn.min.js
new file mode 100644
index 0000000..1cef9be
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.kn.min.js
@@ -0,0 +1 @@
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.kn=function(){this.pipeline.reset(),this.pipeline.add(e.kn.trimmer,e.kn.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.ko.min.js b/assets/javascripts/lunr/min/lunr.ko.min.js
new file mode 100644
index 0000000..eaf9dab
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.ko.min.js
@@ -0,0 +1 @@
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ko=function(){this.pipeline.reset(),this.pipeline.add(e.ko.trimmer,e.ko.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.multi.min.js b/assets/javascripts/lunr/min/lunr.multi.min.js
new file mode 100644
index 0000000..7debad0
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.multi.min.js
@@ -0,0 +1 @@
+!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){e.multiLanguage=function(){for(var t=Array.prototype.slice.call(arguments),i=t.join("-"),r="",n=[],s=[],p=0;p<t.length;++p)"en"==t[p]?(r+="\\w",n.unshift(e.stopWordFilter),n.push(e.stemmer),s.push(e.stemmer)):(r+=e[t[p]].wordCharacters,e[t[p]].stopWordFilter&&n.unshift(e[t[p]].stopWordFilter),e[t[p]].stemmer&&(n.push(e[t[p]].stemmer),s [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.nl.min.js b/assets/javascripts/lunr/min/lunr.nl.min.js
new file mode 100644
index 0000000..c4a2535
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.nl.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `Dutch` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(r,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(r.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");r.nl=function(){this.pipeline.reset(),this.pipeline.add(r.nl.trimmer,r.nl.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.no.min.js b/assets/javascripts/lunr/min/lunr.no.min.js
new file mode 100644
index 0000000..92bc7e4
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.no.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `Norwegian` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.pt.min.js b/assets/javascripts/lunr/min/lunr.pt.min.js
new file mode 100644
index 0000000..6c16996
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.pt.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `Portuguese` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.pt=function(){this.pipeline.reset(),this.pipeline.add(e.pt.trimmer,e.pt.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.ro.min.js b/assets/javascripts/lunr/min/lunr.ro.min.js
new file mode 100644
index 0000000..7277140
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.ro.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `Romanian` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(e,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ro=function(){this.pipeline.reset(),this.pipeline.add(e.ro.trimmer,e.ro.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.ru.min.js b/assets/javascripts/lunr/min/lunr.ru.min.js
new file mode 100644
index 0000000..186cc48
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.ru.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `Russian` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ru=function(){this.pipeline.reset(),this.pipeline.add(e.ru.trimmer,e.ru.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.sa.min.js b/assets/javascripts/lunr/min/lunr.sa.min.js
new file mode 100644
index 0000000..50ee564
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.sa.min.js
@@ -0,0 +1 @@
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sa=function(){this.pipeline.reset(),this.pipeline.add(e.sa.trimmer,e.sa.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.stemmer.support.min.js b/assets/javascripts/lunr/min/lunr.stemmer.support.min.js
new file mode 100644
index 0000000..abd4475
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.stemmer.support.min.js
@@ -0,0 +1 @@
+!function(r,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(r.lunr)}(this,function(){return function(r){r.stemmerSupport={Among:function(r,t,i,s){if(this.toCharArray=function(r){for(var t=r.length,i=new Array(t),s=0;s<t;s++)i[s]=r.charCodeAt(s);return i},!r&&""!=r||!t&&0!=t||!i)throw"Bad Among initialisation: s:"+r+", substring_i: "+t+", result: "+i;this.s_size=r.length,this.s=this.toCharArray(r),this.substring_i=t,this.result=i,this.met [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.sv.min.js b/assets/javascripts/lunr/min/lunr.sv.min.js
new file mode 100644
index 0000000..3e5eb64
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.sv.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `Swedish` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.ta.min.js b/assets/javascripts/lunr/min/lunr.ta.min.js
new file mode 100644
index 0000000..a644bed
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.ta.min.js
@@ -0,0 +1 @@
+!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ta=function(){this.pipeline.reset(),this.pipeline.add(e.ta.trimmer,e.ta.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.te.min.js b/assets/javascripts/lunr/min/lunr.te.min.js
new file mode 100644
index 0000000..9fa7a93
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.te.min.js
@@ -0,0 +1 @@
+!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.te=function(){this.pipeline.reset(),this.pipeline.add(e.te.trimmer,e.te.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.th.min.js b/assets/javascripts/lunr/min/lunr.th.min.js
new file mode 100644
index 0000000..dee3aac
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.th.min.js
@@ -0,0 +1 @@
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.th=function(){this.pipeline.reset(),this.pipeline.add(e. [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.tr.min.js b/assets/javascripts/lunr/min/lunr.tr.min.js
new file mode 100644
index 0000000..563f6ec
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.tr.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Lunr languages, `Turkish` language
+ * https://github.com/MihaiValentin/lunr-languages
+ *
+ * Copyright 2014, Mihai Valentin
+ * http://www.mozilla.org/MPL/
+ */
+/*!
+ * based on
+ * Snowball JavaScript Library v0.3
+ * http://code.google.com/p/urim/
+ * http://snowball.tartarus.org/
+ *
+ * Copyright 2010, Oleg Mazko
+ * http://www.mozilla.org/MPL/
+ */
+
+!function(r,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(r.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");r.tr=function(){this.pipeline.reset(),this.pipeline.add(r.tr.trimmer,r.tr.stopWord [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.vi.min.js b/assets/javascripts/lunr/min/lunr.vi.min.js
new file mode 100644
index 0000000..22aed28
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.vi.min.js
@@ -0,0 +1 @@
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.vi=function(){this.pipeline.reset(),this.pipeline.add(e.vi.stopWordFilter,e.vi.t [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/min/lunr.zh.min.js b/assets/javascripts/lunr/min/lunr.zh.min.js
new file mode 100644
index 0000000..fda66e9
--- /dev/null
+++ b/assets/javascripts/lunr/min/lunr.zh.min.js
@@ -0,0 +1 @@
+!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r(require("@node-rs/jieba")):r()(e.lunr)}(this,function(e){return function(r,t){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==r.version[0];r.zh=function(){this.pipeline. [...]
\ No newline at end of file
diff --git a/assets/javascripts/lunr/tinyseg.js b/assets/javascripts/lunr/tinyseg.js
new file mode 100644
index 0000000..167fa6d
--- /dev/null
+++ b/assets/javascripts/lunr/tinyseg.js
@@ -0,0 +1,206 @@
+/**
+ * export the module via AMD, CommonJS or as a browser global
+ * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js
+ */
+;(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module.
+ define(factory)
+ } else if (typeof exports === 'object') {
+ /**
+ * Node. Does not work with strict CommonJS, but
+ * only CommonJS-like environments that support module.exports,
+ * like Node.
+ */
+ module.exports = factory()
+ } else {
+ // Browser globals (root is window)
+ factory()(root.lunr);
+ }
+}(this, function () {
+ /**
+ * Just return a value to define the module export.
+ * This example returns an object, but the module
+ * can return a function as the exported value.
+ */
+
+ return function(lunr) {
+ // TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript
+ // (c) 2008 Taku Kudo <ta...@chasen.org>
+ // TinySegmenter is freely distributable under the terms of a new BSD licence.
+ // For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt
+
+ function TinySegmenter() {
+ var patterns = {
+ "[äļäšäļåäšå
äļå
Ŧäđåįūåäļåå
]":"M",
+ "[äļ-éū ã
ããĩãķ]":"H",
+ "[ã-ã]":"I",
+ "[ãĄ-ãīãžï―ą-ïūïūï―°]":"K",
+ "[a-zA-Zï―-ï―ïžĄ-ïžš]":"A",
+ "[0-9ïž-ïž]":"N"
+ }
+ this.chartype_ = [];
+ for (var i in patterns) {
+ var regexp = new RegExp(i);
+ this.chartype_.push([regexp, patterns[i]]);
+ }
+
+ this.BIAS__ = -332
+ this.BC1__ = {"HH":6,"II":2461,"KH":406,"OH":-1378};
+ this.BC2__ = {"AA":-3267,"AI":2744,"AN":-878,"HH":-4070,"HM":-1711,"HN":4012,"HO":3761,"IA":1327,"IH":-1184,"II":-1332,"IK":1721,"IO":5492,"KI":3831,"KK":-8741,"MH":-3132,"MK":3334,"OO":-2920};
+ this.BC3__ = {"HH":996,"HI":626,"HK":-721,"HN":-1307,"HO":-836,"IH":-301,"KK":2762,"MK":1079,"MM":4034,"OA":-1652,"OH":266};
+ this.BP1__ = {"BB":295,"OB":304,"OO":-125,"UB":352};
+ this.BP2__ = {"BO":60,"OO":-1762};
+ this.BQ1__ = {"BHH":1150,"BHM":1521,"BII":-1158,"BIM":886,"BMH":1208,"BNH":449,"BOH":-91,"BOO":-2597,"OHI":451,"OIH":-296,"OKA":1851,"OKH":-1020,"OKK":904,"OOO":2965};
+ this.BQ2__ = {"BHH":118,"BHI":-1159,"BHM":466,"BIH":-919,"BKK":-1720,"BKO":864,"OHH":-1139,"OHM":-181,"OIH":153,"UHI":-1146};
+ this.BQ3__ = {"BHH":-792,"BHI":2664,"BII":-299,"BKI":419,"BMH":937,"BMM":8335,"BNN":998,"BOH":775,"OHH":2174,"OHM":439,"OII":280,"OKH":1798,"OKI":-793,"OKO":-2242,"OMH":-2402,"OOO":11699};
+ this.BQ4__ = {"BHH":-3895,"BIH":3761,"BII":-4654,"BIK":1348,"BKK":-1806,"BMI":-3385,"BOO":-12396,"OAH":926,"OHH":266,"OHK":-2036,"ONN":-973};
+ this.BW1__ = {",ãĻ":660,",å":727,"B1ã":1404,"B1å":542,"ããĻ":660,"ãå":727,"ããĻ":1682,"ããĢ":1505,"ãã":1743,"ããĢ":-2055,"ãã":672,"ãã":-4817,"ãã":665,"ãã":3472,"ãã":600,"ãã":-790,"ããĻ":2083,"ãã":-1262,"ãã":-4143,"ãã":4573,"ãã":2641,"ããĶ":1104,"ãã§":-3399,"ãã":1977,"ãã":-871,"ããĄ":1122,"ãã":601,"ãĢã":3463,"ãĪã":-802,"ãĶã":805,"ãĶã":1249,"ã§ã":1127,"ã§ã":3445,"ã§ãŊ":844,"ãĻã":-4915,"ãĻãŋ":1922,"ãĐã":3887,"ãŠã":5713,"ãŠãĢ":3015,"ãŠãĐ":7379,"ãŠã":-1113,"ãŦã":2468,"ãŦãŊ":1498,"ãŦã":1671,"ãŦåŊū":-912,"ãŪäļ":-501,"ãŪäļ":741," [...]
+ this.BW2__ = {"..":-11822,"11":-669,"ââ":-5730,"ââ":-13175,"ãã":-1609,"ãã":2490,"ãã":-1350,"ãã":-602,"ãã":-7194,"ãã":4612,"ãã":853,"ãã":-3198,"ãã":1941,"ããŠ":-1597,"ããĻ":-8392,"ããŪ":-4193,"ãã":4533,"ãã":13168,"ãã":-3977,"ãã":-1819,"ãã":-545,"ãã":5078,"ããĶ":972,"ããŠ":939,"ããŪ":-3744,"ãã":-1253,"ãã":-662,"ãã ":-3857,"ããĄ":-786,"ããĻ":1224,"ããŊ":-939,"ãĢã":4589,"ãĢãĶ":1647,"ãĢãĻ":-2094,"ãĶã":6144,"ãĶã":3640,"ãĶã":2551,"ãĶãŊ":-3110,"ãĶã":-3065,"ã§ã":2666,"ã§ã":-1528,"ã§ã":-3828,"ã§ã":-4761,"ã§ã":-4203,"ãĻã":1 [...]
+ this.BW3__ = {"ãã":-2194,"ãã":719,"ãã":3846,"ã.":-1185,"ãã":-1185,"ãã":5308,"ãã":2079,"ãã":3029,"ãã":2056,"ããĢ":1883,"ãã":5600,"ãã":1527,"ããĄ":1117,"ããĻ":4798,"ããĻ":1454,"ã.":2857,"ãã":2857,"ãã":-743,"ããĢ":-4098,"ããŦ":-669,"ãã":6520,"ãã":-2670,"ã,":1816,"ãã":1816,"ãã":-4855,"ãã":-1127,"ããĢ":-913,"ãã":-4977,"ãã":-2064,"ãã":1645,"ããĐ":1374,"ããĻ":7397,"ããŪ":1542,"ãã":-2757,"ãã":-714,"ãã":976,"ã,":1557,"ãã":1557,"ãã":-3714,"ãã":3562,"ããĶ":1449,"ããŠ":2608,"ããū":1200,"ã.":-1310,"ãã":-1310,"ãã":65 [...]
+ this.TC1__ = {"AAA":1093,"HHH":1029,"HHM":580,"HII":998,"HOH":-390,"HOM":-331,"IHI":1169,"IOH":-142,"IOI":-1015,"IOM":467,"MMH":187,"OOI":-1832};
+ this.TC2__ = {"HHO":2088,"HII":-1023,"HMM":-1154,"IHI":-1965,"KKH":703,"OII":-2649};
+ this.TC3__ = {"AAA":-294,"HHH":346,"HHI":-341,"HII":-1088,"HIK":731,"HOH":-1486,"IHH":128,"IHI":-3041,"IHO":-1935,"IIH":-825,"IIM":-1035,"IOI":-542,"KHH":-1216,"KKA":491,"KKH":-1217,"KOK":-1009,"MHH":-2694,"MHM":-457,"MHO":123,"MMH":-471,"NNH":-1689,"NNO":662,"OHO":-3393};
+ this.TC4__ = {"HHH":-203,"HHI":1344,"HHK":365,"HHM":-122,"HHN":182,"HHO":669,"HIH":804,"HII":679,"HOH":446,"IHH":695,"IHO":-2324,"IIH":321,"III":1497,"IIO":656,"IOO":54,"KAK":4845,"KKA":3386,"KKK":3065,"MHH":-405,"MHI":201,"MMH":-241,"MMM":661,"MOM":841};
+ this.TQ1__ = {"BHHH":-227,"BHHI":316,"BHIH":-132,"BIHH":60,"BIII":1595,"BNHH":-744,"BOHH":225,"BOOO":-908,"OAKK":482,"OHHH":281,"OHIH":249,"OIHI":200,"OIIH":-68};
+ this.TQ2__ = {"BIHH":-1401,"BIII":-1033,"BKAK":-543,"BOOO":-5591};
+ this.TQ3__ = {"BHHH":478,"BHHM":-1073,"BHIH":222,"BHII":-504,"BIIH":-116,"BIII":-105,"BMHI":-863,"BMHM":-464,"BOMH":620,"OHHH":346,"OHHI":1729,"OHII":997,"OHMH":481,"OIHH":623,"OIIH":1344,"OKAK":2792,"OKHH":587,"OKKA":679,"OOHH":110,"OOII":-685};
+ this.TQ4__ = {"BHHH":-721,"BHHM":-3604,"BHII":-966,"BIIH":-607,"BIII":-2181,"OAAA":-2763,"OAKK":180,"OHHH":-294,"OHHI":2446,"OHHO":480,"OHIH":-1573,"OIHH":1935,"OIHI":-493,"OIIH":626,"OIII":-4007,"OKAK":-8156};
+ this.TW1__ = {"ãŦãĪã":-4681,"æąäšŽé―":2026};
+ this.TW2__ = {"ããįĻ":-2049,"ããĢã":-1256,"ããã":-2434,"ããã":3873,"ããŪåū":-4430,"ã ãĢãĶ":-1049,"ãĶãã":1833,"ãĻããĶ":-4657,"ãĻããŦ":-4517,"ããŪã§":1882,"äļæ°ãŦ":-792,"åããĶ":-1512,"åæãŦ":-8097,"åΧããŠ":-1255,"åŊūããĶ":-2721,"įĪūäžå
":-3216};
+ this.TW3__ = {"ããã ":-1734,"ããĶã":1314,"ãĻããĶ":-4314,"ãŦãĪã":-5483,"ãŦãĻãĢ":-5989,"ãŦå―ã":-6247,"ãŪã§,":-727,"ãŪã§ã":-727,"ãŪããŪ":-600,"ããã":-3752,"åäšæ":-2287};
+ this.TW4__ = {"ãã.":8576,"ããã":8576,"ãããŠ":-2348,"ããĶã":2958,"ãã,":1516,"ããã":1516,"ãĶãã":1538,"ãĻãã":1349,"ãūãã":5543,"ãūãã":1097,"ãããĻ":-4258,"ãããĻ":5865};
+ this.UC1__ = {"A":484,"K":93,"M":645,"O":-505};
+ this.UC2__ = {"A":819,"H":1059,"I":409,"M":3987,"N":5775,"O":646};
+ this.UC3__ = {"A":-1370,"I":2311};
+ this.UC4__ = {"A":-2643,"H":1809,"I":-1032,"K":-3450,"M":3565,"N":3876,"O":6646};
+ this.UC5__ = {"H":313,"I":-1238,"K":-799,"M":539,"O":-831};
+ this.UC6__ = {"H":-506,"I":-253,"K":87,"M":247,"O":-387};
+ this.UP1__ = {"O":-214};
+ this.UP2__ = {"B":69,"O":935};
+ this.UP3__ = {"B":189};
+ this.UQ1__ = {"BH":21,"BI":-12,"BK":-99,"BN":142,"BO":-56,"OH":-95,"OI":477,"OK":410,"OO":-2422};
+ this.UQ2__ = {"BH":216,"BI":113,"OK":1759};
+ this.UQ3__ = {"BA":-479,"BH":42,"BI":1913,"BK":-7198,"BM":3160,"BN":6427,"BO":14761,"OI":-827,"ON":-3212};
+ this.UW1__ = {",":156,"ã":156,"ã":-463,"ã":-941,"ã":-127,"ã":-553,"ã":121,"ã":505,"ã§":-201,"ãĻ":-547,"ãĐ":-123,"ãŦ":-789,"ãŪ":-185,"ãŊ":-847,"ã":-466,"ã":-470,"ã":182,"ã":-292,"ã":208,"ã":169,"ã":-446,"ã":-137,"ãŧ":-135,"äļŧ":-402,"䚎":-268,"åš":-912,"å":871,"å―":-460,"åΧ":561,"å§":729,"åļ":-411,"æĨ":-141,"į":361,"į":-408,"į":-386,"é―":-718,"ï―Ē":-463,"ï―Ĩ":-135};
+ this.UW2__ = {",":-829,"ã":-829,"ã":892,"ã":-645,"ã":3145,"ã":-538,"ã":505,"ã":134,"ã":-502,"ã":1454,"ã":-856,"ã":-412,"ã":1141,"ã":878,"ã":540,"ã":1529,"ã":-675,"ã":300,"ã":-1011,"ã":188,"ã ":1837,"ãĪ":-949,"ãĶ":-291,"ã§":-268,"ãĻ":-981,"ãĐ":1273,"ãŠ":1063,"ãŦ":-1764,"ãŪ":130,"ãŊ":-409,"ãē":-1273,"ãđ":1261,"ãū":600,"ã":-1263,"ã":-402,"ã":1639,"ã":-579,"ã":-694,"ã":571,"ã":-2516,"ã":2095,"ãĒ":-587,"ãŦ":306,"ã":568,"ã":831,"äļ":-758,"äļ":-2150,"äļ":-302,"äļ":-968,"äļŧ":-861,"äš":492,"äšš":-123,"äž":978, [...]
+ this.UW3__ = {",":4889,"1":-800,"â":-1723,"ã":4889,"ã
":-2311,"ã":5827,"ã":2670,"ã":-3573,"ã":-2696,"ã":1006,"ã":2342,"ã":1983,"ã":-4864,"ã":-1163,"ã":3271,"ã":1004,"ã":388,"ã":401,"ã":-3552,"ã":-3116,"ã":-1058,"ã":-395,"ã":584,"ã":3685,"ã":-5228,"ã":842,"ãĄ":-521,"ãĢ":-1444,"ãĪ":-1081,"ãĶ":6167,"ã§":2318,"ãĻ":1691,"ãĐ":-899,"ãŠ":-2788,"ãŦ":2745,"ãŪ":4056,"ãŊ":4555,"ãē":-2171,"ãĩ":-1798,"ãļ":1199,"ãŧ":-5516,"ãū":-4384,"ãŋ":-120,"ã":1205,"ã":2323,"ã":-788,"ã":-202,"ã":727,"ã":649,"ã":5905,"ã":277 [...]
+ this.UW4__ = {",":3930,".":3508,"â":-4841,"ã":3930,"ã":3508,"ã":4999,"ã":1895,"ã":3798,"ã":-5156,"ã":4752,"ã":-3435,"ã":-640,"ã":-2514,"ã":2405,"ã":530,"ã":6006,"ã":-4482,"ã":-3821,"ã":-3788,"ã":-4376,"ã":-4734,"ã":2255,"ã":1979,"ã":2864,"ã":-843,"ã":-2506,"ã":-731,"ã":1251,"ã":181,"ã":4091,"ã":5034,"ã ":5408,"ãĄ":-3654,"ãĢ":-5882,"ãĪ":-1659,"ãĶ":3994,"ã§":7410,"ãĻ":4547,"ãŠ":5433,"ãŦ":6499,"ãŽ":1853,"ã":1413,"ãŪ":7396,"ãŊ":8578,"ã°":1940,"ãē":4249,"ãģ":-4134,"ãĩ":1345,"ãļ":6665,"ãđ":-744,"ãŧ":14 [...]
+ this.UW5__ = {",":465,".":-299,"1":-514,"E2":-32768,"]":-2762,"ã":465,"ã":-299,"ã":363,"ã":1655,"ã":331,"ã":-503,"ã":1199,"ã":527,"ã":647,"ã":-421,"ã":1624,"ã":1971,"ã":312,"ã":-983,"ã":-1537,"ã":-1371,"ã":-852,"ã ":-1186,"ãĄ":1093,"ãĢ":52,"ãĪ":921,"ãĶ":-18,"ã§":-850,"ãĻ":-127,"ãĐ":1682,"ãŠ":-787,"ãŦ":-1224,"ãŪ":-635,"ãŊ":-578,"ãđ":1001,"ãŋ":502,"ã":865,"ã":3350,"ã":854,"ã":-208,"ã":429,"ã":504,"ã":419,"ã":-1264,"ã":327,"ãĪ":241,"ãŦ":451,"ãģ":-343,"äļ":-871,"䚎":722,"äž":-1153,"å
":-654,"å":3519,"åš [...]
+ this.UW6__ = {",":227,".":808,"1":-270,"E1":306,"ã":227,"ã":808,"ã":-307,"ã":189,"ã":241,"ã":-73,"ã":-121,"ã":-200,"ã":1782,"ã":383,"ã":-428,"ãĢ":573,"ãĶ":-1014,"ã§":101,"ãĻ":-105,"ãŠ":-253,"ãŦ":-149,"ãŪ":-417,"ãŊ":-236,"ã":-206,"ã":187,"ã":-135,"ã":195,"ãŦ":-673,"ãģ":-496,"äļ":-277,"äļ":201,"äŧķ":-800,"äž":624,"å":302,"åš":1792,"åĄ":-1212,"å§":798,"åĶ":-960,"åļ":887,"åš":-695,"åū":535,"æĨ":-697,"įļ":753,"įĪū":-507,"įĶ":974,"įĐš":-822,"č
":1811,"éĢ":463,"é":1082,"ïž":-270,"ïžĨïž":306,"ïū":-673,"ïū":-496};
+
+ return this;
+ }
+ TinySegmenter.prototype.ctype_ = function(str) {
+ for (var i in this.chartype_) {
+ if (str.match(this.chartype_[i][0])) {
+ return this.chartype_[i][1];
+ }
+ }
+ return "O";
+ }
+
+ TinySegmenter.prototype.ts_ = function(v) {
+ if (v) { return v; }
+ return 0;
+ }
+
+ TinySegmenter.prototype.segment = function(input) {
+ if (input == null || input == undefined || input == "") {
+ return [];
+ }
+ var result = [];
+ var seg = ["B3","B2","B1"];
+ var ctype = ["O","O","O"];
+ var o = input.split("");
+ for (i = 0; i < o.length; ++i) {
+ seg.push(o[i]);
+ ctype.push(this.ctype_(o[i]))
+ }
+ seg.push("E1");
+ seg.push("E2");
+ seg.push("E3");
+ ctype.push("O");
+ ctype.push("O");
+ ctype.push("O");
+ var word = seg[3];
+ var p1 = "U";
+ var p2 = "U";
+ var p3 = "U";
+ for (var i = 4; i < seg.length - 3; ++i) {
+ var score = this.BIAS__;
+ var w1 = seg[i-3];
+ var w2 = seg[i-2];
+ var w3 = seg[i-1];
+ var w4 = seg[i];
+ var w5 = seg[i+1];
+ var w6 = seg[i+2];
+ var c1 = ctype[i-3];
+ var c2 = ctype[i-2];
+ var c3 = ctype[i-1];
+ var c4 = ctype[i];
+ var c5 = ctype[i+1];
+ var c6 = ctype[i+2];
+ score += this.ts_(this.UP1__[p1]);
+ score += this.ts_(this.UP2__[p2]);
+ score += this.ts_(this.UP3__[p3]);
+ score += this.ts_(this.BP1__[p1 + p2]);
+ score += this.ts_(this.BP2__[p2 + p3]);
+ score += this.ts_(this.UW1__[w1]);
+ score += this.ts_(this.UW2__[w2]);
+ score += this.ts_(this.UW3__[w3]);
+ score += this.ts_(this.UW4__[w4]);
+ score += this.ts_(this.UW5__[w5]);
+ score += this.ts_(this.UW6__[w6]);
+ score += this.ts_(this.BW1__[w2 + w3]);
+ score += this.ts_(this.BW2__[w3 + w4]);
+ score += this.ts_(this.BW3__[w4 + w5]);
+ score += this.ts_(this.TW1__[w1 + w2 + w3]);
+ score += this.ts_(this.TW2__[w2 + w3 + w4]);
+ score += this.ts_(this.TW3__[w3 + w4 + w5]);
+ score += this.ts_(this.TW4__[w4 + w5 + w6]);
+ score += this.ts_(this.UC1__[c1]);
+ score += this.ts_(this.UC2__[c2]);
+ score += this.ts_(this.UC3__[c3]);
+ score += this.ts_(this.UC4__[c4]);
+ score += this.ts_(this.UC5__[c5]);
+ score += this.ts_(this.UC6__[c6]);
+ score += this.ts_(this.BC1__[c2 + c3]);
+ score += this.ts_(this.BC2__[c3 + c4]);
+ score += this.ts_(this.BC3__[c4 + c5]);
+ score += this.ts_(this.TC1__[c1 + c2 + c3]);
+ score += this.ts_(this.TC2__[c2 + c3 + c4]);
+ score += this.ts_(this.TC3__[c3 + c4 + c5]);
+ score += this.ts_(this.TC4__[c4 + c5 + c6]);
+ // score += this.ts_(this.TC5__[c4 + c5 + c6]);
+ score += this.ts_(this.UQ1__[p1 + c1]);
+ score += this.ts_(this.UQ2__[p2 + c2]);
+ score += this.ts_(this.UQ3__[p3 + c3]);
+ score += this.ts_(this.BQ1__[p2 + c2 + c3]);
+ score += this.ts_(this.BQ2__[p2 + c3 + c4]);
+ score += this.ts_(this.BQ3__[p3 + c2 + c3]);
+ score += this.ts_(this.BQ4__[p3 + c3 + c4]);
+ score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]);
+ score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]);
+ score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]);
+ score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]);
+ var p = "O";
+ if (score > 0) {
+ result.push(word);
+ word = "";
+ p = "B";
+ }
+ p1 = p2;
+ p2 = p3;
+ p3 = p;
+ word += seg[i];
+ }
+ result.push(word);
+
+ return result;
+ }
+
+ lunr.TinySegmenter = TinySegmenter;
+ };
+
+}));
\ No newline at end of file
diff --git a/assets/javascripts/lunr/wordcut.js b/assets/javascripts/lunr/wordcut.js
new file mode 100644
index 0000000..0d898c9
--- /dev/null
+++ b/assets/javascripts/lunr/wordcut.js
@@ -0,0 +1,6708 @@
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}(g.lunr || (g.lunr = {})).wordcut = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(! [...]
+var _ = require("underscore");
+
+var Acceptors = {
+ creators: null,
+ current: null,
+ tag: null,
+
+ init: function() {
+ this.creators = [];
+ this.current = [];
+ this.tag = {};
+ },
+
+ reset: function() {
+ this.current = [];
+ this.tag = {}
+ },
+
+ transit: function(ch) {
+ var self = this;
+
+ self.creators.forEach(function(creator) {
+ var acceptor = creator.createAcceptor(self.tag);
+ if (acceptor)
+ self.current.push(acceptor);
+ });
+
+ var _current = [];
+ self.tag = {};
+
+ for (var i = 0; i < self.current.length; i++) {
+ var _acceptor = self.current[i]
+ , acceptor = _acceptor.transit(ch);
+
+ if (!acceptor.isError) {
+ _current.push(acceptor);
+ self.tag[acceptor.tag] = acceptor;
+ }
+ }
+ self.current = _current;
+
+ },
+
+ getFinalAcceptors: function() {
+ return this.current.filter(function(acceptor) {
+ return acceptor.isFinal;
+ });
+ }
+};
+
+module.exports = function() {
+ var acceptors = _.clone(Acceptors);
+ acceptors.init();
+ return acceptors;
+};
+
+},{"underscore":25}],2:[function(require,module,exports){
+(function (__dirname){
+
+var LEFT = 0;
+var RIGHT = 1;
+var path = require("path");
+var glob = require("glob");
+
+var WordcutDict = {
+
+
+ init: function (dictPathFile, withDefault, words) {
+ withDefault = withDefault || false
+ var defaultDict = path.normalize(__dirname + "/..") + "/data/tdict-*.txt";
+ this.dict=[]
+ var dictPathIsDefined = dictPathFile !== undefined
+ var dictPath = (withDefault || !dictPathIsDefined) ? [defaultDict]: [];
+ var dictPathFile = dictPathFile || defaultDict
+
+ if(dictPathIsDefined){
+ if (Array.isArray(dictPathFile)) {
+ dictPath.concat.apply(dictPath, dictPathFile);
+ } else {
+ dictPath.push(dictPathFile)
+ }
+ }
+
+ this.addFiles(dictPath, false)
+
+ if(words!==undefined){
+ this.addWords(words, false)
+ }
+ this.finalizeDict();
+ },
+
+ addWords: function(words, finalize){
+ finalize = finalize===undefined || finalize;
+ this.dict.push.apply(this.dict, words)
+ if(finalize){
+ this.finalizeDict();
+ }
+ },
+
+ finalizeDict: function(){
+ this.dict = this.sortuniq(this.dict);
+ },
+
+ addFiles: function(files, finalize){
+ finalize = finalize===undefined || finalize;
+
+ for (var i = 0; i < 1; i++) {
+ var words = "āļ.āļ.\nāļ.āļ.āļ.\nāļ.āļ.āļ.\nāļ.āļ.\nāļ.āļ.\nāļ.āļ.āļ.\nāļ.āļ.\nāļ.āļ.\nāļ.āļ.āļ.\nāļ.āļ.āļ.\nāļ.āļāļĢ.\nāļ.āļ.\nāļ.āļ.āļ.\nāļ.āļāļ.\nāļ.āļāļ.\nāļ.āļ.āļŠ.\nāļ.āļ.\nāļ.āļĄ.\nāļ.āļĒ.\nāļ.āļĢ.\nāļ.āļĨ.āļ.\nāļ.āļ§.\nāļ.āļĻ.āļ§.\nāļ.āļŠ.āļ.\nāļ.āļŠ.āļ.\nāļ.āļŠ.āļ.\nāļ.āļ.\nāļāļ.āļāļāļ.\nāļāļ.āļāļĢ.āļ.\nāļāļ.āļ .āļāļ§.\nāļāļ.āļĢāļŠāļ.\nāļāļāļ.āļāļŠ.āļāļ.\nāļāļāļĨ.āļĢāļāļ.\nāļāļ.āļāļŦ.\nāļāļ.āļāļ.\nāļāļ.āļāļĢ.\nāļāļāļ.āļ.\nāļāļāļĄ.āļ.\nāļāļāļĄ.āļāļĢāļļāļāđāļāļāļĄāļŦāļēāļāļāļĢ\nāļāļ.āļāļ.\nāļāļ.āļŠāļ.\nāļāļ.āļāļ.\nāļāļ.āļāļĢ.\nāļāļ.āļāļŦāļēāļĢ\nāļāļĢ.āļāļ.\nāļāļĢāļ.āļāļĨāļēāļ\nāļāļĢāļ.āļāļ.\nāļāļĻ.āļ.\nāļāļĻ.āļ.\nāļāļĻ.āļāļ.\nāļāļĻ.āļĄ.\nāļāļĐ.āļ.\nāļāļĐ.āļ.\nāļāļĐ.āļĄ.\nāļāļŠ.āļ.\nāļāļŠ.āļāļ.\nāļāļŠ.āļ.\nāļāļŠ.āļĄ.\nāļāļ.āļāļ.\nāļāļ.āļĢāļāļ.\nāļ [...]
+ .split(/[\r\n]+/)
+ .filter(function (w) {
+ return w.length > 1;
+ })
+ this.addWords(words, false)
+ }
+ if(finalize){
+ this.finalizeDict();
+ }
+ },
+
+ dictSeek: function (l, r, ch, strOffset, pos) {
+ var ans = null;
+ while (l <= r) {
+ var m = Math.floor((l + r) / 2),
+ dict_item = this.dict[m],
+ len = dict_item.length;
+ if (len <= strOffset) {
+ l = m + 1;
+ } else {
+ var ch_ = dict_item[strOffset];
+ if (ch_ < ch) {
+ l = m + 1;
+ } else if (ch_ > ch) {
+ r = m - 1;
+ } else {
+ ans = m;
+ if (pos == LEFT) {
+ r = m - 1;
+ } else {
+ l = m + 1;
+ }
+ }
+ }
+ }
+ return ans;
+ },
+
+ isFinal: function (acceptor) {
+ return this.dict[acceptor.l].length == acceptor.strOffset;
+ },
+
+ createAcceptor: function () {
+ return {
+ l: 0,
+ r: this.dict.length - 1,
+ strOffset: 0,
+ isFinal: false,
+ dict: this,
+ transit: function (ch) {
+ return this.dict.transit(this, ch);
+ },
+ isError: false,
+ tag: "DICT",
+ w: 1,
+ type: "DICT"
+ };
+ },
+
+ transit: function (acceptor, ch) {
+ var l = this.dictSeek(acceptor.l,
+ acceptor.r,
+ ch,
+ acceptor.strOffset,
+ LEFT);
+ if (l !== null) {
+ var r = this.dictSeek(l,
+ acceptor.r,
+ ch,
+ acceptor.strOffset,
+ RIGHT);
+ acceptor.l = l;
+ acceptor.r = r;
+ acceptor.strOffset++;
+ acceptor.isFinal = this.isFinal(acceptor);
+ } else {
+ acceptor.isError = true;
+ }
+ return acceptor;
+ },
+
+ sortuniq: function(a){
+ return a.sort().filter(function(item, pos, arr){
+ return !pos || item != arr[pos - 1];
+ })
+ },
+
+ flatten: function(a){
+ //[[1,2],[3]] -> [1,2,3]
+ return [].concat.apply([], a);
+ }
+};
+module.exports = WordcutDict;
+
+}).call(this,"/dist/tmp")
+},{"glob":16,"path":22}],3:[function(require,module,exports){
+var WordRule = {
+ createAcceptor: function(tag) {
+ if (tag["WORD_RULE"])
+ return null;
+
+ return {strOffset: 0,
+ isFinal: false,
+ transit: function(ch) {
+ var lch = ch.toLowerCase();
+ if (lch >= "a" && lch <= "z") {
+ this.isFinal = true;
+ this.strOffset++;
+ } else {
+ this.isError = true;
+ }
+ return this;
+ },
+ isError: false,
+ tag: "WORD_RULE",
+ type: "WORD_RULE",
+ w: 1};
+ }
+};
+
+var NumberRule = {
+ createAcceptor: function(tag) {
+ if (tag["NUMBER_RULE"])
+ return null;
+
+ return {strOffset: 0,
+ isFinal: false,
+ transit: function(ch) {
+ if (ch >= "0" && ch <= "9") {
+ this.isFinal = true;
+ this.strOffset++;
+ } else {
+ this.isError = true;
+ }
+ return this;
+ },
+ isError: false,
+ tag: "NUMBER_RULE",
+ type: "NUMBER_RULE",
+ w: 1};
+ }
+};
+
+var SpaceRule = {
+ tag: "SPACE_RULE",
+ createAcceptor: function(tag) {
+
+ if (tag["SPACE_RULE"])
+ return null;
+
+ return {strOffset: 0,
+ isFinal: false,
+ transit: function(ch) {
+ if (ch == " " || ch == "\t" || ch == "\r" || ch == "\n" ||
+ ch == "\u00A0" || ch=="\u2003"//nbsp and emsp
+ ) {
+ this.isFinal = true;
+ this.strOffset++;
+ } else {
+ this.isError = true;
+ }
+ return this;
+ },
+ isError: false,
+ tag: SpaceRule.tag,
+ w: 1,
+ type: "SPACE_RULE"};
+ }
+}
+
+var SingleSymbolRule = {
+ tag: "SINSYM",
+ createAcceptor: function(tag) {
+ return {strOffset: 0,
+ isFinal: false,
+ transit: function(ch) {
+ if (this.strOffset == 0 && ch.match(/^[\@\(\)\/\,\-\."`]$/)) {
+ this.isFinal = true;
+ this.strOffset++;
+ } else {
+ this.isError = true;
+ }
+ return this;
+ },
+ isError: false,
+ tag: "SINSYM",
+ w: 1,
+ type: "SINSYM"};
+ }
+}
+
+
+var LatinRules = [WordRule, SpaceRule, SingleSymbolRule, NumberRule];
+
+module.exports = LatinRules;
+
+},{}],4:[function(require,module,exports){
+var _ = require("underscore")
+ , WordcutCore = require("./wordcut_core");
+var PathInfoBuilder = {
+
+ /*
+ buildByPartAcceptors: function(path, acceptors, i) {
+ var
+ var genInfos = partAcceptors.reduce(function(genInfos, acceptor) {
+
+ }, []);
+
+ return genInfos;
+ }
+ */
+
+ buildByAcceptors: function(path, finalAcceptors, i) {
+ var self = this;
+ var infos = finalAcceptors.map(function(acceptor) {
+ var p = i - acceptor.strOffset + 1
+ , _info = path[p];
+
+ var info = {p: p,
+ mw: _info.mw + (acceptor.mw === undefined ? 0 : acceptor.mw),
+ w: acceptor.w + _info.w,
+ unk: (acceptor.unk ? acceptor.unk : 0) + _info.unk,
+ type: acceptor.type};
+
+ if (acceptor.type == "PART") {
+ for(var j = p + 1; j <= i; j++) {
+ path[j].merge = p;
+ }
+ info.merge = p;
+ }
+
+ return info;
+ });
+ return infos.filter(function(info) { return info; });
+ },
+
+ fallback: function(path, leftBoundary, text, i) {
+ var _info = path[leftBoundary];
+ if (text[i].match(/[\u0E48-\u0E4E]/)) {
+ if (leftBoundary != 0)
+ leftBoundary = path[leftBoundary].p;
+ return {p: leftBoundary,
+ mw: 0,
+ w: 1 + _info.w,
+ unk: 1 + _info.unk,
+ type: "UNK"};
+/* } else if(leftBoundary > 0 && path[leftBoundary].type !== "UNK") {
+ leftBoundary = path[leftBoundary].p;
+ return {p: leftBoundary,
+ w: 1 + _info.w,
+ unk: 1 + _info.unk,
+ type: "UNK"}; */
+ } else {
+ return {p: leftBoundary,
+ mw: _info.mw,
+ w: 1 + _info.w,
+ unk: 1 + _info.unk,
+ type: "UNK"};
+ }
+ },
+
+ build: function(path, finalAcceptors, i, leftBoundary, text) {
+ var basicPathInfos = this.buildByAcceptors(path, finalAcceptors, i);
+ if (basicPathInfos.length > 0) {
+ return basicPathInfos;
+ } else {
+ return [this.fallback(path, leftBoundary, text, i)];
+ }
+ }
+};
+
+module.exports = function() {
+ return _.clone(PathInfoBuilder);
+}
+
+},{"./wordcut_core":8,"underscore":25}],5:[function(require,module,exports){
+var _ = require("underscore");
+
+
+var PathSelector = {
+ selectPath: function(paths) {
+ var path = paths.reduce(function(selectedPath, path) {
+ if (selectedPath == null) {
+ return path;
+ } else {
+ if (path.unk < selectedPath.unk)
+ return path;
+ if (path.unk == selectedPath.unk) {
+ if (path.mw < selectedPath.mw)
+ return path
+ if (path.mw == selectedPath.mw) {
+ if (path.w < selectedPath.w)
+ return path;
+ }
+ }
+ return selectedPath;
+ }
+ }, null);
+ return path;
+ },
+
+ createPath: function() {
+ return [{p:null, w:0, unk:0, type: "INIT", mw:0}];
+ }
+};
+
+module.exports = function() {
+ return _.clone(PathSelector);
+};
+
+},{"underscore":25}],6:[function(require,module,exports){
+function isMatch(pat, offset, ch) {
+ if (pat.length <= offset)
+ return false;
+ var _ch = pat[offset];
+ return _ch == ch ||
+ (_ch.match(/[āļāļ]/) && ch.match(/[āļ-āļŪ]/)) ||
+ (_ch.match(/[āļĄāļ]/) && ch.match(/[āļ-āļŪ]/)) ||
+ (_ch.match(/\u0E49/) && ch.match(/[\u0E48-\u0E4B]/));
+}
+
+var Rule0 = {
+ pat: "āđāļŦāļāđāļĄ",
+ createAcceptor: function(tag) {
+ return {strOffset: 0,
+ isFinal: false,
+ transit: function(ch) {
+ if (isMatch(Rule0.pat, this.strOffset,ch)) {
+ this.isFinal = (this.strOffset + 1 == Rule0.pat.length);
+ this.strOffset++;
+ } else {
+ this.isError = true;
+ }
+ return this;
+ },
+ isError: false,
+ tag: "THAI_RULE",
+ type: "THAI_RULE",
+ w: 1};
+ }
+};
+
+var PartRule = {
+ createAcceptor: function(tag) {
+ return {strOffset: 0,
+ patterns: [
+ "āđāļ", "āđāļ", "āļāđ", "āļāļāđ", "āļāļē", "āļāļĩ", "āļāļī", "āļāļ·āļ"
+ ],
+ isFinal: false,
+ transit: function(ch) {
+ var offset = this.strOffset;
+ this.patterns = this.patterns.filter(function(pat) {
+ return isMatch(pat, offset, ch);
+ });
+
+ if (this.patterns.length > 0) {
+ var len = 1 + offset;
+ this.isFinal = this.patterns.some(function(pat) {
+ return pat.length == len;
+ });
+ this.strOffset++;
+ } else {
+ this.isError = true;
+ }
+ return this;
+ },
+ isError: false,
+ tag: "PART",
+ type: "PART",
+ unk: 1,
+ w: 1};
+ }
+};
+
+var ThaiRules = [Rule0, PartRule];
+
+module.exports = ThaiRules;
+
+},{}],7:[function(require,module,exports){
+var sys = require("sys")
+ , WordcutDict = require("./dict")
+ , WordcutCore = require("./wordcut_core")
+ , PathInfoBuilder = require("./path_info_builder")
+ , PathSelector = require("./path_selector")
+ , Acceptors = require("./acceptors")
+ , latinRules = require("./latin_rules")
+ , thaiRules = require("./thai_rules")
+ , _ = require("underscore");
+
+
+var Wordcut = Object.create(WordcutCore);
+Wordcut.defaultPathInfoBuilder = PathInfoBuilder;
+Wordcut.defaultPathSelector = PathSelector;
+Wordcut.defaultAcceptors = Acceptors;
+Wordcut.defaultLatinRules = latinRules;
+Wordcut.defaultThaiRules = thaiRules;
+Wordcut.defaultDict = WordcutDict;
+
+
+Wordcut.initNoDict = function(dict_path) {
+ var self = this;
+ self.pathInfoBuilder = new self.defaultPathInfoBuilder;
+ self.pathSelector = new self.defaultPathSelector;
+ self.acceptors = new self.defaultAcceptors;
+ self.defaultLatinRules.forEach(function(rule) {
+ self.acceptors.creators.push(rule);
+ });
+ self.defaultThaiRules.forEach(function(rule) {
+ self.acceptors.creators.push(rule);
+ });
+};
+
+Wordcut.init = function(dict_path, withDefault, additionalWords) {
+ withDefault = withDefault || false;
+ this.initNoDict();
+ var dict = _.clone(this.defaultDict);
+ dict.init(dict_path, withDefault, additionalWords);
+ this.acceptors.creators.push(dict);
+};
+
+module.exports = Wordcut;
+
+},{"./acceptors":1,"./dict":2,"./latin_rules":3,"./path_info_builder":4,"./path_selector":5,"./thai_rules":6,"./wordcut_core":8,"sys":28,"underscore":25}],8:[function(require,module,exports){
+var WordcutCore = {
+
+ buildPath: function(text) {
+ var self = this
+ , path = self.pathSelector.createPath()
+ , leftBoundary = 0;
+ self.acceptors.reset();
+ for (var i = 0; i < text.length; i++) {
+ var ch = text[i];
+ self.acceptors.transit(ch);
+
+ var possiblePathInfos = self
+ .pathInfoBuilder
+ .build(path,
+ self.acceptors.getFinalAcceptors(),
+ i,
+ leftBoundary,
+ text);
+ var selectedPath = self.pathSelector.selectPath(possiblePathInfos)
+
+ path.push(selectedPath);
+ if (selectedPath.type !== "UNK") {
+ leftBoundary = i;
+ }
+ }
+ return path;
+ },
+
+ pathToRanges: function(path) {
+ var e = path.length - 1
+ , ranges = [];
+
+ while (e > 0) {
+ var info = path[e]
+ , s = info.p;
+
+ if (info.merge !== undefined && ranges.length > 0) {
+ var r = ranges[ranges.length - 1];
+ r.s = info.merge;
+ s = r.s;
+ } else {
+ ranges.push({s:s, e:e});
+ }
+ e = s;
+ }
+ return ranges.reverse();
+ },
+
+ rangesToText: function(text, ranges, delimiter) {
+ return ranges.map(function(r) {
+ return text.substring(r.s, r.e);
+ }).join(delimiter);
+ },
+
+ cut: function(text, delimiter) {
+ var path = this.buildPath(text)
+ , ranges = this.pathToRanges(path);
+ return this
+ .rangesToText(text, ranges,
+ (delimiter === undefined ? "|" : delimiter));
+ },
+
+ cutIntoRanges: function(text, noText) {
+ var path = this.buildPath(text)
+ , ranges = this.pathToRanges(path);
+
+ if (!noText) {
+ ranges.forEach(function(r) {
+ r.text = text.substring(r.s, r.e);
+ });
+ }
+ return ranges;
+ },
+
+ cutIntoArray: function(text) {
+ var path = this.buildPath(text)
+ , ranges = this.pathToRanges(path);
+
+ return ranges.map(function(r) {
+ return text.substring(r.s, r.e)
+ });
+ }
+};
+
+module.exports = WordcutCore;
+
+},{}],9:[function(require,module,exports){
+// http://wiki.commonjs.org/wiki/Unit_Testing/1.0
+//
+// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
+//
+// Originally from narwhal.js (http://narwhaljs.org)
+// Copyright (c) 2009 Thomas Robinson <280north.com>
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the 'Software'), to
+// deal in the Software without restriction, including without limitation the
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+// sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// when used in node, this will actually load the util module we depend on
+// versus loading the builtin util module as happens otherwise
+// this is a bug in node module loading as far as I am concerned
+var util = require('util/');
+
+var pSlice = Array.prototype.slice;
+var hasOwn = Object.prototype.hasOwnProperty;
+
+// 1. The assert module provides functions that throw
+// AssertionError's when particular conditions are not met. The
+// assert module must conform to the following interface.
+
+var assert = module.exports = ok;
+
+// 2. The AssertionError is defined in assert.
+// new assert.AssertionError({ message: message,
+// actual: actual,
+// expected: expected })
+
+assert.AssertionError = function AssertionError(options) {
+ this.name = 'AssertionError';
+ this.actual = options.actual;
+ this.expected = options.expected;
+ this.operator = options.operator;
+ if (options.message) {
+ this.message = options.message;
+ this.generatedMessage = false;
+ } else {
+ this.message = getMessage(this);
+ this.generatedMessage = true;
+ }
+ var stackStartFunction = options.stackStartFunction || fail;
+
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, stackStartFunction);
+ }
+ else {
+ // non v8 browsers so we can have a stacktrace
+ var err = new Error();
+ if (err.stack) {
+ var out = err.stack;
+
+ // try to strip useless frames
+ var fn_name = stackStartFunction.name;
+ var idx = out.indexOf('\n' + fn_name);
+ if (idx >= 0) {
+ // once we have located the function frame
+ // we need to strip out everything before it (and its line)
+ var next_line = out.indexOf('\n', idx + 1);
+ out = out.substring(next_line + 1);
+ }
+
+ this.stack = out;
+ }
+ }
+};
+
+// assert.AssertionError instanceof Error
+util.inherits(assert.AssertionError, Error);
+
+function replacer(key, value) {
+ if (util.isUndefined(value)) {
+ return '' + value;
+ }
+ if (util.isNumber(value) && !isFinite(value)) {
+ return value.toString();
+ }
+ if (util.isFunction(value) || util.isRegExp(value)) {
+ return value.toString();
+ }
+ return value;
+}
+
+function truncate(s, n) {
+ if (util.isString(s)) {
+ return s.length < n ? s : s.slice(0, n);
+ } else {
+ return s;
+ }
+}
+
+function getMessage(self) {
+ return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' +
+ self.operator + ' ' +
+ truncate(JSON.stringify(self.expected, replacer), 128);
+}
+
+// At present only the three keys mentioned above are used and
+// understood by the spec. Implementations or sub modules can pass
+// other keys to the AssertionError's constructor - they will be
+// ignored.
+
+// 3. All of the following functions must throw an AssertionError
+// when a corresponding condition is not met, with a message that
+// may be undefined if not provided. All assertion methods provide
+// both the actual and expected values to the assertion error for
+// display purposes.
+
+function fail(actual, expected, message, operator, stackStartFunction) {
+ throw new assert.AssertionError({
+ message: message,
+ actual: actual,
+ expected: expected,
+ operator: operator,
+ stackStartFunction: stackStartFunction
+ });
+}
+
+// EXTENSION! allows for well behaved errors defined elsewhere.
+assert.fail = fail;
+
+// 4. Pure assertion tests whether a value is truthy, as determined
+// by !!guard.
+// assert.ok(guard, message_opt);
+// This statement is equivalent to assert.equal(true, !!guard,
+// message_opt);. To test strictly for the value true, use
+// assert.strictEqual(true, guard, message_opt);.
+
+function ok(value, message) {
+ if (!value) fail(value, true, message, '==', assert.ok);
+}
+assert.ok = ok;
+
+// 5. The equality assertion tests shallow, coercive equality with
+// ==.
+// assert.equal(actual, expected, message_opt);
+
+assert.equal = function equal(actual, expected, message) {
+ if (actual != expected) fail(actual, expected, message, '==', assert.equal);
+};
+
+// 6. The non-equality assertion tests for whether two objects are not equal
+// with != assert.notEqual(actual, expected, message_opt);
+
+assert.notEqual = function notEqual(actual, expected, message) {
+ if (actual == expected) {
+ fail(actual, expected, message, '!=', assert.notEqual);
+ }
+};
+
+// 7. The equivalence assertion tests a deep equality relation.
+// assert.deepEqual(actual, expected, message_opt);
+
+assert.deepEqual = function deepEqual(actual, expected, message) {
+ if (!_deepEqual(actual, expected)) {
+ fail(actual, expected, message, 'deepEqual', assert.deepEqual);
+ }
+};
+
+function _deepEqual(actual, expected) {
+ // 7.1. All identical values are equivalent, as determined by ===.
+ if (actual === expected) {
+ return true;
+
+ } else if (util.isBuffer(actual) && util.isBuffer(expected)) {
+ if (actual.length != expected.length) return false;
+
+ for (var i = 0; i < actual.length; i++) {
+ if (actual[i] !== expected[i]) return false;
+ }
+
+ return true;
+
+ // 7.2. If the expected value is a Date object, the actual value is
+ // equivalent if it is also a Date object that refers to the same time.
+ } else if (util.isDate(actual) && util.isDate(expected)) {
+ return actual.getTime() === expected.getTime();
+
+ // 7.3 If the expected value is a RegExp object, the actual value is
+ // equivalent if it is also a RegExp object with the same source and
+ // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
+ } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
+ return actual.source === expected.source &&
+ actual.global === expected.global &&
+ actual.multiline === expected.multiline &&
+ actual.lastIndex === expected.lastIndex &&
+ actual.ignoreCase === expected.ignoreCase;
+
+ // 7.4. Other pairs that do not both pass typeof value == 'object',
+ // equivalence is determined by ==.
+ } else if (!util.isObject(actual) && !util.isObject(expected)) {
+ return actual == expected;
+
+ // 7.5 For all other Object pairs, including Array objects, equivalence is
+ // determined by having the same number of owned properties (as verified
+ // with Object.prototype.hasOwnProperty.call), the same set of keys
+ // (although not necessarily the same order), equivalent values for every
+ // corresponding key, and an identical 'prototype' property. Note: this
+ // accounts for both named and indexed properties on Arrays.
+ } else {
+ return objEquiv(actual, expected);
+ }
+}
+
+function isArguments(object) {
+ return Object.prototype.toString.call(object) == '[object Arguments]';
+}
+
+function objEquiv(a, b) {
+ if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b))
+ return false;
+ // an identical 'prototype' property.
+ if (a.prototype !== b.prototype) return false;
+ // if one is a primitive, the other must be same
+ if (util.isPrimitive(a) || util.isPrimitive(b)) {
+ return a === b;
+ }
+ var aIsArgs = isArguments(a),
+ bIsArgs = isArguments(b);
+ if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
+ return false;
+ if (aIsArgs) {
+ a = pSlice.call(a);
+ b = pSlice.call(b);
+ return _deepEqual(a, b);
+ }
+ var ka = objectKeys(a),
+ kb = objectKeys(b),
+ key, i;
+ // having the same number of owned properties (keys incorporates
+ // hasOwnProperty)
+ if (ka.length != kb.length)
+ return false;
+ //the same set of keys (although not necessarily the same order),
+ ka.sort();
+ kb.sort();
+ //~~~cheap key test
+ for (i = ka.length - 1; i >= 0; i--) {
+ if (ka[i] != kb[i])
+ return false;
+ }
+ //equivalent values for every corresponding key, and
+ //~~~possibly expensive deep test
+ for (i = ka.length - 1; i >= 0; i--) {
+ key = ka[i];
+ if (!_deepEqual(a[key], b[key])) return false;
+ }
+ return true;
+}
+
+// 8. The non-equivalence assertion tests for any deep inequality.
+// assert.notDeepEqual(actual, expected, message_opt);
+
+assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
+ if (_deepEqual(actual, expected)) {
+ fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
+ }
+};
+
+// 9. The strict equality assertion tests strict equality, as determined by ===.
+// assert.strictEqual(actual, expected, message_opt);
+
+assert.strictEqual = function strictEqual(actual, expected, message) {
+ if (actual !== expected) {
+ fail(actual, expected, message, '===', assert.strictEqual);
+ }
+};
+
+// 10. The strict non-equality assertion tests for strict inequality, as
+// determined by !==. assert.notStrictEqual(actual, expected, message_opt);
+
+assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
+ if (actual === expected) {
+ fail(actual, expected, message, '!==', assert.notStrictEqual);
+ }
+};
+
+function expectedException(actual, expected) {
+ if (!actual || !expected) {
+ return false;
+ }
+
+ if (Object.prototype.toString.call(expected) == '[object RegExp]') {
+ return expected.test(actual);
+ } else if (actual instanceof expected) {
+ return true;
+ } else if (expected.call({}, actual) === true) {
+ return true;
+ }
+
+ return false;
+}
+
+function _throws(shouldThrow, block, expected, message) {
+ var actual;
+
+ if (util.isString(expected)) {
+ message = expected;
+ expected = null;
+ }
+
+ try {
+ block();
+ } catch (e) {
+ actual = e;
+ }
+
+ message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
+ (message ? ' ' + message : '.');
+
+ if (shouldThrow && !actual) {
+ fail(actual, expected, 'Missing expected exception' + message);
+ }
+
+ if (!shouldThrow && expectedException(actual, expected)) {
+ fail(actual, expected, 'Got unwanted exception' + message);
+ }
+
+ if ((shouldThrow && actual && expected &&
+ !expectedException(actual, expected)) || (!shouldThrow && actual)) {
+ throw actual;
+ }
+}
+
+// 11. Expected to throw an error:
+// assert.throws(block, Error_opt, message_opt);
+
+assert.throws = function(block, /*optional*/error, /*optional*/message) {
+ _throws.apply(this, [true].concat(pSlice.call(arguments)));
+};
+
+// EXTENSION! This is annoying to write outside this module.
+assert.doesNotThrow = function(block, /*optional*/message) {
+ _throws.apply(this, [false].concat(pSlice.call(arguments)));
+};
+
+assert.ifError = function(err) { if (err) {throw err;}};
+
+var objectKeys = Object.keys || function (obj) {
+ var keys = [];
+ for (var key in obj) {
+ if (hasOwn.call(obj, key)) keys.push(key);
+ }
+ return keys;
+};
+
+},{"util/":28}],10:[function(require,module,exports){
+'use strict';
+module.exports = balanced;
+function balanced(a, b, str) {
+ if (a instanceof RegExp) a = maybeMatch(a, str);
+ if (b instanceof RegExp) b = maybeMatch(b, str);
+
+ var r = range(a, b, str);
+
+ return r && {
+ start: r[0],
+ end: r[1],
+ pre: str.slice(0, r[0]),
+ body: str.slice(r[0] + a.length, r[1]),
+ post: str.slice(r[1] + b.length)
+ };
+}
+
+function maybeMatch(reg, str) {
+ var m = str.match(reg);
+ return m ? m[0] : null;
+}
+
+balanced.range = range;
+function range(a, b, str) {
+ var begs, beg, left, right, result;
+ var ai = str.indexOf(a);
+ var bi = str.indexOf(b, ai + 1);
+ var i = ai;
+
+ if (ai >= 0 && bi > 0) {
+ begs = [];
+ left = str.length;
+
+ while (i >= 0 && !result) {
+ if (i == ai) {
+ begs.push(i);
+ ai = str.indexOf(a, i + 1);
+ } else if (begs.length == 1) {
+ result = [ begs.pop(), bi ];
+ } else {
+ beg = begs.pop();
+ if (beg < left) {
+ left = beg;
+ right = bi;
+ }
+
+ bi = str.indexOf(b, i + 1);
+ }
+
+ i = ai < bi && ai >= 0 ? ai : bi;
+ }
+
+ if (begs.length) {
+ result = [ left, right ];
+ }
+ }
+
+ return result;
+}
+
+},{}],11:[function(require,module,exports){
+var concatMap = require('concat-map');
+var balanced = require('balanced-match');
+
+module.exports = expandTop;
+
+var escSlash = '\0SLASH'+Math.random()+'\0';
+var escOpen = '\0OPEN'+Math.random()+'\0';
+var escClose = '\0CLOSE'+Math.random()+'\0';
+var escComma = '\0COMMA'+Math.random()+'\0';
+var escPeriod = '\0PERIOD'+Math.random()+'\0';
+
+function numeric(str) {
+ return parseInt(str, 10) == str
+ ? parseInt(str, 10)
+ : str.charCodeAt(0);
+}
+
+function escapeBraces(str) {
+ return str.split('\\\\').join(escSlash)
+ .split('\\{').join(escOpen)
+ .split('\\}').join(escClose)
+ .split('\\,').join(escComma)
+ .split('\\.').join(escPeriod);
+}
+
+function unescapeBraces(str) {
+ return str.split(escSlash).join('\\')
+ .split(escOpen).join('{')
+ .split(escClose).join('}')
+ .split(escComma).join(',')
+ .split(escPeriod).join('.');
+}
+
+
+// Basically just str.split(","), but handling cases
+// where we have nested braced sections, which should be
+// treated as individual members, like {a,{b,c},d}
+function parseCommaParts(str) {
+ if (!str)
+ return [''];
+
+ var parts = [];
+ var m = balanced('{', '}', str);
+
+ if (!m)
+ return str.split(',');
+
+ var pre = m.pre;
+ var body = m.body;
+ var post = m.post;
+ var p = pre.split(',');
+
+ p[p.length-1] += '{' + body + '}';
+ var postParts = parseCommaParts(post);
+ if (post.length) {
+ p[p.length-1] += postParts.shift();
+ p.push.apply(p, postParts);
+ }
+
+ parts.push.apply(parts, p);
+
+ return parts;
+}
+
+function expandTop(str) {
+ if (!str)
+ return [];
+
+ // I don't know why Bash 4.3 does this, but it does.
+ // Anything starting with {} will have the first two bytes preserved
+ // but *only* at the top level, so {},a}b will not expand to anything,
+ // but a{},b}c will be expanded to [a}c,abc].
+ // One could argue that this is a bug in Bash, but since the goal of
+ // this module is to match Bash's rules, we escape a leading {}
+ if (str.substr(0, 2) === '{}') {
+ str = '\\{\\}' + str.substr(2);
+ }
+
+ return expand(escapeBraces(str), true).map(unescapeBraces);
+}
+
+function identity(e) {
+ return e;
+}
+
+function embrace(str) {
+ return '{' + str + '}';
+}
+function isPadded(el) {
+ return /^-?0\d/.test(el);
+}
+
+function lte(i, y) {
+ return i <= y;
+}
+function gte(i, y) {
+ return i >= y;
+}
+
+function expand(str, isTop) {
+ var expansions = [];
+
+ var m = balanced('{', '}', str);
+ if (!m || /\$$/.test(m.pre)) return [str];
+
+ var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
+ var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
+ var isSequence = isNumericSequence || isAlphaSequence;
+ var isOptions = m.body.indexOf(',') >= 0;
+ if (!isSequence && !isOptions) {
+ // {a},b}
+ if (m.post.match(/,.*\}/)) {
+ str = m.pre + '{' + m.body + escClose + m.post;
+ return expand(str);
+ }
+ return [str];
+ }
+
+ var n;
+ if (isSequence) {
+ n = m.body.split(/\.\./);
+ } else {
+ n = parseCommaParts(m.body);
+ if (n.length === 1) {
+ // x{{a,b}}y ==> x{a}y x{b}y
+ n = expand(n[0], false).map(embrace);
+ if (n.length === 1) {
+ var post = m.post.length
+ ? expand(m.post, false)
+ : [''];
+ return post.map(function(p) {
+ return m.pre + n[0] + p;
+ });
+ }
+ }
+ }
+
+ // at this point, n is the parts, and we know it's not a comma set
+ // with a single entry.
+
+ // no need to expand pre, since it is guaranteed to be free of brace-sets
+ var pre = m.pre;
+ var post = m.post.length
+ ? expand(m.post, false)
+ : [''];
+
+ var N;
+
+ if (isSequence) {
+ var x = numeric(n[0]);
+ var y = numeric(n[1]);
+ var width = Math.max(n[0].length, n[1].length)
+ var incr = n.length == 3
+ ? Math.abs(numeric(n[2]))
+ : 1;
+ var test = lte;
+ var reverse = y < x;
+ if (reverse) {
+ incr *= -1;
+ test = gte;
+ }
+ var pad = n.some(isPadded);
+
+ N = [];
+
+ for (var i = x; test(i, y); i += incr) {
+ var c;
+ if (isAlphaSequence) {
+ c = String.fromCharCode(i);
+ if (c === '\\')
+ c = '';
+ } else {
+ c = String(i);
+ if (pad) {
+ var need = width - c.length;
+ if (need > 0) {
+ var z = new Array(need + 1).join('0');
+ if (i < 0)
+ c = '-' + z + c.slice(1);
+ else
+ c = z + c;
+ }
+ }
+ }
+ N.push(c);
+ }
+ } else {
+ N = concatMap(n, function(el) { return expand(el, false) });
+ }
+
+ for (var j = 0; j < N.length; j++) {
+ for (var k = 0; k < post.length; k++) {
+ var expansion = pre + N[j] + post[k];
+ if (!isTop || isSequence || expansion)
+ expansions.push(expansion);
+ }
+ }
+
+ return expansions;
+}
+
+
+},{"balanced-match":10,"concat-map":13}],12:[function(require,module,exports){
+
+},{}],13:[function(require,module,exports){
+module.exports = function (xs, fn) {
+ var res = [];
+ for (var i = 0; i < xs.length; i++) {
+ var x = fn(xs[i], i);
+ if (isArray(x)) res.push.apply(res, x);
+ else res.push(x);
+ }
+ return res;
+};
+
+var isArray = Array.isArray || function (xs) {
+ return Object.prototype.toString.call(xs) === '[object Array]';
+};
+
+},{}],14:[function(require,module,exports){
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+function EventEmitter() {
+ this._events = this._events || {};
+ this._maxListeners = this._maxListeners || undefined;
+}
+module.exports = EventEmitter;
+
+// Backwards-compat with node 0.10.x
+EventEmitter.EventEmitter = EventEmitter;
+
+EventEmitter.prototype._events = undefined;
+EventEmitter.prototype._maxListeners = undefined;
+
+// By default EventEmitters will print a warning if more than 10 listeners are
+// added to it. This is a useful default which helps finding memory leaks.
+EventEmitter.defaultMaxListeners = 10;
+
+// Obviously not all Emitters should be limited to 10. This function allows
+// that to be increased. Set to zero for unlimited.
+EventEmitter.prototype.setMaxListeners = function(n) {
+ if (!isNumber(n) || n < 0 || isNaN(n))
+ throw TypeError('n must be a positive number');
+ this._maxListeners = n;
+ return this;
+};
+
+EventEmitter.prototype.emit = function(type) {
+ var er, handler, len, args, i, listeners;
+
+ if (!this._events)
+ this._events = {};
+
+ // If there is no 'error' event listener then throw.
+ if (type === 'error') {
+ if (!this._events.error ||
+ (isObject(this._events.error) && !this._events.error.length)) {
+ er = arguments[1];
+ if (er instanceof Error) {
+ throw er; // Unhandled 'error' event
+ }
+ throw TypeError('Uncaught, unspecified "error" event.');
+ }
+ }
+
+ handler = this._events[type];
+
+ if (isUndefined(handler))
+ return false;
+
+ if (isFunction(handler)) {
+ switch (arguments.length) {
+ // fast cases
+ case 1:
+ handler.call(this);
+ break;
+ case 2:
+ handler.call(this, arguments[1]);
+ break;
+ case 3:
+ handler.call(this, arguments[1], arguments[2]);
+ break;
+ // slower
+ default:
+ len = arguments.length;
+ args = new Array(len - 1);
+ for (i = 1; i < len; i++)
+ args[i - 1] = arguments[i];
+ handler.apply(this, args);
+ }
+ } else if (isObject(handler)) {
+ len = arguments.length;
+ args = new Array(len - 1);
+ for (i = 1; i < len; i++)
+ args[i - 1] = arguments[i];
+
+ listeners = handler.slice();
+ len = listeners.length;
+ for (i = 0; i < len; i++)
+ listeners[i].apply(this, args);
+ }
+
+ return true;
+};
+
+EventEmitter.prototype.addListener = function(type, listener) {
+ var m;
+
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ if (!this._events)
+ this._events = {};
+
+ // To avoid recursion in the case that type === "newListener"! Before
+ // adding it to the listeners, first emit "newListener".
+ if (this._events.newListener)
+ this.emit('newListener', type,
+ isFunction(listener.listener) ?
+ listener.listener : listener);
+
+ if (!this._events[type])
+ // Optimize the case of one listener. Don't need the extra array object.
+ this._events[type] = listener;
+ else if (isObject(this._events[type]))
+ // If we've already got an array, just append.
+ this._events[type].push(listener);
+ else
+ // Adding the second element, need to change to array.
+ this._events[type] = [this._events[type], listener];
+
+ // Check for listener leak
+ if (isObject(this._events[type]) && !this._events[type].warned) {
+ var m;
+ if (!isUndefined(this._maxListeners)) {
+ m = this._maxListeners;
+ } else {
+ m = EventEmitter.defaultMaxListeners;
+ }
+
+ if (m && m > 0 && this._events[type].length > m) {
+ this._events[type].warned = true;
+ console.error('(node) warning: possible EventEmitter memory ' +
+ 'leak detected. %d listeners added. ' +
+ 'Use emitter.setMaxListeners() to increase limit.',
+ this._events[type].length);
+ if (typeof console.trace === 'function') {
+ // not supported in IE 10
+ console.trace();
+ }
+ }
+ }
+
+ return this;
+};
+
+EventEmitter.prototype.on = EventEmitter.prototype.addListener;
+
+EventEmitter.prototype.once = function(type, listener) {
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ var fired = false;
+
+ function g() {
+ this.removeListener(type, g);
+
+ if (!fired) {
+ fired = true;
+ listener.apply(this, arguments);
+ }
+ }
+
+ g.listener = listener;
+ this.on(type, g);
+
+ return this;
+};
+
+// emits a 'removeListener' event iff the listener was removed
+EventEmitter.prototype.removeListener = function(type, listener) {
+ var list, position, length, i;
+
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ if (!this._events || !this._events[type])
+ return this;
+
+ list = this._events[type];
+ length = list.length;
+ position = -1;
+
+ if (list === listener ||
+ (isFunction(list.listener) && list.listener === listener)) {
+ delete this._events[type];
+ if (this._events.removeListener)
+ this.emit('removeListener', type, listener);
+
+ } else if (isObject(list)) {
+ for (i = length; i-- > 0;) {
+ if (list[i] === listener ||
+ (list[i].listener && list[i].listener === listener)) {
+ position = i;
+ break;
+ }
+ }
+
+ if (position < 0)
+ return this;
+
+ if (list.length === 1) {
+ list.length = 0;
+ delete this._events[type];
+ } else {
+ list.splice(position, 1);
+ }
+
+ if (this._events.removeListener)
+ this.emit('removeListener', type, listener);
+ }
+
+ return this;
+};
+
+EventEmitter.prototype.removeAllListeners = function(type) {
+ var key, listeners;
+
+ if (!this._events)
+ return this;
+
+ // not listening for removeListener, no need to emit
+ if (!this._events.removeListener) {
+ if (arguments.length === 0)
+ this._events = {};
+ else if (this._events[type])
+ delete this._events[type];
+ return this;
+ }
+
+ // emit removeListener for all listeners on all events
+ if (arguments.length === 0) {
+ for (key in this._events) {
+ if (key === 'removeListener') continue;
+ this.removeAllListeners(key);
+ }
+ this.removeAllListeners('removeListener');
+ this._events = {};
+ return this;
+ }
+
+ listeners = this._events[type];
+
+ if (isFunction(listeners)) {
+ this.removeListener(type, listeners);
+ } else {
+ // LIFO order
+ while (listeners.length)
+ this.removeListener(type, listeners[listeners.length - 1]);
+ }
+ delete this._events[type];
+
+ return this;
+};
+
+EventEmitter.prototype.listeners = function(type) {
+ var ret;
+ if (!this._events || !this._events[type])
+ ret = [];
+ else if (isFunction(this._events[type]))
+ ret = [this._events[type]];
+ else
+ ret = this._events[type].slice();
+ return ret;
+};
+
+EventEmitter.listenerCount = function(emitter, type) {
+ var ret;
+ if (!emitter._events || !emitter._events[type])
+ ret = 0;
+ else if (isFunction(emitter._events[type]))
+ ret = 1;
+ else
+ ret = emitter._events[type].length;
+ return ret;
+};
+
+function isFunction(arg) {
+ return typeof arg === 'function';
+}
+
+function isNumber(arg) {
+ return typeof arg === 'number';
+}
+
+function isObject(arg) {
+ return typeof arg === 'object' && arg !== null;
+}
+
+function isUndefined(arg) {
+ return arg === void 0;
+}
+
+},{}],15:[function(require,module,exports){
+(function (process){
+exports.alphasort = alphasort
+exports.alphasorti = alphasorti
+exports.setopts = setopts
+exports.ownProp = ownProp
+exports.makeAbs = makeAbs
+exports.finish = finish
+exports.mark = mark
+exports.isIgnored = isIgnored
+exports.childrenIgnored = childrenIgnored
+
+function ownProp (obj, field) {
+ return Object.prototype.hasOwnProperty.call(obj, field)
+}
+
+var path = require("path")
+var minimatch = require("minimatch")
+var isAbsolute = require("path-is-absolute")
+var Minimatch = minimatch.Minimatch
+
+function alphasorti (a, b) {
+ return a.toLowerCase().localeCompare(b.toLowerCase())
+}
+
+function alphasort (a, b) {
+ return a.localeCompare(b)
+}
+
+function setupIgnores (self, options) {
+ self.ignore = options.ignore || []
+
+ if (!Array.isArray(self.ignore))
+ self.ignore = [self.ignore]
+
+ if (self.ignore.length) {
+ self.ignore = self.ignore.map(ignoreMap)
+ }
+}
+
+function ignoreMap (pattern) {
+ var gmatcher = null
+ if (pattern.slice(-3) === '/**') {
+ var gpattern = pattern.replace(/(\/\*\*)+$/, '')
+ gmatcher = new Minimatch(gpattern)
+ }
+
+ return {
+ matcher: new Minimatch(pattern),
+ gmatcher: gmatcher
+ }
+}
+
+function setopts (self, pattern, options) {
+ if (!options)
+ options = {}
+
+ // base-matching: just use globstar for that.
+ if (options.matchBase && -1 === pattern.indexOf("/")) {
+ if (options.noglobstar) {
+ throw new Error("base matching requires globstar")
+ }
+ pattern = "**/" + pattern
+ }
+
+ self.silent = !!options.silent
+ self.pattern = pattern
+ self.strict = options.strict !== false
+ self.realpath = !!options.realpath
+ self.realpathCache = options.realpathCache || Object.create(null)
+ self.follow = !!options.follow
+ self.dot = !!options.dot
+ self.mark = !!options.mark
+ self.nodir = !!options.nodir
+ if (self.nodir)
+ self.mark = true
+ self.sync = !!options.sync
+ self.nounique = !!options.nounique
+ self.nonull = !!options.nonull
+ self.nosort = !!options.nosort
+ self.nocase = !!options.nocase
+ self.stat = !!options.stat
+ self.noprocess = !!options.noprocess
+
+ self.maxLength = options.maxLength || Infinity
+ self.cache = options.cache || Object.create(null)
+ self.statCache = options.statCache || Object.create(null)
+ self.symlinks = options.symlinks || Object.create(null)
+
+ setupIgnores(self, options)
+
+ self.changedCwd = false
+ var cwd = process.cwd()
+ if (!ownProp(options, "cwd"))
+ self.cwd = cwd
+ else {
+ self.cwd = options.cwd
+ self.changedCwd = path.resolve(options.cwd) !== cwd
+ }
+
+ self.root = options.root || path.resolve(self.cwd, "/")
+ self.root = path.resolve(self.root)
+ if (process.platform === "win32")
+ self.root = self.root.replace(/\\/g, "/")
+
+ self.nomount = !!options.nomount
+
+ // disable comments and negation unless the user explicitly
+ // passes in false as the option.
+ options.nonegate = options.nonegate === false ? false : true
+ options.nocomment = options.nocomment === false ? false : true
+ deprecationWarning(options)
+
+ self.minimatch = new Minimatch(pattern, options)
+ self.options = self.minimatch.options
+}
+
+// TODO(isaacs): remove entirely in v6
+// exported to reset in tests
+exports.deprecationWarned
+function deprecationWarning(options) {
+ if (!options.nonegate || !options.nocomment) {
+ if (process.noDeprecation !== true && !exports.deprecationWarned) {
+ var msg = 'glob WARNING: comments and negation will be disabled in v6'
+ if (process.throwDeprecation)
+ throw new Error(msg)
+ else if (process.traceDeprecation)
+ console.trace(msg)
+ else
+ console.error(msg)
+
+ exports.deprecationWarned = true
+ }
+ }
+}
+
+function finish (self) {
+ var nou = self.nounique
+ var all = nou ? [] : Object.create(null)
+
+ for (var i = 0, l = self.matches.length; i < l; i ++) {
+ var matches = self.matches[i]
+ if (!matches || Object.keys(matches).length === 0) {
+ if (self.nonull) {
+ // do like the shell, and spit out the literal glob
+ var literal = self.minimatch.globSet[i]
+ if (nou)
+ all.push(literal)
+ else
+ all[literal] = true
+ }
+ } else {
+ // had matches
+ var m = Object.keys(matches)
+ if (nou)
+ all.push.apply(all, m)
+ else
+ m.forEach(function (m) {
+ all[m] = true
+ })
+ }
+ }
+
+ if (!nou)
+ all = Object.keys(all)
+
+ if (!self.nosort)
+ all = all.sort(self.nocase ? alphasorti : alphasort)
+
+ // at *some* point we statted all of these
+ if (self.mark) {
+ for (var i = 0; i < all.length; i++) {
+ all[i] = self._mark(all[i])
+ }
+ if (self.nodir) {
+ all = all.filter(function (e) {
+ return !(/\/$/.test(e))
+ })
+ }
+ }
+
+ if (self.ignore.length)
+ all = all.filter(function(m) {
+ return !isIgnored(self, m)
+ })
+
+ self.found = all
+}
+
+function mark (self, p) {
+ var abs = makeAbs(self, p)
+ var c = self.cache[abs]
+ var m = p
+ if (c) {
+ var isDir = c === 'DIR' || Array.isArray(c)
+ var slash = p.slice(-1) === '/'
+
+ if (isDir && !slash)
+ m += '/'
+ else if (!isDir && slash)
+ m = m.slice(0, -1)
+
+ if (m !== p) {
+ var mabs = makeAbs(self, m)
+ self.statCache[mabs] = self.statCache[abs]
+ self.cache[mabs] = self.cache[abs]
+ }
+ }
+
+ return m
+}
+
+// lotta situps...
+function makeAbs (self, f) {
+ var abs = f
+ if (f.charAt(0) === '/') {
+ abs = path.join(self.root, f)
+ } else if (isAbsolute(f) || f === '') {
+ abs = f
+ } else if (self.changedCwd) {
+ abs = path.resolve(self.cwd, f)
+ } else {
+ abs = path.resolve(f)
+ }
+ return abs
+}
+
+
+// Return true, if pattern ends with globstar '**', for the accompanying parent directory.
+// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents
+function isIgnored (self, path) {
+ if (!self.ignore.length)
+ return false
+
+ return self.ignore.some(function(item) {
+ return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))
+ })
+}
+
+function childrenIgnored (self, path) {
+ if (!self.ignore.length)
+ return false
+
+ return self.ignore.some(function(item) {
+ return !!(item.gmatcher && item.gmatcher.match(path))
+ })
+}
+
+}).call(this,require('_process'))
+},{"_process":24,"minimatch":20,"path":22,"path-is-absolute":23}],16:[function(require,module,exports){
+(function (process){
+// Approach:
+//
+// 1. Get the minimatch set
+// 2. For each pattern in the set, PROCESS(pattern, false)
+// 3. Store matches per-set, then uniq them
+//
+// PROCESS(pattern, inGlobStar)
+// Get the first [n] items from pattern that are all strings
+// Join these together. This is PREFIX.
+// If there is no more remaining, then stat(PREFIX) and
+// add to matches if it succeeds. END.
+//
+// If inGlobStar and PREFIX is symlink and points to dir
+// set ENTRIES = []
+// else readdir(PREFIX) as ENTRIES
+// If fail, END
+//
+// with ENTRIES
+// If pattern[n] is GLOBSTAR
+// // handle the case where the globstar match is empty
+// // by pruning it out, and testing the resulting pattern
+// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)
+// // handle other cases.
+// for ENTRY in ENTRIES (not dotfiles)
+// // attach globstar + tail onto the entry
+// // Mark that this entry is a globstar match
+// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)
+//
+// else // not globstar
+// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)
+// Test ENTRY against pattern[n]
+// If fails, continue
+// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])
+//
+// Caveat:
+// Cache all stats and readdirs results to minimize syscall. Since all
+// we ever care about is existence and directory-ness, we can just keep
+// `true` for files, and [children,...] for directories, or `false` for
+// things that don't exist.
+
+module.exports = glob
+
+var fs = require('fs')
+var minimatch = require('minimatch')
+var Minimatch = minimatch.Minimatch
+var inherits = require('inherits')
+var EE = require('events').EventEmitter
+var path = require('path')
+var assert = require('assert')
+var isAbsolute = require('path-is-absolute')
+var globSync = require('./sync.js')
+var common = require('./common.js')
+var alphasort = common.alphasort
+var alphasorti = common.alphasorti
+var setopts = common.setopts
+var ownProp = common.ownProp
+var inflight = require('inflight')
+var util = require('util')
+var childrenIgnored = common.childrenIgnored
+var isIgnored = common.isIgnored
+
+var once = require('once')
+
+function glob (pattern, options, cb) {
+ if (typeof options === 'function') cb = options, options = {}
+ if (!options) options = {}
+
+ if (options.sync) {
+ if (cb)
+ throw new TypeError('callback provided to sync glob')
+ return globSync(pattern, options)
+ }
+
+ return new Glob(pattern, options, cb)
+}
+
+glob.sync = globSync
+var GlobSync = glob.GlobSync = globSync.GlobSync
+
+// old api surface
+glob.glob = glob
+
+glob.hasMagic = function (pattern, options_) {
+ var options = util._extend({}, options_)
+ options.noprocess = true
+
+ var g = new Glob(pattern, options)
+ var set = g.minimatch.set
+ if (set.length > 1)
+ return true
+
+ for (var j = 0; j < set[0].length; j++) {
+ if (typeof set[0][j] !== 'string')
+ return true
+ }
+
+ return false
+}
+
+glob.Glob = Glob
+inherits(Glob, EE)
+function Glob (pattern, options, cb) {
+ if (typeof options === 'function') {
+ cb = options
+ options = null
+ }
+
+ if (options && options.sync) {
+ if (cb)
+ throw new TypeError('callback provided to sync glob')
+ return new GlobSync(pattern, options)
+ }
+
+ if (!(this instanceof Glob))
+ return new Glob(pattern, options, cb)
+
+ setopts(this, pattern, options)
+ this._didRealPath = false
+
+ // process each pattern in the minimatch set
+ var n = this.minimatch.set.length
+
+ // The matches are stored as {<filename>: true,...} so that
+ // duplicates are automagically pruned.
+ // Later, we do an Object.keys() on these.
+ // Keep them as a list so we can fill in when nonull is set.
+ this.matches = new Array(n)
+
+ if (typeof cb === 'function') {
+ cb = once(cb)
+ this.on('error', cb)
+ this.on('end', function (matches) {
+ cb(null, matches)
+ })
+ }
+
+ var self = this
+ var n = this.minimatch.set.length
+ this._processing = 0
+ this.matches = new Array(n)
+
+ this._emitQueue = []
+ this._processQueue = []
+ this.paused = false
+
+ if (this.noprocess)
+ return this
+
+ if (n === 0)
+ return done()
+
+ for (var i = 0; i < n; i ++) {
+ this._process(this.minimatch.set[i], i, false, done)
+ }
+
+ function done () {
+ --self._processing
+ if (self._processing <= 0)
+ self._finish()
+ }
+}
+
+Glob.prototype._finish = function () {
+ assert(this instanceof Glob)
+ if (this.aborted)
+ return
+
+ if (this.realpath && !this._didRealpath)
+ return this._realpath()
+
+ common.finish(this)
+ this.emit('end', this.found)
+}
+
+Glob.prototype._realpath = function () {
+ if (this._didRealpath)
+ return
+
+ this._didRealpath = true
+
+ var n = this.matches.length
+ if (n === 0)
+ return this._finish()
+
+ var self = this
+ for (var i = 0; i < this.matches.length; i++)
+ this._realpathSet(i, next)
+
+ function next () {
+ if (--n === 0)
+ self._finish()
+ }
+}
+
+Glob.prototype._realpathSet = function (index, cb) {
+ var matchset = this.matches[index]
+ if (!matchset)
+ return cb()
+
+ var found = Object.keys(matchset)
+ var self = this
+ var n = found.length
+
+ if (n === 0)
+ return cb()
+
+ var set = this.matches[index] = Object.create(null)
+ found.forEach(function (p, i) {
+ // If there's a problem with the stat, then it means that
+ // one or more of the links in the realpath couldn't be
+ // resolved. just return the abs value in that case.
+ p = self._makeAbs(p)
... 224430 lines suppressed ...