blob: e2ec0470e528264a4418eddaf8bc292436b530cb [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.compute &#8212; Apache Arrow v17.0.0.dev87</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/compute';</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/compute.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.dev87 - Home"/>
<script>document.write(`<img src="../../_static/arrow-dark.png" class="logo__image only-dark" alt="Apache Arrow v17.0.0.dev87 - 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"><a href="../pyarrow.html" class="nav-link">pyarrow</a></li>
<li class="breadcrumb-item active" aria-current="page">pyarrow.compute</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="searchbox"></div>
<article class="bd-article">
<h1>Source code for pyarrow.compute</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="kn">from</span> <span class="nn">pyarrow._compute</span> <span class="kn">import</span> <span class="p">(</span> <span class="c1"># noqa</span>
<span class="n">Function</span><span class="p">,</span>
<span class="n">FunctionOptions</span><span class="p">,</span>
<span class="n">FunctionRegistry</span><span class="p">,</span>
<span class="n">HashAggregateFunction</span><span class="p">,</span>
<span class="n">HashAggregateKernel</span><span class="p">,</span>
<span class="n">Kernel</span><span class="p">,</span>
<span class="n">ScalarAggregateFunction</span><span class="p">,</span>
<span class="n">ScalarAggregateKernel</span><span class="p">,</span>
<span class="n">ScalarFunction</span><span class="p">,</span>
<span class="n">ScalarKernel</span><span class="p">,</span>
<span class="n">VectorFunction</span><span class="p">,</span>
<span class="n">VectorKernel</span><span class="p">,</span>
<span class="c1"># Option classes</span>
<span class="n">ArraySortOptions</span><span class="p">,</span>
<span class="n">AssumeTimezoneOptions</span><span class="p">,</span>
<span class="n">CastOptions</span><span class="p">,</span>
<span class="n">CountOptions</span><span class="p">,</span>
<span class="n">CumulativeOptions</span><span class="p">,</span>
<span class="n">CumulativeSumOptions</span><span class="p">,</span>
<span class="n">DayOfWeekOptions</span><span class="p">,</span>
<span class="n">DictionaryEncodeOptions</span><span class="p">,</span>
<span class="n">RunEndEncodeOptions</span><span class="p">,</span>
<span class="n">ElementWiseAggregateOptions</span><span class="p">,</span>
<span class="n">ExtractRegexOptions</span><span class="p">,</span>
<span class="n">FilterOptions</span><span class="p">,</span>
<span class="n">IndexOptions</span><span class="p">,</span>
<span class="n">JoinOptions</span><span class="p">,</span>
<span class="n">ListSliceOptions</span><span class="p">,</span>
<span class="n">ListFlattenOptions</span><span class="p">,</span>
<span class="n">MakeStructOptions</span><span class="p">,</span>
<span class="n">MapLookupOptions</span><span class="p">,</span>
<span class="n">MatchSubstringOptions</span><span class="p">,</span>
<span class="n">ModeOptions</span><span class="p">,</span>
<span class="n">NullOptions</span><span class="p">,</span>
<span class="n">PadOptions</span><span class="p">,</span>
<span class="n">PairwiseOptions</span><span class="p">,</span>
<span class="n">PartitionNthOptions</span><span class="p">,</span>
<span class="n">QuantileOptions</span><span class="p">,</span>
<span class="n">RandomOptions</span><span class="p">,</span>
<span class="n">RankOptions</span><span class="p">,</span>
<span class="n">ReplaceSliceOptions</span><span class="p">,</span>
<span class="n">ReplaceSubstringOptions</span><span class="p">,</span>
<span class="n">RoundBinaryOptions</span><span class="p">,</span>
<span class="n">RoundOptions</span><span class="p">,</span>
<span class="n">RoundTemporalOptions</span><span class="p">,</span>
<span class="n">RoundToMultipleOptions</span><span class="p">,</span>
<span class="n">ScalarAggregateOptions</span><span class="p">,</span>
<span class="n">SelectKOptions</span><span class="p">,</span>
<span class="n">SetLookupOptions</span><span class="p">,</span>
<span class="n">SliceOptions</span><span class="p">,</span>
<span class="n">SortOptions</span><span class="p">,</span>
<span class="n">SplitOptions</span><span class="p">,</span>
<span class="n">SplitPatternOptions</span><span class="p">,</span>
<span class="n">StrftimeOptions</span><span class="p">,</span>
<span class="n">StrptimeOptions</span><span class="p">,</span>
<span class="n">StructFieldOptions</span><span class="p">,</span>
<span class="n">TakeOptions</span><span class="p">,</span>
<span class="n">TDigestOptions</span><span class="p">,</span>
<span class="n">TrimOptions</span><span class="p">,</span>
<span class="n">Utf8NormalizeOptions</span><span class="p">,</span>
<span class="n">VarianceOptions</span><span class="p">,</span>
<span class="n">WeekOptions</span><span class="p">,</span>
<span class="c1"># Functions</span>
<span class="n">call_function</span><span class="p">,</span>
<span class="n">function_registry</span><span class="p">,</span>
<span class="n">get_function</span><span class="p">,</span>
<span class="n">list_functions</span><span class="p">,</span>
<span class="c1"># Udf</span>
<span class="n">call_tabular_function</span><span class="p">,</span>
<span class="n">register_scalar_function</span><span class="p">,</span>
<span class="n">register_tabular_function</span><span class="p">,</span>
<span class="n">register_aggregate_function</span><span class="p">,</span>
<span class="n">register_vector_function</span><span class="p">,</span>
<span class="n">UdfContext</span><span class="p">,</span>
<span class="c1"># Expressions</span>
<span class="n">Expression</span><span class="p">,</span>
<span class="p">)</span>
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">namedtuple</span>
<span class="kn">import</span> <span class="nn">inspect</span>
<span class="kn">from</span> <span class="nn">textwrap</span> <span class="kn">import</span> <span class="n">dedent</span>
<span class="kn">import</span> <span class="nn">warnings</span>
<span class="kn">import</span> <span class="nn">pyarrow</span> <span class="k">as</span> <span class="nn">pa</span>
<span class="kn">from</span> <span class="nn">pyarrow</span> <span class="kn">import</span> <span class="n">_compute_docstrings</span>
<span class="kn">from</span> <span class="nn">pyarrow.vendored</span> <span class="kn">import</span> <span class="n">docscrape</span>
<span class="k">def</span> <span class="nf">_get_arg_names</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
<span class="k">return</span> <span class="n">func</span><span class="o">.</span><span class="n">_doc</span><span class="o">.</span><span class="n">arg_names</span>
<span class="n">_OptionsClassDoc</span> <span class="o">=</span> <span class="n">namedtuple</span><span class="p">(</span><span class="s1">&#39;_OptionsClassDoc&#39;</span><span class="p">,</span> <span class="p">(</span><span class="s1">&#39;params&#39;</span><span class="p">,))</span>
<span class="k">def</span> <span class="nf">_scrape_options_class_doc</span><span class="p">(</span><span class="n">options_class</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">options_class</span><span class="o">.</span><span class="vm">__doc__</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="n">doc</span> <span class="o">=</span> <span class="n">docscrape</span><span class="o">.</span><span class="n">NumpyDocString</span><span class="p">(</span><span class="n">options_class</span><span class="o">.</span><span class="vm">__doc__</span><span class="p">)</span>
<span class="k">return</span> <span class="n">_OptionsClassDoc</span><span class="p">(</span><span class="n">doc</span><span class="p">[</span><span class="s1">&#39;Parameters&#39;</span><span class="p">])</span>
<span class="k">def</span> <span class="nf">_decorate_compute_function</span><span class="p">(</span><span class="n">wrapper</span><span class="p">,</span> <span class="n">exposed_name</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">options_class</span><span class="p">):</span>
<span class="c1"># Decorate the given compute function wrapper with useful metadata</span>
<span class="c1"># and documentation.</span>
<span class="n">cpp_doc</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="n">_doc</span>
<span class="n">wrapper</span><span class="o">.</span><span class="n">__arrow_compute_function__</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
<span class="n">name</span><span class="o">=</span><span class="n">func</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
<span class="n">arity</span><span class="o">=</span><span class="n">func</span><span class="o">.</span><span class="n">arity</span><span class="p">,</span>
<span class="n">options_class</span><span class="o">=</span><span class="n">cpp_doc</span><span class="o">.</span><span class="n">options_class</span><span class="p">,</span>
<span class="n">options_required</span><span class="o">=</span><span class="n">cpp_doc</span><span class="o">.</span><span class="n">options_required</span><span class="p">)</span>
<span class="n">wrapper</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">=</span> <span class="n">exposed_name</span>
<span class="n">wrapper</span><span class="o">.</span><span class="vm">__qualname__</span> <span class="o">=</span> <span class="n">exposed_name</span>
<span class="n">doc_pieces</span> <span class="o">=</span> <span class="p">[]</span>
<span class="c1"># 1. One-line summary</span>
<span class="n">summary</span> <span class="o">=</span> <span class="n">cpp_doc</span><span class="o">.</span><span class="n">summary</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">summary</span><span class="p">:</span>
<span class="n">arg_str</span> <span class="o">=</span> <span class="s2">&quot;arguments&quot;</span> <span class="k">if</span> <span class="n">func</span><span class="o">.</span><span class="n">arity</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="k">else</span> <span class="s2">&quot;argument&quot;</span>
<span class="n">summary</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;Call compute function </span><span class="si">{!r}</span><span class="s2"> with the given </span><span class="si">{}</span><span class="s2">&quot;</span>
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">func</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">arg_str</span><span class="p">))</span>
<span class="n">doc_pieces</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">summary</span><span class="si">}</span><span class="s2">.</span><span class="se">\n\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="c1"># 2. Multi-line description</span>
<span class="n">description</span> <span class="o">=</span> <span class="n">cpp_doc</span><span class="o">.</span><span class="n">description</span>
<span class="k">if</span> <span class="n">description</span><span class="p">:</span>
<span class="n">doc_pieces</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">description</span><span class="si">}</span><span class="se">\n\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="n">doc_addition</span> <span class="o">=</span> <span class="n">_compute_docstrings</span><span class="o">.</span><span class="n">function_doc_additions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">func</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="c1"># 3. Parameter description</span>
<span class="n">doc_pieces</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dedent</span><span class="p">(</span><span class="s2">&quot;&quot;&quot;</span><span class="se">\</span>
<span class="s2"> Parameters</span>
<span class="s2"> ----------</span>
<span class="s2"> &quot;&quot;&quot;</span><span class="p">))</span>
<span class="c1"># 3a. Compute function parameters</span>
<span class="n">arg_names</span> <span class="o">=</span> <span class="n">_get_arg_names</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
<span class="k">for</span> <span class="n">arg_name</span> <span class="ow">in</span> <span class="n">arg_names</span><span class="p">:</span>
<span class="k">if</span> <span class="n">func</span><span class="o">.</span><span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;vector&#39;</span><span class="p">,</span> <span class="s1">&#39;scalar_aggregate&#39;</span><span class="p">):</span>
<span class="n">arg_type</span> <span class="o">=</span> <span class="s1">&#39;Array-like&#39;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">arg_type</span> <span class="o">=</span> <span class="s1">&#39;Array-like or scalar-like&#39;</span>
<span class="n">doc_pieces</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">arg_name</span><span class="si">}</span><span class="s2"> : </span><span class="si">{</span><span class="n">arg_type</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="n">doc_pieces</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot; Argument to compute function.</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="c1"># 3b. Compute function option values</span>
<span class="k">if</span> <span class="n">options_class</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">options_class_doc</span> <span class="o">=</span> <span class="n">_scrape_options_class_doc</span><span class="p">(</span><span class="n">options_class</span><span class="p">)</span>
<span class="k">if</span> <span class="n">options_class_doc</span><span class="p">:</span>
<span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">options_class_doc</span><span class="o">.</span><span class="n">params</span><span class="p">:</span>
<span class="n">doc_pieces</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">p</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> : </span><span class="si">{</span><span class="n">p</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">p</span><span class="o">.</span><span class="n">desc</span><span class="p">:</span>
<span class="n">doc_pieces</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">s</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Options class </span><span class="si">{</span><span class="n">options_class</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2"> &quot;</span>
<span class="sa">f</span><span class="s2">&quot;does not have a docstring&quot;</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
<span class="n">options_sig</span> <span class="o">=</span> <span class="n">inspect</span><span class="o">.</span><span class="n">signature</span><span class="p">(</span><span class="n">options_class</span><span class="p">)</span>
<span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">options_sig</span><span class="o">.</span><span class="n">parameters</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
<span class="n">doc_pieces</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dedent</span><span class="p">(</span><span class="s2">&quot;&quot;&quot;</span><span class="se">\</span>
<span class="s2"> </span><span class="si">{0}</span><span class="s2"> : optional</span>
<span class="s2"> Parameter for </span><span class="si">{1}</span><span class="s2"> constructor. Either `options`</span>
<span class="s2"> or `</span><span class="si">{0}</span><span class="s2">` can be passed, but not both at the same time.</span>
<span class="s2"> &quot;&quot;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">options_class</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)))</span>
<span class="n">doc_pieces</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dedent</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;&quot;&quot;</span><span class="se">\</span>
<span class="s2"> options : pyarrow.compute.</span><span class="si">{</span><span class="n">options_class</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">, optional</span>
<span class="s2"> Alternative way of passing options.</span>
<span class="s2"> &quot;&quot;&quot;</span><span class="p">))</span>
<span class="n">doc_pieces</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dedent</span><span class="p">(</span><span class="s2">&quot;&quot;&quot;</span><span class="se">\</span>
<span class="s2"> memory_pool : pyarrow.MemoryPool, optional</span>
<span class="s2"> If not passed, will allocate memory from the default memory pool.</span>
<span class="s2"> &quot;&quot;&quot;</span><span class="p">))</span>
<span class="c1"># 4. Custom addition (e.g. examples)</span>
<span class="k">if</span> <span class="n">doc_addition</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">doc_pieces</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="si">{}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">dedent</span><span class="p">(</span><span class="n">doc_addition</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)))</span>
<span class="n">wrapper</span><span class="o">.</span><span class="vm">__doc__</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">doc_pieces</span><span class="p">)</span>
<span class="k">return</span> <span class="n">wrapper</span>
<span class="k">def</span> <span class="nf">_get_options_class</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
<span class="n">class_name</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="n">_doc</span><span class="o">.</span><span class="n">options_class</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">class_name</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">globals</span><span class="p">()[</span><span class="n">class_name</span><span class="p">]</span>
<span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
<span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">&quot;Python binding for </span><span class="si">{}</span><span class="s2"> not exposed&quot;</span>
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">class_name</span><span class="p">),</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">_handle_options</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">options_class</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">):</span>
<span class="k">if</span> <span class="n">args</span> <span class="ow">or</span> <span class="n">kwargs</span><span class="p">:</span>
<span class="k">if</span> <span class="n">options</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span>
<span class="s2">&quot;Function </span><span class="si">{!r}</span><span class="s2"> called with both an &#39;options&#39; argument &quot;</span>
<span class="s2">&quot;and additional arguments&quot;</span>
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
<span class="k">return</span> <span class="n">options_class</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="k">if</span> <span class="n">options</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">options</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
<span class="k">return</span> <span class="n">options_class</span><span class="p">(</span><span class="o">**</span><span class="n">options</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">options</span><span class="p">,</span> <span class="n">options_class</span><span class="p">):</span>
<span class="k">return</span> <span class="n">options</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span>
<span class="s2">&quot;Function </span><span class="si">{!r}</span><span class="s2"> expected a </span><span class="si">{}</span><span class="s2"> parameter, got </span><span class="si">{}</span><span class="s2">&quot;</span>
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">options_class</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">options</span><span class="p">)))</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">_make_generic_wrapper</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">options_class</span><span class="p">,</span> <span class="n">arity</span><span class="p">):</span>
<span class="k">if</span> <span class="n">options_class</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">def</span> <span class="nf">wrapper</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">memory_pool</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">arity</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">Ellipsis</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">!=</span> <span class="n">arity</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">func_name</span><span class="si">}</span><span class="s2"> takes </span><span class="si">{</span><span class="n">arity</span><span class="si">}</span><span class="s2"> positional argument(s), &quot;</span>
<span class="sa">f</span><span class="s2">&quot;but </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="s2"> were given&quot;</span>
<span class="p">)</span>
<span class="k">if</span> <span class="n">args</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">Expression</span><span class="p">):</span>
<span class="k">return</span> <span class="n">Expression</span><span class="o">.</span><span class="n">_call</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">args</span><span class="p">))</span>
<span class="k">return</span> <span class="n">func</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">memory_pool</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">def</span> <span class="nf">wrapper</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">memory_pool</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="k">if</span> <span class="n">arity</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">Ellipsis</span><span class="p">:</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">arity</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">func_name</span><span class="si">}</span><span class="s2"> takes </span><span class="si">{</span><span class="n">arity</span><span class="si">}</span><span class="s2"> positional argument(s), &quot;</span>
<span class="sa">f</span><span class="s2">&quot;but </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="s2"> were given&quot;</span>
<span class="p">)</span>
<span class="n">option_args</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="n">arity</span><span class="p">:]</span>
<span class="n">args</span> <span class="o">=</span> <span class="n">args</span><span class="p">[:</span><span class="n">arity</span><span class="p">]</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">option_args</span> <span class="o">=</span> <span class="p">()</span>
<span class="n">options</span> <span class="o">=</span> <span class="n">_handle_options</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">options_class</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span>
<span class="n">option_args</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">)</span>
<span class="k">if</span> <span class="n">args</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">Expression</span><span class="p">):</span>
<span class="k">return</span> <span class="n">Expression</span><span class="o">.</span><span class="n">_call</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="n">options</span><span class="p">)</span>
<span class="k">return</span> <span class="n">func</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span> <span class="n">memory_pool</span><span class="p">)</span>
<span class="k">return</span> <span class="n">wrapper</span>
<span class="k">def</span> <span class="nf">_make_signature</span><span class="p">(</span><span class="n">arg_names</span><span class="p">,</span> <span class="n">var_arg_names</span><span class="p">,</span> <span class="n">options_class</span><span class="p">):</span>
<span class="kn">from</span> <span class="nn">inspect</span> <span class="kn">import</span> <span class="n">Parameter</span>
<span class="n">params</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">arg_names</span><span class="p">:</span>
<span class="n">params</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Parameter</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">Parameter</span><span class="o">.</span><span class="n">POSITIONAL_ONLY</span><span class="p">))</span>
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">var_arg_names</span><span class="p">:</span>
<span class="n">params</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Parameter</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">Parameter</span><span class="o">.</span><span class="n">VAR_POSITIONAL</span><span class="p">))</span>
<span class="k">if</span> <span class="n">options_class</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">options_sig</span> <span class="o">=</span> <span class="n">inspect</span><span class="o">.</span><span class="n">signature</span><span class="p">(</span><span class="n">options_class</span><span class="p">)</span>
<span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">options_sig</span><span class="o">.</span><span class="n">parameters</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
<span class="k">assert</span> <span class="n">p</span><span class="o">.</span><span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="n">Parameter</span><span class="o">.</span><span class="n">POSITIONAL_OR_KEYWORD</span><span class="p">,</span>
<span class="n">Parameter</span><span class="o">.</span><span class="n">KEYWORD_ONLY</span><span class="p">)</span>
<span class="k">if</span> <span class="n">var_arg_names</span><span class="p">:</span>
<span class="c1"># Cannot have a positional argument after a *args</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">Parameter</span><span class="o">.</span><span class="n">KEYWORD_ONLY</span><span class="p">)</span>
<span class="n">params</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
<span class="n">params</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Parameter</span><span class="p">(</span><span class="s2">&quot;options&quot;</span><span class="p">,</span> <span class="n">Parameter</span><span class="o">.</span><span class="n">KEYWORD_ONLY</span><span class="p">,</span>
<span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">))</span>
<span class="n">params</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Parameter</span><span class="p">(</span><span class="s2">&quot;memory_pool&quot;</span><span class="p">,</span> <span class="n">Parameter</span><span class="o">.</span><span class="n">KEYWORD_ONLY</span><span class="p">,</span>
<span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">))</span>
<span class="k">return</span> <span class="n">inspect</span><span class="o">.</span><span class="n">Signature</span><span class="p">(</span><span class="n">params</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_wrap_function</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="n">options_class</span> <span class="o">=</span> <span class="n">_get_options_class</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
<span class="n">arg_names</span> <span class="o">=</span> <span class="n">_get_arg_names</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
<span class="n">has_vararg</span> <span class="o">=</span> <span class="n">arg_names</span> <span class="ow">and</span> <span class="n">arg_names</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">&#39;*&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">has_vararg</span><span class="p">:</span>
<span class="n">var_arg_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">arg_names</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s1">&#39;*&#39;</span><span class="p">)]</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">var_arg_names</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">wrapper</span> <span class="o">=</span> <span class="n">_make_generic_wrapper</span><span class="p">(</span>
<span class="n">name</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">options_class</span><span class="p">,</span> <span class="n">arity</span><span class="o">=</span><span class="n">func</span><span class="o">.</span><span class="n">arity</span><span class="p">)</span>
<span class="n">wrapper</span><span class="o">.</span><span class="n">__signature__</span> <span class="o">=</span> <span class="n">_make_signature</span><span class="p">(</span><span class="n">arg_names</span><span class="p">,</span> <span class="n">var_arg_names</span><span class="p">,</span>
<span class="n">options_class</span><span class="p">)</span>
<span class="k">return</span> <span class="n">_decorate_compute_function</span><span class="p">(</span><span class="n">wrapper</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">options_class</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_make_global_functions</span><span class="p">():</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Make global functions wrapping each compute function.</span>
<span class="sd"> Note that some of the automatically-generated wrappers may be overridden</span>
<span class="sd"> by custom versions below.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">g</span> <span class="o">=</span> <span class="nb">globals</span><span class="p">()</span>
<span class="n">reg</span> <span class="o">=</span> <span class="n">function_registry</span><span class="p">()</span>
<span class="c1"># Avoid clashes with Python keywords</span>
<span class="n">rewrites</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;and&#39;</span><span class="p">:</span> <span class="s1">&#39;and_&#39;</span><span class="p">,</span>
<span class="s1">&#39;or&#39;</span><span class="p">:</span> <span class="s1">&#39;or_&#39;</span><span class="p">}</span>
<span class="k">for</span> <span class="n">cpp_name</span> <span class="ow">in</span> <span class="n">reg</span><span class="o">.</span><span class="n">list_functions</span><span class="p">():</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">rewrites</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">cpp_name</span><span class="p">,</span> <span class="n">cpp_name</span><span class="p">)</span>
<span class="n">func</span> <span class="o">=</span> <span class="n">reg</span><span class="o">.</span><span class="n">get_function</span><span class="p">(</span><span class="n">cpp_name</span><span class="p">)</span>
<span class="k">if</span> <span class="n">func</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">&quot;hash_aggregate&quot;</span><span class="p">:</span>
<span class="c1"># Hash aggregate functions are not callable,</span>
<span class="c1"># so let&#39;s not expose them at module level.</span>
<span class="k">continue</span>
<span class="k">if</span> <span class="n">func</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">&quot;scalar_aggregate&quot;</span> <span class="ow">and</span> <span class="n">func</span><span class="o">.</span><span class="n">arity</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="c1"># Nullary scalar aggregate functions are not callable</span>
<span class="c1"># directly so let&#39;s not expose them at module level.</span>
<span class="k">continue</span>
<span class="k">assert</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">g</span><span class="p">,</span> <span class="n">name</span>
<span class="n">g</span><span class="p">[</span><span class="n">cpp_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">g</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">_wrap_function</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">func</span><span class="p">)</span>
<span class="n">_make_global_functions</span><span class="p">()</span>
<div class="viewcode-block" id="cast"><a class="viewcode-back" href="../../python/generated/pyarrow.compute.cast.html#pyarrow.dataset.cast">[docs]</a><span class="k">def</span> <span class="nf">cast</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">target_type</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">safe</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">memory_pool</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Cast array values to another data type. Can also be invoked as an array</span>
<span class="sd"> instance method.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> arr : Array-like</span>
<span class="sd"> target_type : DataType or str</span>
<span class="sd"> Type to cast to</span>
<span class="sd"> safe : bool, default True</span>
<span class="sd"> Check for overflows or other unsafe conversions</span>
<span class="sd"> options : CastOptions, default None</span>
<span class="sd"> Additional checks pass by CastOptions</span>
<span class="sd"> memory_pool : MemoryPool, optional</span>
<span class="sd"> memory pool to use for allocations during function execution.</span>
<span class="sd"> Examples</span>
<span class="sd"> --------</span>
<span class="sd"> &gt;&gt;&gt; from datetime import datetime</span>
<span class="sd"> &gt;&gt;&gt; import pyarrow as pa</span>
<span class="sd"> &gt;&gt;&gt; arr = pa.array([datetime(2010, 1, 1), datetime(2015, 1, 1)])</span>
<span class="sd"> &gt;&gt;&gt; arr.type</span>
<span class="sd"> TimestampType(timestamp[us])</span>
<span class="sd"> You can use ``pyarrow.DataType`` objects to specify the target type:</span>
<span class="sd"> &gt;&gt;&gt; cast(arr, pa.timestamp(&#39;ms&#39;))</span>
<span class="sd"> &lt;pyarrow.lib.TimestampArray object at ...&gt;</span>
<span class="sd"> [</span>
<span class="sd"> 2010-01-01 00:00:00.000,</span>
<span class="sd"> 2015-01-01 00:00:00.000</span>
<span class="sd"> ]</span>
<span class="sd"> &gt;&gt;&gt; cast(arr, pa.timestamp(&#39;ms&#39;)).type</span>
<span class="sd"> TimestampType(timestamp[ms])</span>
<span class="sd"> Alternatively, it is also supported to use the string aliases for these</span>
<span class="sd"> types:</span>
<span class="sd"> &gt;&gt;&gt; arr.cast(&#39;timestamp[ms]&#39;)</span>
<span class="sd"> &lt;pyarrow.lib.TimestampArray object at ...&gt;</span>
<span class="sd"> [</span>
<span class="sd"> 2010-01-01 00:00:00.000,</span>
<span class="sd"> 2015-01-01 00:00:00.000</span>
<span class="sd"> ]</span>
<span class="sd"> &gt;&gt;&gt; arr.cast(&#39;timestamp[ms]&#39;).type</span>
<span class="sd"> TimestampType(timestamp[ms])</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> casted : Array</span>
<span class="sd"> The cast result as a new Array</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">safe_vars_passed</span> <span class="o">=</span> <span class="p">(</span><span class="n">safe</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">target_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span>
<span class="k">if</span> <span class="n">safe_vars_passed</span> <span class="ow">and</span> <span class="p">(</span><span class="n">options</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Must either pass values for &#39;target_type&#39; and &#39;safe&#39;&quot;</span>
<span class="s2">&quot; or pass a value for &#39;options&#39;&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">options</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">target_type</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">types</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">ensure_type</span><span class="p">(</span><span class="n">target_type</span><span class="p">)</span>
<span class="k">if</span> <span class="n">safe</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
<span class="n">options</span> <span class="o">=</span> <span class="n">CastOptions</span><span class="o">.</span><span class="n">unsafe</span><span class="p">(</span><span class="n">target_type</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">options</span> <span class="o">=</span> <span class="n">CastOptions</span><span class="o">.</span><span class="n">safe</span><span class="p">(</span><span class="n">target_type</span><span class="p">)</span>
<span class="k">return</span> <span class="n">call_function</span><span class="p">(</span><span class="s2">&quot;cast&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">arr</span><span class="p">],</span> <span class="n">options</span><span class="p">,</span> <span class="n">memory_pool</span><span class="p">)</span></div>
<div class="viewcode-block" id="index"><a class="viewcode-back" href="../../python/generated/pyarrow.compute.index.html#pyarrow.dataset.index">[docs]</a><span class="k">def</span> <span class="nf">index</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">memory_pool</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Find the index of the first occurrence of a given value.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> data : Array-like</span>
<span class="sd"> value : Scalar-like object</span>
<span class="sd"> The value to search for.</span>
<span class="sd"> start : int, optional</span>
<span class="sd"> end : int, optional</span>
<span class="sd"> memory_pool : MemoryPool, optional</span>
<span class="sd"> If not passed, will allocate memory from the default memory pool.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> index : int</span>
<span class="sd"> the index, or -1 if not found</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">start</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">if</span> <span class="n">end</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">slice</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span> <span class="o">-</span> <span class="n">start</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">slice</span><span class="p">(</span><span class="n">start</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">end</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">slice</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">end</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">Scalar</span><span class="p">):</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">scalar</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">data</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">data</span><span class="o">.</span><span class="n">type</span> <span class="o">!=</span> <span class="n">value</span><span class="o">.</span><span class="n">type</span><span class="p">:</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">scalar</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">as_py</span><span class="p">(),</span> <span class="nb">type</span><span class="o">=</span><span class="n">data</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
<span class="n">options</span> <span class="o">=</span> <span class="n">IndexOptions</span><span class="p">(</span><span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">call_function</span><span class="p">(</span><span class="s1">&#39;index&#39;</span><span class="p">,</span> <span class="p">[</span><span class="n">data</span><span class="p">],</span> <span class="n">options</span><span class="p">,</span> <span class="n">memory_pool</span><span class="p">)</span>
<span class="k">if</span> <span class="n">start</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">result</span><span class="o">.</span><span class="n">as_py</span><span class="p">()</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">scalar</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">as_py</span><span class="p">()</span> <span class="o">+</span> <span class="n">start</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">pa</span><span class="o">.</span><span class="n">int64</span><span class="p">())</span>
<span class="k">return</span> <span class="n">result</span></div>
<div class="viewcode-block" id="take"><a class="viewcode-back" href="../../python/generated/pyarrow.compute.take.html#pyarrow.dataset.take">[docs]</a><span class="k">def</span> <span class="nf">take</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">indices</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">boundscheck</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">memory_pool</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Select values (or records) from array- or table-like data given integer</span>
<span class="sd"> selection indices.</span>
<span class="sd"> The result will be of the same type(s) as the input, with elements taken</span>
<span class="sd"> from the input array (or record batch / table fields) at the given</span>
<span class="sd"> indices. If an index is null then the corresponding value in the output</span>
<span class="sd"> will be null.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> data : Array, ChunkedArray, RecordBatch, or Table</span>
<span class="sd"> indices : Array, ChunkedArray</span>
<span class="sd"> Must be of integer type</span>
<span class="sd"> boundscheck : boolean, default True</span>
<span class="sd"> Whether to boundscheck the indices. If False and there is an out of</span>
<span class="sd"> bounds index, will likely cause the process to crash.</span>
<span class="sd"> memory_pool : MemoryPool, optional</span>
<span class="sd"> If not passed, will allocate memory from the default memory pool.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> result : depends on inputs</span>
<span class="sd"> Selected values for the given indices</span>
<span class="sd"> Examples</span>
<span class="sd"> --------</span>
<span class="sd"> &gt;&gt;&gt; import pyarrow as pa</span>
<span class="sd"> &gt;&gt;&gt; arr = pa.array([&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, None, &quot;e&quot;, &quot;f&quot;])</span>
<span class="sd"> &gt;&gt;&gt; indices = pa.array([0, None, 4, 3])</span>
<span class="sd"> &gt;&gt;&gt; arr.take(indices)</span>
<span class="sd"> &lt;pyarrow.lib.StringArray object at ...&gt;</span>
<span class="sd"> [</span>
<span class="sd"> &quot;a&quot;,</span>
<span class="sd"> null,</span>
<span class="sd"> &quot;e&quot;,</span>
<span class="sd"> null</span>
<span class="sd"> ]</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">options</span> <span class="o">=</span> <span class="n">TakeOptions</span><span class="p">(</span><span class="n">boundscheck</span><span class="o">=</span><span class="n">boundscheck</span><span class="p">)</span>
<span class="k">return</span> <span class="n">call_function</span><span class="p">(</span><span class="s1">&#39;take&#39;</span><span class="p">,</span> <span class="p">[</span><span class="n">data</span><span class="p">,</span> <span class="n">indices</span><span class="p">],</span> <span class="n">options</span><span class="p">,</span> <span class="n">memory_pool</span><span class="p">)</span></div>
<div class="viewcode-block" id="fill_null"><a class="viewcode-back" href="../../python/generated/pyarrow.compute.fill_null.html#pyarrow.dataset.fill_null">[docs]</a><span class="k">def</span> <span class="nf">fill_null</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="n">fill_value</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Replace each null element in values with a corresponding</span>
<span class="sd"> element from fill_value.</span>
<span class="sd"> If fill_value is scalar-like, then every null element in values</span>
<span class="sd"> will be replaced with fill_value. If fill_value is array-like,</span>
<span class="sd"> then the i-th element in values will be replaced with the i-th</span>
<span class="sd"> element in fill_value.</span>
<span class="sd"> The fill_value&#39;s type must be the same as that of values, or it</span>
<span class="sd"> must be able to be implicitly casted to the array&#39;s type.</span>
<span class="sd"> This is an alias for :func:`coalesce`.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> values : Array, ChunkedArray, or Scalar-like object</span>
<span class="sd"> Each null element is replaced with the corresponding value</span>
<span class="sd"> from fill_value.</span>
<span class="sd"> fill_value : Array, ChunkedArray, or Scalar-like object</span>
<span class="sd"> If not same type as values, will attempt to cast.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> result : depends on inputs</span>
<span class="sd"> Values with all null elements replaced</span>
<span class="sd"> Examples</span>
<span class="sd"> --------</span>
<span class="sd"> &gt;&gt;&gt; import pyarrow as pa</span>
<span class="sd"> &gt;&gt;&gt; arr = pa.array([1, 2, None, 3], type=pa.int8())</span>
<span class="sd"> &gt;&gt;&gt; fill_value = pa.scalar(5, type=pa.int8())</span>
<span class="sd"> &gt;&gt;&gt; arr.fill_null(fill_value)</span>
<span class="sd"> &lt;pyarrow.lib.Int8Array object at ...&gt;</span>
<span class="sd"> [</span>
<span class="sd"> 1,</span>
<span class="sd"> 2,</span>
<span class="sd"> 5,</span>
<span class="sd"> 3</span>
<span class="sd"> ]</span>
<span class="sd"> &gt;&gt;&gt; arr = pa.array([1, 2, None, 4, None])</span>
<span class="sd"> &gt;&gt;&gt; arr.fill_null(pa.array([10, 20, 30, 40, 50]))</span>
<span class="sd"> &lt;pyarrow.lib.Int64Array object at ...&gt;</span>
<span class="sd"> [</span>
<span class="sd"> 1,</span>
<span class="sd"> 2,</span>
<span class="sd"> 30,</span>
<span class="sd"> 4,</span>
<span class="sd"> 50</span>
<span class="sd"> ]</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">fill_value</span><span class="p">,</span> <span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">ChunkedArray</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">Scalar</span><span class="p">)):</span>
<span class="n">fill_value</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">scalar</span><span class="p">(</span><span class="n">fill_value</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">values</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">values</span><span class="o">.</span><span class="n">type</span> <span class="o">!=</span> <span class="n">fill_value</span><span class="o">.</span><span class="n">type</span><span class="p">:</span>
<span class="n">fill_value</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">scalar</span><span class="p">(</span><span class="n">fill_value</span><span class="o">.</span><span class="n">as_py</span><span class="p">(),</span> <span class="nb">type</span><span class="o">=</span><span class="n">values</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
<span class="k">return</span> <span class="n">call_function</span><span class="p">(</span><span class="s2">&quot;coalesce&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">values</span><span class="p">,</span> <span class="n">fill_value</span><span class="p">])</span></div>
<span class="k">def</span> <span class="nf">top_k_unstable</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">sort_keys</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">memory_pool</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Select the indices of the top-k ordered elements from array- or table-like</span>
<span class="sd"> data.</span>
<span class="sd"> This is a specialization for :func:`select_k_unstable`. Output is not</span>
<span class="sd"> guaranteed to be stable.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> values : Array, ChunkedArray, RecordBatch, or Table</span>
<span class="sd"> Data to sort and get top indices from.</span>
<span class="sd"> k : int</span>
<span class="sd"> The number of `k` elements to keep.</span>
<span class="sd"> sort_keys : List-like</span>
<span class="sd"> Column key names to order by when input is table-like data.</span>
<span class="sd"> memory_pool : MemoryPool, optional</span>
<span class="sd"> If not passed, will allocate memory from the default memory pool.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> result : Array</span>
<span class="sd"> Indices of the top-k ordered elements</span>
<span class="sd"> Examples</span>
<span class="sd"> --------</span>
<span class="sd"> &gt;&gt;&gt; import pyarrow as pa</span>
<span class="sd"> &gt;&gt;&gt; import pyarrow.compute as pc</span>
<span class="sd"> &gt;&gt;&gt; arr = pa.array([&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, None, &quot;e&quot;, &quot;f&quot;])</span>
<span class="sd"> &gt;&gt;&gt; pc.top_k_unstable(arr, k=3)</span>
<span class="sd"> &lt;pyarrow.lib.UInt64Array object at ...&gt;</span>
<span class="sd"> [</span>
<span class="sd"> 5,</span>
<span class="sd"> 4,</span>
<span class="sd"> 2</span>
<span class="sd"> ]</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">sort_keys</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">sort_keys</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">ChunkedArray</span><span class="p">)):</span>
<span class="n">sort_keys</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="s2">&quot;dummy&quot;</span><span class="p">,</span> <span class="s2">&quot;descending&quot;</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">sort_keys</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="k">lambda</span> <span class="n">key_name</span><span class="p">:</span> <span class="p">(</span><span class="n">key_name</span><span class="p">,</span> <span class="s2">&quot;descending&quot;</span><span class="p">),</span> <span class="n">sort_keys</span><span class="p">)</span>
<span class="n">options</span> <span class="o">=</span> <span class="n">SelectKOptions</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">sort_keys</span><span class="p">)</span>
<span class="k">return</span> <span class="n">call_function</span><span class="p">(</span><span class="s2">&quot;select_k_unstable&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">values</span><span class="p">],</span> <span class="n">options</span><span class="p">,</span> <span class="n">memory_pool</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">bottom_k_unstable</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">sort_keys</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">memory_pool</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Select the indices of the bottom-k ordered elements from</span>
<span class="sd"> array- or table-like data.</span>
<span class="sd"> This is a specialization for :func:`select_k_unstable`. Output is not</span>
<span class="sd"> guaranteed to be stable.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> values : Array, ChunkedArray, RecordBatch, or Table</span>
<span class="sd"> Data to sort and get bottom indices from.</span>
<span class="sd"> k : int</span>
<span class="sd"> The number of `k` elements to keep.</span>
<span class="sd"> sort_keys : List-like</span>
<span class="sd"> Column key names to order by when input is table-like data.</span>
<span class="sd"> memory_pool : MemoryPool, optional</span>
<span class="sd"> If not passed, will allocate memory from the default memory pool.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> result : Array of indices</span>
<span class="sd"> Indices of the bottom-k ordered elements</span>
<span class="sd"> Examples</span>
<span class="sd"> --------</span>
<span class="sd"> &gt;&gt;&gt; import pyarrow as pa</span>
<span class="sd"> &gt;&gt;&gt; import pyarrow.compute as pc</span>
<span class="sd"> &gt;&gt;&gt; arr = pa.array([&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, None, &quot;e&quot;, &quot;f&quot;])</span>
<span class="sd"> &gt;&gt;&gt; pc.bottom_k_unstable(arr, k=3)</span>
<span class="sd"> &lt;pyarrow.lib.UInt64Array object at ...&gt;</span>
<span class="sd"> [</span>
<span class="sd"> 0,</span>
<span class="sd"> 1,</span>
<span class="sd"> 2</span>
<span class="sd"> ]</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">sort_keys</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">sort_keys</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="p">(</span><span class="n">pa</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">ChunkedArray</span><span class="p">)):</span>
<span class="n">sort_keys</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="s2">&quot;dummy&quot;</span><span class="p">,</span> <span class="s2">&quot;ascending&quot;</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">sort_keys</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="k">lambda</span> <span class="n">key_name</span><span class="p">:</span> <span class="p">(</span><span class="n">key_name</span><span class="p">,</span> <span class="s2">&quot;ascending&quot;</span><span class="p">),</span> <span class="n">sort_keys</span><span class="p">)</span>
<span class="n">options</span> <span class="o">=</span> <span class="n">SelectKOptions</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">sort_keys</span><span class="p">)</span>
<span class="k">return</span> <span class="n">call_function</span><span class="p">(</span><span class="s2">&quot;select_k_unstable&quot;</span><span class="p">,</span> <span class="p">[</span><span class="n">values</span><span class="p">],</span> <span class="n">options</span><span class="p">,</span> <span class="n">memory_pool</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">random</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">initializer</span><span class="o">=</span><span class="s1">&#39;system&#39;</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">memory_pool</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Generate numbers in the range [0, 1).</span>
<span class="sd"> Generated values are uniformly-distributed, double-precision</span>
<span class="sd"> in range [0, 1). Algorithm and seed can be changed via RandomOptions.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> n : int</span>
<span class="sd"> Number of values to generate, must be greater than or equal to 0</span>
<span class="sd"> initializer : int or str</span>
<span class="sd"> How to initialize the underlying random generator.</span>
<span class="sd"> If an integer is given, it is used as a seed.</span>
<span class="sd"> If &quot;system&quot; is given, the random generator is initialized with</span>
<span class="sd"> a system-specific source of (hopefully true) randomness.</span>
<span class="sd"> Other values are invalid.</span>
<span class="sd"> options : pyarrow.compute.RandomOptions, optional</span>
<span class="sd"> Alternative way of passing options.</span>
<span class="sd"> memory_pool : pyarrow.MemoryPool, optional</span>
<span class="sd"> If not passed, will allocate memory from the default memory pool.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">options</span> <span class="o">=</span> <span class="n">RandomOptions</span><span class="p">(</span><span class="n">initializer</span><span class="o">=</span><span class="n">initializer</span><span class="p">)</span>
<span class="k">return</span> <span class="n">call_function</span><span class="p">(</span><span class="s2">&quot;random&quot;</span><span class="p">,</span> <span class="p">[],</span> <span class="n">options</span><span class="p">,</span> <span class="n">memory_pool</span><span class="p">,</span> <span class="n">length</span><span class="o">=</span><span class="n">n</span><span class="p">)</span>
<div class="viewcode-block" id="field"><a class="viewcode-back" href="../../python/generated/pyarrow.dataset.field.html#pyarrow.dataset.field">[docs]</a><span class="k">def</span> <span class="nf">field</span><span class="p">(</span><span class="o">*</span><span class="n">name_or_index</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Reference a column of the dataset.</span>
<span class="sd"> Stores only the field&#39;s name. Type and other information is known only when</span>
<span class="sd"> the expression is bound to a dataset having an explicit scheme.</span>
<span class="sd"> Nested references are allowed by passing multiple names or a tuple of</span>
<span class="sd"> names. For example ``(&#39;foo&#39;, &#39;bar&#39;)`` references the field named &quot;bar&quot;</span>
<span class="sd"> inside the field named &quot;foo&quot;.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> *name_or_index : string, multiple strings, tuple or int</span>
<span class="sd"> The name or index of the (possibly nested) field the expression</span>
<span class="sd"> references to.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> field_expr : Expression</span>
<span class="sd"> Reference to the given field</span>
<span class="sd"> Examples</span>
<span class="sd"> --------</span>
<span class="sd"> &gt;&gt;&gt; import pyarrow.compute as pc</span>
<span class="sd"> &gt;&gt;&gt; pc.field(&quot;a&quot;)</span>
<span class="sd"> &lt;pyarrow.compute.Expression a&gt;</span>
<span class="sd"> &gt;&gt;&gt; pc.field(1)</span>
<span class="sd"> &lt;pyarrow.compute.Expression FieldPath(1)&gt;</span>
<span class="sd"> &gt;&gt;&gt; pc.field((&quot;a&quot;, &quot;b&quot;))</span>
<span class="sd"> &lt;pyarrow.compute.Expression FieldRef.Nested(FieldRef.Name(a) ...</span>
<span class="sd"> &gt;&gt;&gt; pc.field(&quot;a&quot;, &quot;b&quot;)</span>
<span class="sd"> &lt;pyarrow.compute.Expression FieldRef.Nested(FieldRef.Name(a) ...</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">n</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">name_or_index</span><span class="p">)</span>
<span class="k">if</span> <span class="n">n</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name_or_index</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">)):</span>
<span class="k">return</span> <span class="n">Expression</span><span class="o">.</span><span class="n">_field</span><span class="p">(</span><span class="n">name_or_index</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name_or_index</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="nb">tuple</span><span class="p">):</span>
<span class="k">return</span> <span class="n">Expression</span><span class="o">.</span><span class="n">_nested_field</span><span class="p">(</span><span class="n">name_or_index</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="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span>
<span class="s2">&quot;field reference should be str, multiple str, tuple or &quot;</span>
<span class="sa">f</span><span class="s2">&quot;integer, got </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">name_or_index</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="p">)</span>
<span class="c1"># In case of multiple strings not supplied in a tuple</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">Expression</span><span class="o">.</span><span class="n">_nested_field</span><span class="p">(</span><span class="n">name_or_index</span><span class="p">)</span></div>
<div class="viewcode-block" id="scalar"><a class="viewcode-back" href="../../python/generated/pyarrow.dataset.scalar.html#pyarrow.dataset.scalar">[docs]</a><span class="k">def</span> <span class="nf">scalar</span><span class="p">(</span><span class="n">value</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Expression representing a scalar value.</span>
<span class="sd"> Parameters</span>
<span class="sd"> ----------</span>
<span class="sd"> value : bool, int, float or string</span>
<span class="sd"> Python value of the scalar. Note that only a subset of types are</span>
<span class="sd"> currently supported.</span>
<span class="sd"> Returns</span>
<span class="sd"> -------</span>
<span class="sd"> scalar_expr : Expression</span>
<span class="sd"> An Expression representing the scalar value</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">Expression</span><span class="o">.</span><span class="n">_scalar</span><span class="p">(</span><span class="n">value</span><span class="p">)</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>