blob: ebb2e9b28f91209b1582bfc8b6ac40fbea451086 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" data-content_root="" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>pyarrow &#8212; Apache Arrow v17.0.0.dev52</title>
<script data-cfasync="false">
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
</script>
<!-- Loaded before other Sphinx assets -->
<link href="../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" />
<link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css" />
<!-- Pre-loaded scripts that we'll load fully later -->
<link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
<script src="../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/clipboard.min.js"></script>
<script src="../_static/copybutton.js"></script>
<script src="../_static/design-tabs.js"></script>
<script>DOCUMENTATION_OPTIONS.pagename = '_modules/pyarrow';</script>
<script>
DOCUMENTATION_OPTIONS.theme_version = '0.15.2';
DOCUMENTATION_OPTIONS.theme_switcher_json_url = '/docs/_static/versions.json';
DOCUMENTATION_OPTIONS.theme_switcher_version_match = 'dev/';
DOCUMENTATION_OPTIONS.show_version_warning_banner = true;
</script>
<link rel="canonical" href="https://arrow.apache.org/docs/_modules/pyarrow.html" />
<link rel="icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="en"/>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '20']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head>
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
<div id="pst-scroll-pixel-helper"></div>
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
<i class="fa-solid fa-arrow-up"></i>
Back to top
</button>
<input type="checkbox"
class="sidebar-toggle"
name="__primary"
id="__primary"/>
<label class="overlay overlay-primary" for="__primary"></label>
<input type="checkbox"
class="sidebar-toggle"
name="__secondary"
id="__secondary"/>
<label class="overlay overlay-secondary" for="__secondary"></label>
<div class="search-button__wrapper">
<div class="search-button__overlay"></div>
<div class="search-button__search-container">
<form class="bd-search d-flex align-items-center"
action="../search.html"
method="get">
<i class="fa-solid fa-magnifying-glass"></i>
<input type="search"
class="form-control"
name="q"
id="search-input"
placeholder="Search the docs ..."
aria-label="Search the docs ..."
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"/>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
</form></div>
</div>
<header class="bd-header navbar navbar-expand-lg bd-navbar">
<div class="bd-header__inner bd-page-width">
<label class="sidebar-toggle primary-toggle" for="__primary">
<span class="fa-solid fa-bars"></span>
</label>
<div class="col-lg-3 navbar-header-items__start">
<div class="navbar-item">
<a class="navbar-brand logo" href="../index.html">
<img src="../_static/arrow.png" class="logo__image only-light" alt="Apache Arrow v17.0.0.dev52 - Home"/>
<script>document.write(`<img src="../_static/arrow-dark.png" class="logo__image only-dark" alt="Apache Arrow v17.0.0.dev52 - Home"/>`);</script>
</a></div>
</div>
<div class="col-lg-9 navbar-header-items">
<div class="me-auto navbar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../format/index.html">
Specifications
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-internal" href="../developers/index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
Implementations
</button>
<ul id="pst-nav-more-links" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../cpp/index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../python/index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="navbar-header-items__end">
<div class="navbar-item navbar-persistent--container">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-2"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-2"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-2"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-2">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="navbar-persistent--mobile">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
</div>
</header>
<div class="bd-container">
<div class="bd-container__inner bd-page-width">
<div class="bd-sidebar-primary bd-sidebar hide-on-wide">
<div class="sidebar-header-items sidebar-primary__section">
<div class="sidebar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../format/index.html">
Specifications
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-internal" href="../developers/index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
Implementations
</button>
<ul id="pst-nav-more-links-2" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../cpp/index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../python/index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="sidebar-header-items__end">
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-3"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-3"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-3"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-3">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="sidebar-primary-items__end sidebar-primary__section">
</div>
<div id="rtd-footer-container"></div>
</div>
<main id="main-content" class="bd-main">
<div class="bd-content">
<div class="bd-article-container">
<div class="bd-header-article">
<div class="header-article-items header-article__inner">
<div class="header-article-items__start">
<div class="header-article-item">
<nav aria-label="Breadcrumb">
<ul class="bd-breadcrumbs">
<li class="breadcrumb-item breadcrumb-home">
<a href="../index.html" class="nav-link" aria-label="Home">
<i class="fa-solid fa-home"></i>
</a>
</li>
<li class="breadcrumb-item"><a href="index.html" class="nav-link">Module code</a></li>
<li class="breadcrumb-item active" aria-current="page">pyarrow</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="searchbox"></div>
<article class="bd-article">
<h1>Source code for pyarrow</h1><div class="highlight"><pre>
<span></span><span class="c1"># Licensed to the Apache Software Foundation (ASF) under one</span>
<span class="c1"># or more contributor license agreements. See the NOTICE file</span>
<span class="c1"># distributed with this work for additional information</span>
<span class="c1"># regarding copyright ownership. The ASF licenses this file</span>
<span class="c1"># to you under the Apache License, Version 2.0 (the</span>
<span class="c1"># &quot;License&quot;); you may not use this file except in compliance</span>
<span class="c1"># with the License. You may obtain a copy of the License at</span>
<span class="c1">#</span>
<span class="c1"># http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="c1">#</span>
<span class="c1"># Unless required by applicable law or agreed to in writing,</span>
<span class="c1"># software distributed under the License is distributed on an</span>
<span class="c1"># &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span>
<span class="c1"># KIND, either express or implied. See the License for the</span>
<span class="c1"># specific language governing permissions and limitations</span>
<span class="c1"># under the License.</span>
<span class="c1"># flake8: noqa</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">PyArrow is the python implementation of Apache Arrow.</span>
<span class="sd">Apache Arrow is a cross-language development platform for in-memory data.</span>
<span class="sd">It specifies a standardized language-independent columnar memory format for</span>
<span class="sd">flat and hierarchical data, organized for efficient analytic operations on</span>
<span class="sd">modern hardware. It also provides computational libraries and zero-copy</span>
<span class="sd">streaming messaging and interprocess communication.</span>
<span class="sd">For more information see the official page at https://arrow.apache.org</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">gc</span> <span class="k">as</span> <span class="nn">_gc</span>
<span class="kn">import</span> <span class="nn">importlib</span> <span class="k">as</span> <span class="nn">_importlib</span>
<span class="kn">import</span> <span class="nn">os</span> <span class="k">as</span> <span class="nn">_os</span>
<span class="kn">import</span> <span class="nn">platform</span> <span class="k">as</span> <span class="nn">_platform</span>
<span class="kn">import</span> <span class="nn">sys</span> <span class="k">as</span> <span class="nn">_sys</span>
<span class="kn">import</span> <span class="nn">warnings</span> <span class="k">as</span> <span class="nn">_warnings</span>
<span class="k">try</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">._generated_version</span> <span class="kn">import</span> <span class="n">version</span> <span class="k">as</span> <span class="n">__version__</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="c1"># Package is not installed, parse git tag at runtime</span>
<span class="k">try</span><span class="p">:</span>
<span class="kn">import</span> <span class="nn">setuptools_scm</span>
<span class="c1"># Code duplicated from setup.py to avoid a dependency on each other</span>
<span class="k">def</span> <span class="nf">parse_git</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Parse function for setuptools_scm that ignores tags for non-C++</span>
<span class="sd"> subprojects, e.g. apache-arrow-js-XXX tags.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">setuptools_scm.git</span> <span class="kn">import</span> <span class="n">parse</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;describe_command&#39;</span><span class="p">]</span> <span class="o">=</span> \
<span class="s2">&quot;git describe --dirty --tags --long --match &#39;apache-arrow-[0-9]*.*&#39;&quot;</span>
<span class="k">return</span> <span class="n">parse</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="n">__version__</span> <span class="o">=</span> <span class="n">setuptools_scm</span><span class="o">.</span><span class="n">get_version</span><span class="p">(</span><span class="s1">&#39;../&#39;</span><span class="p">,</span>
<span class="n">parse</span><span class="o">=</span><span class="n">parse_git</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="n">__version__</span> <span class="o">=</span> <span class="kc">None</span>
<span class="c1"># ARROW-8684: Disable GC while initializing Cython extension module,</span>
<span class="c1"># to workaround Cython bug in https://github.com/cython/cython/issues/3603</span>
<span class="n">_gc_enabled</span> <span class="o">=</span> <span class="n">_gc</span><span class="o">.</span><span class="n">isenabled</span><span class="p">()</span>
<span class="n">_gc</span><span class="o">.</span><span class="n">disable</span><span class="p">()</span>
<span class="kn">import</span> <span class="nn">pyarrow.lib</span> <span class="k">as</span> <span class="nn">_lib</span>
<span class="k">if</span> <span class="n">_gc_enabled</span><span class="p">:</span>
<span class="n">_gc</span><span class="o">.</span><span class="n">enable</span><span class="p">()</span>
<span class="kn">from</span> <span class="nn">pyarrow.lib</span> <span class="kn">import</span> <span class="p">(</span><span class="n">BuildInfo</span><span class="p">,</span> <span class="n">RuntimeInfo</span><span class="p">,</span> <span class="n">set_timezone_db_path</span><span class="p">,</span>
<span class="n">MonthDayNano</span><span class="p">,</span> <span class="n">VersionInfo</span><span class="p">,</span> <span class="n">cpp_build_info</span><span class="p">,</span>
<span class="n">cpp_version</span><span class="p">,</span> <span class="n">cpp_version_info</span><span class="p">,</span> <span class="n">runtime_info</span><span class="p">,</span>
<span class="n">cpu_count</span><span class="p">,</span> <span class="n">set_cpu_count</span><span class="p">,</span> <span class="n">enable_signal_handlers</span><span class="p">,</span>
<span class="n">io_thread_count</span><span class="p">,</span> <span class="n">set_io_thread_count</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">show_versions</span><span class="p">():</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Print various version information, to help with error reporting.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">print_entry</span><span class="p">(</span><span class="n">label</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">label</span><span class="si">:</span><span class="s2"> &lt;26</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">value</span><span class="si">:</span><span class="s2"> &lt;8</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;pyarrow version info</span><span class="se">\n</span><span class="s2">--------------------&quot;</span><span class="p">)</span>
<span class="n">print_entry</span><span class="p">(</span><span class="s2">&quot;Package kind&quot;</span><span class="p">,</span> <span class="n">cpp_build_info</span><span class="o">.</span><span class="n">package_kind</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">cpp_build_info</span><span class="o">.</span><span class="n">package_kind</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span>
<span class="k">else</span> <span class="s2">&quot;not indicated&quot;</span><span class="p">)</span>
<span class="n">print_entry</span><span class="p">(</span><span class="s2">&quot;Arrow C++ library version&quot;</span><span class="p">,</span> <span class="n">cpp_build_info</span><span class="o">.</span><span class="n">version</span><span class="p">)</span>
<span class="n">print_entry</span><span class="p">(</span><span class="s2">&quot;Arrow C++ compiler&quot;</span><span class="p">,</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">cpp_build_info</span><span class="o">.</span><span class="n">compiler_id</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">cpp_build_info</span><span class="o">.</span><span class="n">compiler_version</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="n">print_entry</span><span class="p">(</span><span class="s2">&quot;Arrow C++ compiler flags&quot;</span><span class="p">,</span> <span class="n">cpp_build_info</span><span class="o">.</span><span class="n">compiler_flags</span><span class="p">)</span>
<span class="n">print_entry</span><span class="p">(</span><span class="s2">&quot;Arrow C++ git revision&quot;</span><span class="p">,</span> <span class="n">cpp_build_info</span><span class="o">.</span><span class="n">git_id</span><span class="p">)</span>
<span class="n">print_entry</span><span class="p">(</span><span class="s2">&quot;Arrow C++ git description&quot;</span><span class="p">,</span> <span class="n">cpp_build_info</span><span class="o">.</span><span class="n">git_description</span><span class="p">)</span>
<span class="n">print_entry</span><span class="p">(</span><span class="s2">&quot;Arrow C++ build type&quot;</span><span class="p">,</span> <span class="n">cpp_build_info</span><span class="o">.</span><span class="n">build_type</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_module_is_available</span><span class="p">(</span><span class="n">module</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">_importlib</span><span class="o">.</span><span class="n">import_module</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;pyarrow.</span><span class="si">{</span><span class="n">module</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">def</span> <span class="nf">_filesystem_is_available</span><span class="p">(</span><span class="n">fs</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="kn">import</span> <span class="nn">pyarrow.fs</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">try</span><span class="p">:</span>
<span class="nb">getattr</span><span class="p">(</span><span class="n">pyarrow</span><span class="o">.</span><span class="n">fs</span><span class="p">,</span> <span class="n">fs</span><span class="p">)</span>
<span class="k">except</span> <span class="p">(</span><span class="ne">ImportError</span><span class="p">,</span> <span class="ne">AttributeError</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">def</span> <span class="nf">show_info</span><span class="p">():</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Print detailed version and platform information, for error reporting</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">show_versions</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">print_entry</span><span class="p">(</span><span class="n">label</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">label</span><span class="si">:</span><span class="s2"> &lt;20</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">value</span><span class="si">:</span><span class="s2"> &lt;8</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Platform:&quot;</span><span class="p">)</span>
<span class="n">print_entry</span><span class="p">(</span><span class="s2">&quot;OS / Arch&quot;</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">_platform</span><span class="o">.</span><span class="n">system</span><span class="p">()</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">_platform</span><span class="o">.</span><span class="n">machine</span><span class="p">()</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="n">print_entry</span><span class="p">(</span><span class="s2">&quot;SIMD Level&quot;</span><span class="p">,</span> <span class="n">runtime_info</span><span class="p">()</span><span class="o">.</span><span class="n">simd_level</span><span class="p">)</span>
<span class="n">print_entry</span><span class="p">(</span><span class="s2">&quot;Detected SIMD Level&quot;</span><span class="p">,</span> <span class="n">runtime_info</span><span class="p">()</span><span class="o">.</span><span class="n">detected_simd_level</span><span class="p">)</span>
<span class="n">pool</span> <span class="o">=</span> <span class="n">default_memory_pool</span><span class="p">()</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Memory:&quot;</span><span class="p">)</span>
<span class="n">print_entry</span><span class="p">(</span><span class="s2">&quot;Default backend&quot;</span><span class="p">,</span> <span class="n">pool</span><span class="o">.</span><span class="n">backend_name</span><span class="p">)</span>
<span class="n">print_entry</span><span class="p">(</span><span class="s2">&quot;Bytes allocated&quot;</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">pool</span><span class="o">.</span><span class="n">bytes_allocated</span><span class="p">()</span><span class="si">}</span><span class="s2"> bytes&quot;</span><span class="p">)</span>
<span class="n">print_entry</span><span class="p">(</span><span class="s2">&quot;Max memory&quot;</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">pool</span><span class="o">.</span><span class="n">max_memory</span><span class="p">()</span><span class="si">}</span><span class="s2"> bytes&quot;</span><span class="p">)</span>
<span class="n">print_entry</span><span class="p">(</span><span class="s2">&quot;Supported Backends&quot;</span><span class="p">,</span> <span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">supported_memory_backends</span><span class="p">()))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Optional modules:&quot;</span><span class="p">)</span>
<span class="n">modules</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;csv&quot;</span><span class="p">,</span> <span class="s2">&quot;cuda&quot;</span><span class="p">,</span> <span class="s2">&quot;dataset&quot;</span><span class="p">,</span> <span class="s2">&quot;feather&quot;</span><span class="p">,</span> <span class="s2">&quot;flight&quot;</span><span class="p">,</span> <span class="s2">&quot;fs&quot;</span><span class="p">,</span> <span class="s2">&quot;gandiva&quot;</span><span class="p">,</span> <span class="s2">&quot;json&quot;</span><span class="p">,</span>
<span class="s2">&quot;orc&quot;</span><span class="p">,</span> <span class="s2">&quot;parquet&quot;</span><span class="p">]</span>
<span class="k">for</span> <span class="n">module</span> <span class="ow">in</span> <span class="n">modules</span><span class="p">:</span>
<span class="n">status</span> <span class="o">=</span> <span class="s2">&quot;Enabled&quot;</span> <span class="k">if</span> <span class="n">_module_is_available</span><span class="p">(</span><span class="n">module</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;-&quot;</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">module</span><span class="si">:</span><span class="s2"> &lt;20</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">status</span><span class="si">:</span><span class="s2"> &lt;8</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Filesystems:&quot;</span><span class="p">)</span>
<span class="n">filesystems</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;AzureFileSystem&quot;</span><span class="p">,</span> <span class="s2">&quot;GcsFileSystem&quot;</span><span class="p">,</span>
<span class="s2">&quot;HadoopFileSystem&quot;</span><span class="p">,</span> <span class="s2">&quot;S3FileSystem&quot;</span><span class="p">]</span>
<span class="k">for</span> <span class="n">fs</span> <span class="ow">in</span> <span class="n">filesystems</span><span class="p">:</span>
<span class="n">status</span> <span class="o">=</span> <span class="s2">&quot;Enabled&quot;</span> <span class="k">if</span> <span class="n">_filesystem_is_available</span><span class="p">(</span><span class="n">fs</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;-&quot;</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">fs</span><span class="si">:</span><span class="s2"> &lt;20</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">status</span><span class="si">:</span><span class="s2"> &lt;8</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Compression Codecs:&quot;</span><span class="p">)</span>
<span class="n">codecs</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;brotli&quot;</span><span class="p">,</span> <span class="s2">&quot;bz2&quot;</span><span class="p">,</span> <span class="s2">&quot;gzip&quot;</span><span class="p">,</span> <span class="s2">&quot;lz4_frame&quot;</span><span class="p">,</span> <span class="s2">&quot;lz4&quot;</span><span class="p">,</span> <span class="s2">&quot;snappy&quot;</span><span class="p">,</span> <span class="s2">&quot;zstd&quot;</span><span class="p">]</span>
<span class="k">for</span> <span class="n">codec</span> <span class="ow">in</span> <span class="n">codecs</span><span class="p">:</span>
<span class="n">status</span> <span class="o">=</span> <span class="s2">&quot;Enabled&quot;</span> <span class="k">if</span> <span class="n">Codec</span><span class="o">.</span><span class="n">is_available</span><span class="p">(</span><span class="n">codec</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;-&quot;</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">codec</span><span class="si">:</span><span class="s2"> &lt;20</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">status</span><span class="si">:</span><span class="s2"> &lt;8</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="kn">from</span> <span class="nn">pyarrow.lib</span> <span class="kn">import</span> <span class="p">(</span><span class="n">null</span><span class="p">,</span> <span class="n">bool_</span><span class="p">,</span>
<span class="n">int8</span><span class="p">,</span> <span class="n">int16</span><span class="p">,</span> <span class="n">int32</span><span class="p">,</span> <span class="n">int64</span><span class="p">,</span>
<span class="n">uint8</span><span class="p">,</span> <span class="n">uint16</span><span class="p">,</span> <span class="n">uint32</span><span class="p">,</span> <span class="n">uint64</span><span class="p">,</span>
<span class="n">time32</span><span class="p">,</span> <span class="n">time64</span><span class="p">,</span> <span class="n">timestamp</span><span class="p">,</span> <span class="n">date32</span><span class="p">,</span> <span class="n">date64</span><span class="p">,</span> <span class="n">duration</span><span class="p">,</span>
<span class="n">month_day_nano_interval</span><span class="p">,</span>
<span class="n">float16</span><span class="p">,</span> <span class="n">float32</span><span class="p">,</span> <span class="n">float64</span><span class="p">,</span>
<span class="n">binary</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">utf8</span><span class="p">,</span> <span class="n">binary_view</span><span class="p">,</span> <span class="n">string_view</span><span class="p">,</span>
<span class="n">large_binary</span><span class="p">,</span> <span class="n">large_string</span><span class="p">,</span> <span class="n">large_utf8</span><span class="p">,</span>
<span class="n">decimal128</span><span class="p">,</span> <span class="n">decimal256</span><span class="p">,</span>
<span class="n">list_</span><span class="p">,</span> <span class="n">large_list</span><span class="p">,</span> <span class="n">list_view</span><span class="p">,</span> <span class="n">large_list_view</span><span class="p">,</span>
<span class="n">map_</span><span class="p">,</span> <span class="n">struct</span><span class="p">,</span>
<span class="n">union</span><span class="p">,</span> <span class="n">sparse_union</span><span class="p">,</span> <span class="n">dense_union</span><span class="p">,</span>
<span class="n">dictionary</span><span class="p">,</span>
<span class="n">run_end_encoded</span><span class="p">,</span>
<span class="n">fixed_shape_tensor</span><span class="p">,</span>
<span class="n">field</span><span class="p">,</span>
<span class="n">type_for_alias</span><span class="p">,</span>
<span class="n">DataType</span><span class="p">,</span> <span class="n">DictionaryType</span><span class="p">,</span> <span class="n">StructType</span><span class="p">,</span>
<span class="n">ListType</span><span class="p">,</span> <span class="n">LargeListType</span><span class="p">,</span> <span class="n">FixedSizeListType</span><span class="p">,</span>
<span class="n">ListViewType</span><span class="p">,</span> <span class="n">LargeListViewType</span><span class="p">,</span>
<span class="n">MapType</span><span class="p">,</span> <span class="n">UnionType</span><span class="p">,</span> <span class="n">SparseUnionType</span><span class="p">,</span> <span class="n">DenseUnionType</span><span class="p">,</span>
<span class="n">TimestampType</span><span class="p">,</span> <span class="n">Time32Type</span><span class="p">,</span> <span class="n">Time64Type</span><span class="p">,</span> <span class="n">DurationType</span><span class="p">,</span>
<span class="n">FixedSizeBinaryType</span><span class="p">,</span> <span class="n">Decimal128Type</span><span class="p">,</span> <span class="n">Decimal256Type</span><span class="p">,</span>
<span class="n">BaseExtensionType</span><span class="p">,</span> <span class="n">ExtensionType</span><span class="p">,</span>
<span class="n">RunEndEncodedType</span><span class="p">,</span> <span class="n">FixedShapeTensorType</span><span class="p">,</span>
<span class="n">PyExtensionType</span><span class="p">,</span> <span class="n">UnknownExtensionType</span><span class="p">,</span>
<span class="n">register_extension_type</span><span class="p">,</span> <span class="n">unregister_extension_type</span><span class="p">,</span>
<span class="n">DictionaryMemo</span><span class="p">,</span>
<span class="n">KeyValueMetadata</span><span class="p">,</span>
<span class="n">Field</span><span class="p">,</span>
<span class="n">Schema</span><span class="p">,</span>
<span class="n">schema</span><span class="p">,</span>
<span class="n">unify_schemas</span><span class="p">,</span>
<span class="n">Array</span><span class="p">,</span> <span class="n">Tensor</span><span class="p">,</span>
<span class="n">array</span><span class="p">,</span> <span class="n">chunked_array</span><span class="p">,</span> <span class="n">record_batch</span><span class="p">,</span> <span class="n">nulls</span><span class="p">,</span> <span class="n">repeat</span><span class="p">,</span>
<span class="n">SparseCOOTensor</span><span class="p">,</span> <span class="n">SparseCSRMatrix</span><span class="p">,</span> <span class="n">SparseCSCMatrix</span><span class="p">,</span>
<span class="n">SparseCSFTensor</span><span class="p">,</span>
<span class="n">infer_type</span><span class="p">,</span> <span class="n">from_numpy_dtype</span><span class="p">,</span>
<span class="n">NullArray</span><span class="p">,</span>
<span class="n">NumericArray</span><span class="p">,</span> <span class="n">IntegerArray</span><span class="p">,</span> <span class="n">FloatingPointArray</span><span class="p">,</span>
<span class="n">BooleanArray</span><span class="p">,</span>
<span class="n">Int8Array</span><span class="p">,</span> <span class="n">UInt8Array</span><span class="p">,</span>
<span class="n">Int16Array</span><span class="p">,</span> <span class="n">UInt16Array</span><span class="p">,</span>
<span class="n">Int32Array</span><span class="p">,</span> <span class="n">UInt32Array</span><span class="p">,</span>
<span class="n">Int64Array</span><span class="p">,</span> <span class="n">UInt64Array</span><span class="p">,</span>
<span class="n">HalfFloatArray</span><span class="p">,</span> <span class="n">FloatArray</span><span class="p">,</span> <span class="n">DoubleArray</span><span class="p">,</span>
<span class="n">ListArray</span><span class="p">,</span> <span class="n">LargeListArray</span><span class="p">,</span> <span class="n">FixedSizeListArray</span><span class="p">,</span>
<span class="n">ListViewArray</span><span class="p">,</span> <span class="n">LargeListViewArray</span><span class="p">,</span>
<span class="n">MapArray</span><span class="p">,</span> <span class="n">UnionArray</span><span class="p">,</span>
<span class="n">BinaryArray</span><span class="p">,</span> <span class="n">StringArray</span><span class="p">,</span>
<span class="n">LargeBinaryArray</span><span class="p">,</span> <span class="n">LargeStringArray</span><span class="p">,</span>
<span class="n">BinaryViewArray</span><span class="p">,</span> <span class="n">StringViewArray</span><span class="p">,</span>
<span class="n">FixedSizeBinaryArray</span><span class="p">,</span>
<span class="n">DictionaryArray</span><span class="p">,</span>
<span class="n">Date32Array</span><span class="p">,</span> <span class="n">Date64Array</span><span class="p">,</span> <span class="n">TimestampArray</span><span class="p">,</span>
<span class="n">Time32Array</span><span class="p">,</span> <span class="n">Time64Array</span><span class="p">,</span> <span class="n">DurationArray</span><span class="p">,</span>
<span class="n">MonthDayNanoIntervalArray</span><span class="p">,</span>
<span class="n">Decimal128Array</span><span class="p">,</span> <span class="n">Decimal256Array</span><span class="p">,</span> <span class="n">StructArray</span><span class="p">,</span> <span class="n">ExtensionArray</span><span class="p">,</span>
<span class="n">RunEndEncodedArray</span><span class="p">,</span> <span class="n">FixedShapeTensorArray</span><span class="p">,</span>
<span class="n">scalar</span><span class="p">,</span> <span class="n">NA</span><span class="p">,</span> <span class="n">_NULL</span> <span class="k">as</span> <span class="n">NULL</span><span class="p">,</span> <span class="n">Scalar</span><span class="p">,</span>
<span class="n">NullScalar</span><span class="p">,</span> <span class="n">BooleanScalar</span><span class="p">,</span>
<span class="n">Int8Scalar</span><span class="p">,</span> <span class="n">Int16Scalar</span><span class="p">,</span> <span class="n">Int32Scalar</span><span class="p">,</span> <span class="n">Int64Scalar</span><span class="p">,</span>
<span class="n">UInt8Scalar</span><span class="p">,</span> <span class="n">UInt16Scalar</span><span class="p">,</span> <span class="n">UInt32Scalar</span><span class="p">,</span> <span class="n">UInt64Scalar</span><span class="p">,</span>
<span class="n">HalfFloatScalar</span><span class="p">,</span> <span class="n">FloatScalar</span><span class="p">,</span> <span class="n">DoubleScalar</span><span class="p">,</span>
<span class="n">Decimal128Scalar</span><span class="p">,</span> <span class="n">Decimal256Scalar</span><span class="p">,</span>
<span class="n">ListScalar</span><span class="p">,</span> <span class="n">LargeListScalar</span><span class="p">,</span> <span class="n">FixedSizeListScalar</span><span class="p">,</span>
<span class="n">ListViewScalar</span><span class="p">,</span> <span class="n">LargeListViewScalar</span><span class="p">,</span>
<span class="n">Date32Scalar</span><span class="p">,</span> <span class="n">Date64Scalar</span><span class="p">,</span>
<span class="n">Time32Scalar</span><span class="p">,</span> <span class="n">Time64Scalar</span><span class="p">,</span>
<span class="n">TimestampScalar</span><span class="p">,</span> <span class="n">DurationScalar</span><span class="p">,</span>
<span class="n">MonthDayNanoIntervalScalar</span><span class="p">,</span>
<span class="n">BinaryScalar</span><span class="p">,</span> <span class="n">LargeBinaryScalar</span><span class="p">,</span> <span class="n">BinaryViewScalar</span><span class="p">,</span>
<span class="n">StringScalar</span><span class="p">,</span> <span class="n">LargeStringScalar</span><span class="p">,</span> <span class="n">StringViewScalar</span><span class="p">,</span>
<span class="n">FixedSizeBinaryScalar</span><span class="p">,</span> <span class="n">DictionaryScalar</span><span class="p">,</span>
<span class="n">MapScalar</span><span class="p">,</span> <span class="n">StructScalar</span><span class="p">,</span> <span class="n">UnionScalar</span><span class="p">,</span>
<span class="n">RunEndEncodedScalar</span><span class="p">,</span> <span class="n">ExtensionScalar</span><span class="p">)</span>
<span class="c1"># Buffers, allocation</span>
<span class="kn">from</span> <span class="nn">pyarrow.lib</span> <span class="kn">import</span> <span class="p">(</span><span class="n">Buffer</span><span class="p">,</span> <span class="n">ResizableBuffer</span><span class="p">,</span> <span class="n">foreign_buffer</span><span class="p">,</span> <span class="n">py_buffer</span><span class="p">,</span>
<span class="n">Codec</span><span class="p">,</span> <span class="n">compress</span><span class="p">,</span> <span class="n">decompress</span><span class="p">,</span> <span class="n">allocate_buffer</span><span class="p">)</span>
<span class="kn">from</span> <span class="nn">pyarrow.lib</span> <span class="kn">import</span> <span class="p">(</span><span class="n">MemoryPool</span><span class="p">,</span> <span class="n">LoggingMemoryPool</span><span class="p">,</span> <span class="n">ProxyMemoryPool</span><span class="p">,</span>
<span class="n">total_allocated_bytes</span><span class="p">,</span> <span class="n">set_memory_pool</span><span class="p">,</span>
<span class="n">default_memory_pool</span><span class="p">,</span> <span class="n">system_memory_pool</span><span class="p">,</span>
<span class="n">jemalloc_memory_pool</span><span class="p">,</span> <span class="n">mimalloc_memory_pool</span><span class="p">,</span>
<span class="n">logging_memory_pool</span><span class="p">,</span> <span class="n">proxy_memory_pool</span><span class="p">,</span>
<span class="n">log_memory_allocations</span><span class="p">,</span> <span class="n">jemalloc_set_decay_ms</span><span class="p">,</span>
<span class="n">supported_memory_backends</span><span class="p">)</span>
<span class="c1"># I/O</span>
<span class="kn">from</span> <span class="nn">pyarrow.lib</span> <span class="kn">import</span> <span class="p">(</span><span class="n">NativeFile</span><span class="p">,</span> <span class="n">PythonFile</span><span class="p">,</span>
<span class="n">BufferedInputStream</span><span class="p">,</span> <span class="n">BufferedOutputStream</span><span class="p">,</span> <span class="n">CacheOptions</span><span class="p">,</span>
<span class="n">CompressedInputStream</span><span class="p">,</span> <span class="n">CompressedOutputStream</span><span class="p">,</span>
<span class="n">TransformInputStream</span><span class="p">,</span> <span class="n">transcoding_input_stream</span><span class="p">,</span>
<span class="n">FixedSizeBufferWriter</span><span class="p">,</span>
<span class="n">BufferReader</span><span class="p">,</span> <span class="n">BufferOutputStream</span><span class="p">,</span>
<span class="n">OSFile</span><span class="p">,</span> <span class="n">MemoryMappedFile</span><span class="p">,</span> <span class="n">memory_map</span><span class="p">,</span>
<span class="n">create_memory_map</span><span class="p">,</span> <span class="n">MockOutputStream</span><span class="p">,</span>
<span class="n">input_stream</span><span class="p">,</span> <span class="n">output_stream</span><span class="p">,</span>
<span class="n">have_libhdfs</span><span class="p">)</span>
<span class="kn">from</span> <span class="nn">pyarrow.lib</span> <span class="kn">import</span> <span class="p">(</span><span class="n">ChunkedArray</span><span class="p">,</span> <span class="n">RecordBatch</span><span class="p">,</span> <span class="n">Table</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span>
<span class="n">concat_arrays</span><span class="p">,</span> <span class="n">concat_tables</span><span class="p">,</span> <span class="n">TableGroupBy</span><span class="p">,</span>
<span class="n">RecordBatchReader</span><span class="p">)</span>
<span class="c1"># Exceptions</span>
<span class="kn">from</span> <span class="nn">pyarrow.lib</span> <span class="kn">import</span> <span class="p">(</span><span class="n">ArrowCancelled</span><span class="p">,</span>
<span class="n">ArrowCapacityError</span><span class="p">,</span>
<span class="n">ArrowException</span><span class="p">,</span>
<span class="n">ArrowKeyError</span><span class="p">,</span>
<span class="n">ArrowIndexError</span><span class="p">,</span>
<span class="n">ArrowInvalid</span><span class="p">,</span>
<span class="n">ArrowIOError</span><span class="p">,</span>
<span class="n">ArrowMemoryError</span><span class="p">,</span>
<span class="n">ArrowNotImplementedError</span><span class="p">,</span>
<span class="n">ArrowTypeError</span><span class="p">,</span>
<span class="n">ArrowSerializationError</span><span class="p">)</span>
<span class="kn">from</span> <span class="nn">pyarrow.ipc</span> <span class="kn">import</span> <span class="n">serialize_pandas</span><span class="p">,</span> <span class="n">deserialize_pandas</span>
<span class="kn">import</span> <span class="nn">pyarrow.ipc</span> <span class="k">as</span> <span class="nn">ipc</span>
<span class="kn">import</span> <span class="nn">pyarrow.types</span> <span class="k">as</span> <span class="nn">types</span>
<span class="c1"># ----------------------------------------------------------------------</span>
<span class="c1"># Deprecations</span>
<span class="kn">from</span> <span class="nn">pyarrow.util</span> <span class="kn">import</span> <span class="n">_deprecate_api</span><span class="p">,</span> <span class="n">_deprecate_class</span>
<span class="c1"># TODO: Deprecate these somehow in the pyarrow namespace</span>
<span class="kn">from</span> <span class="nn">pyarrow.ipc</span> <span class="kn">import</span> <span class="p">(</span><span class="n">Message</span><span class="p">,</span> <span class="n">MessageReader</span><span class="p">,</span> <span class="n">MetadataVersion</span><span class="p">,</span>
<span class="n">RecordBatchFileReader</span><span class="p">,</span> <span class="n">RecordBatchFileWriter</span><span class="p">,</span>
<span class="n">RecordBatchStreamReader</span><span class="p">,</span> <span class="n">RecordBatchStreamWriter</span><span class="p">)</span>
<span class="c1"># ----------------------------------------------------------------------</span>
<span class="c1"># Returning absolute path to the pyarrow include directory (if bundled, e.g. in</span>
<span class="c1"># wheels)</span>
<div class="viewcode-block" id="get_include"><a class="viewcode-back" href="../python/generated/pyarrow.get_include.html#pyarrow.get_include">[docs]</a><span class="k">def</span> <span class="nf">get_include</span><span class="p">():</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return absolute path to directory containing Arrow C++ include</span>
<span class="sd"> headers. Similar to numpy.get_include</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">_os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="vm">__file__</span><span class="p">),</span> <span class="s1">&#39;include&#39;</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">_get_pkg_config_executable</span><span class="p">():</span>
<span class="k">return</span> <span class="n">_os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;PKG_CONFIG&#39;</span><span class="p">,</span> <span class="s1">&#39;pkg-config&#39;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_has_pkg_config</span><span class="p">(</span><span class="n">pkgname</span><span class="p">):</span>
<span class="kn">import</span> <span class="nn">subprocess</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">call</span><span class="p">([</span><span class="n">_get_pkg_config_executable</span><span class="p">(),</span>
<span class="s1">&#39;--exists&#39;</span><span class="p">,</span> <span class="n">pkgname</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span>
<span class="k">except</span> <span class="ne">FileNotFoundError</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_read_pkg_config_variable</span><span class="p">(</span><span class="n">pkgname</span><span class="p">,</span> <span class="n">cli_args</span><span class="p">):</span>
<span class="kn">import</span> <span class="nn">subprocess</span>
<span class="n">cmd</span> <span class="o">=</span> <span class="p">[</span><span class="n">_get_pkg_config_executable</span><span class="p">(),</span> <span class="n">pkgname</span><span class="p">]</span> <span class="o">+</span> <span class="n">cli_args</span>
<span class="n">proc</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
<span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span>
<span class="n">out</span><span class="p">,</span> <span class="n">err</span> <span class="o">=</span> <span class="n">proc</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span>
<span class="k">if</span> <span class="n">proc</span><span class="o">.</span><span class="n">returncode</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;pkg-config failed: &quot;</span> <span class="o">+</span> <span class="n">err</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">&#39;utf8&#39;</span><span class="p">))</span>
<span class="k">return</span> <span class="n">out</span><span class="o">.</span><span class="n">rstrip</span><span class="p">()</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">&#39;utf8&#39;</span><span class="p">)</span>
<div class="viewcode-block" id="get_libraries"><a class="viewcode-back" href="../python/generated/pyarrow.get_libraries.html#pyarrow.get_libraries">[docs]</a><span class="k">def</span> <span class="nf">get_libraries</span><span class="p">():</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return list of library names to include in the `libraries` argument for C</span>
<span class="sd"> or Cython extensions using pyarrow</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="p">[</span><span class="s1">&#39;arrow_python&#39;</span><span class="p">,</span> <span class="s1">&#39;arrow&#39;</span><span class="p">]</span></div>
<span class="k">def</span> <span class="nf">create_library_symlinks</span><span class="p">():</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> With Linux and macOS wheels, the bundled shared libraries have an embedded</span>
<span class="sd"> ABI version like libarrow.so.17 or libarrow.17.dylib and so linking to them</span>
<span class="sd"> with -larrow won&#39;t work unless we create symlinks at locations like</span>
<span class="sd"> site-packages/pyarrow/libarrow.so. This unfortunate workaround addresses</span>
<span class="sd"> prior problems we had with shipping two copies of the shared libraries to</span>
<span class="sd"> permit third party projects like turbodbc to build their C++ extensions</span>
<span class="sd"> against the pyarrow wheels.</span>
<span class="sd"> This function must only be invoked once and only when the shared libraries</span>
<span class="sd"> are bundled with the Python package, which should only apply to wheel-based</span>
<span class="sd"> installs. It requires write access to the site-packages/pyarrow directory</span>
<span class="sd"> and so depending on your system may need to be run with root.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">glob</span>
<span class="k">if</span> <span class="n">_sys</span><span class="o">.</span><span class="n">platform</span> <span class="o">==</span> <span class="s1">&#39;win32&#39;</span><span class="p">:</span>
<span class="k">return</span>
<span class="n">package_cwd</span> <span class="o">=</span> <span class="n">_os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="vm">__file__</span><span class="p">)</span>
<span class="k">if</span> <span class="n">_sys</span><span class="o">.</span><span class="n">platform</span> <span class="o">==</span> <span class="s1">&#39;linux&#39;</span><span class="p">:</span>
<span class="n">bundled_libs</span> <span class="o">=</span> <span class="n">glob</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="n">_os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">package_cwd</span><span class="p">,</span> <span class="s1">&#39;*.so.*&#39;</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">get_symlink_path</span><span class="p">(</span><span class="n">hard_path</span><span class="p">):</span>
<span class="k">return</span> <span class="n">hard_path</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">bundled_libs</span> <span class="o">=</span> <span class="n">glob</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="n">_os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">package_cwd</span><span class="p">,</span> <span class="s1">&#39;*.*.dylib&#39;</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">get_symlink_path</span><span class="p">(</span><span class="n">hard_path</span><span class="p">):</span>
<span class="k">return</span> <span class="s1">&#39;.&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="n">hard_path</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">)[</span><span class="mi">0</span><span class="p">],</span> <span class="s1">&#39;dylib&#39;</span><span class="p">))</span>
<span class="k">for</span> <span class="n">lib_hard_path</span> <span class="ow">in</span> <span class="n">bundled_libs</span><span class="p">:</span>
<span class="n">symlink_path</span> <span class="o">=</span> <span class="n">get_symlink_path</span><span class="p">(</span><span class="n">lib_hard_path</span><span class="p">)</span>
<span class="k">if</span> <span class="n">_os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">symlink_path</span><span class="p">):</span>
<span class="k">continue</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">_os</span><span class="o">.</span><span class="n">symlink</span><span class="p">(</span><span class="n">lib_hard_path</span><span class="p">,</span> <span class="n">symlink_path</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">PermissionError</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Tried creating symlink </span><span class="si">{}</span><span class="s2">. If you need to link to &quot;</span>
<span class="s2">&quot;bundled shared libraries, run &quot;</span>
<span class="s2">&quot;pyarrow.create_library_symlinks() as root&quot;</span><span class="p">)</span>
<div class="viewcode-block" id="get_library_dirs"><a class="viewcode-back" href="../python/generated/pyarrow.get_library_dirs.html#pyarrow.get_library_dirs">[docs]</a><span class="k">def</span> <span class="nf">get_library_dirs</span><span class="p">():</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return lists of directories likely to contain Arrow C++ libraries for</span>
<span class="sd"> linking C or Cython extensions using pyarrow</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">package_cwd</span> <span class="o">=</span> <span class="n">_os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="vm">__file__</span><span class="p">)</span>
<span class="n">library_dirs</span> <span class="o">=</span> <span class="p">[</span><span class="n">package_cwd</span><span class="p">]</span>
<span class="k">def</span> <span class="nf">append_library_dir</span><span class="p">(</span><span class="n">library_dir</span><span class="p">):</span>
<span class="k">if</span> <span class="n">library_dir</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">library_dirs</span><span class="p">:</span>
<span class="n">library_dirs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">library_dir</span><span class="p">)</span>
<span class="c1"># Search library paths via pkg-config. This is necessary if the user</span>
<span class="c1"># installed libarrow and the other shared libraries manually and they</span>
<span class="c1"># are not shipped inside the pyarrow package (see also ARROW-2976).</span>
<span class="n">pkg_config_executable</span> <span class="o">=</span> <span class="n">_os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;PKG_CONFIG&#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="s1">&#39;pkg-config&#39;</span>
<span class="k">for</span> <span class="n">pkgname</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;arrow&quot;</span><span class="p">,</span> <span class="s2">&quot;arrow_python&quot;</span><span class="p">]:</span>
<span class="k">if</span> <span class="n">_has_pkg_config</span><span class="p">(</span><span class="n">pkgname</span><span class="p">):</span>
<span class="n">library_dir</span> <span class="o">=</span> <span class="n">_read_pkg_config_variable</span><span class="p">(</span><span class="n">pkgname</span><span class="p">,</span>
<span class="p">[</span><span class="s2">&quot;--libs-only-L&quot;</span><span class="p">])</span>
<span class="c1"># pkg-config output could be empty if Arrow is installed</span>
<span class="c1"># as a system package.</span>
<span class="k">if</span> <span class="n">library_dir</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">library_dir</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;-L&quot;</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
<span class="s2">&quot;pkg-config --libs-only-L returned unexpected &quot;</span>
<span class="s2">&quot;value </span><span class="si">{!r}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">library_dir</span><span class="p">))</span>
<span class="n">append_library_dir</span><span class="p">(</span><span class="n">library_dir</span><span class="p">[</span><span class="mi">2</span><span class="p">:])</span>
<span class="k">if</span> <span class="n">_sys</span><span class="o">.</span><span class="n">platform</span> <span class="o">==</span> <span class="s1">&#39;win32&#39;</span><span class="p">:</span>
<span class="c1"># TODO(wesm): Is this necessary, or does setuptools within a conda</span>
<span class="c1"># installation add Library\lib to the linker path for MSVC?</span>
<span class="n">python_base_install</span> <span class="o">=</span> <span class="n">_os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">_sys</span><span class="o">.</span><span class="n">executable</span><span class="p">)</span>
<span class="n">library_dir</span> <span class="o">=</span> <span class="n">_os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">python_base_install</span><span class="p">,</span> <span class="s1">&#39;Library&#39;</span><span class="p">,</span> <span class="s1">&#39;lib&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">_os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">_os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">library_dir</span><span class="p">,</span> <span class="s1">&#39;arrow.lib&#39;</span><span class="p">)):</span>
<span class="n">append_library_dir</span><span class="p">(</span><span class="n">library_dir</span><span class="p">)</span>
<span class="c1"># ARROW-4074: Allow for ARROW_HOME to be set to some other directory</span>
<span class="k">if</span> <span class="n">_os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;ARROW_HOME&#39;</span><span class="p">):</span>
<span class="n">append_library_dir</span><span class="p">(</span><span class="n">_os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">&#39;ARROW_HOME&#39;</span><span class="p">],</span> <span class="s1">&#39;lib&#39;</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># Python wheels bundle the Arrow libraries in the pyarrow directory.</span>
<span class="n">append_library_dir</span><span class="p">(</span><span class="n">_os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">_os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="vm">__file__</span><span class="p">)))</span>
<span class="k">return</span> <span class="n">library_dirs</span></div>
</pre></div>
</article>
<footer class="prev-next-footer">
<div class="prev-next-area">
</div>
</footer>
</div>
<div class="bd-sidebar-secondary bd-toc"></div>
</div>
<footer class="bd-footer-content">
</footer>
</main>
</div>
</div>
<!-- Scripts loaded after <body> so the DOM is not blocked -->
<script src="../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
<script src="../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
<footer class="bd-footer">
<div class="bd-footer__inner bd-page-width">
<div class="footer-items__start">
<div class="footer-item">
<p class="copyright">
© Copyright 2016-2024 Apache Software Foundation.
Apache Arrow, Arrow, Apache, the Apache feather logo, and the Apache Arrow project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.
<br/>
</p>
</div>
<div class="footer-item">
<p class="sphinx-version">
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 6.2.0.
<br/>
</p>
</div>
</div>
<div class="footer-items__end">
<div class="footer-item">
<p class="theme-version">
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
</p></div>
</div>
</div>
</footer>
</body>
</html>