Adding upstream version 26.1.3.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
09521056ff
commit
d908bee480
119 changed files with 71635 additions and 68059 deletions
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 15.0.0"/>
|
||||
<meta name="generator" content="pdoc 15.0.1"/>
|
||||
<title>sqlglot.optimizer.scope API documentation</title>
|
||||
|
||||
<style>/*! * Bootstrap Reboot v5.0.0 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}</style>
|
||||
|
@ -245,24 +245,24 @@
|
|||
|
||||
<label class="view-source-button" for="mod-scope-view-source"><span>View Source</span></label>
|
||||
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos"> 1</span></a><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos"> 1</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">__future__</span><span class="w"> </span><span class="kn">import</span> <span class="n">annotations</span>
|
||||
</span><span id="L-2"><a href="#L-2"><span class="linenos"> 2</span></a>
|
||||
</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="kn">import</span> <span class="nn">itertools</span>
|
||||
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a><span class="kn">import</span> <span class="nn">logging</span>
|
||||
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="kn">import</span> <span class="nn">typing</span> <span class="k">as</span> <span class="nn">t</span>
|
||||
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">defaultdict</span>
|
||||
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="kn">from</span> <span class="nn">enum</span> <span class="kn">import</span> <span class="n">Enum</span><span class="p">,</span> <span class="n">auto</span>
|
||||
</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="kn">import</span><span class="w"> </span><span class="nn">itertools</span>
|
||||
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a><span class="kn">import</span><span class="w"> </span><span class="nn">logging</span>
|
||||
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="kn">import</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">t</span>
|
||||
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">collections</span><span class="w"> </span><span class="kn">import</span> <span class="n">defaultdict</span>
|
||||
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">Enum</span><span class="p">,</span> <span class="n">auto</span>
|
||||
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a>
|
||||
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a><span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">exp</span>
|
||||
</span><span id="L-10"><a href="#L-10"><span class="linenos"> 10</span></a><span class="kn">from</span> <span class="nn">sqlglot.errors</span> <span class="kn">import</span> <span class="n">OptimizeError</span>
|
||||
</span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a><span class="kn">from</span> <span class="nn">sqlglot.helper</span> <span class="kn">import</span> <span class="n">ensure_collection</span><span class="p">,</span> <span class="n">find_new_name</span><span class="p">,</span> <span class="n">seq_get</span>
|
||||
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot</span><span class="w"> </span><span class="kn">import</span> <span class="n">exp</span>
|
||||
</span><span id="L-10"><a href="#L-10"><span class="linenos"> 10</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.errors</span><span class="w"> </span><span class="kn">import</span> <span class="n">OptimizeError</span>
|
||||
</span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.helper</span><span class="w"> </span><span class="kn">import</span> <span class="n">ensure_collection</span><span class="p">,</span> <span class="n">find_new_name</span><span class="p">,</span> <span class="n">seq_get</span>
|
||||
</span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a>
|
||||
</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a><span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="s2">"sqlglot"</span><span class="p">)</span>
|
||||
</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a>
|
||||
</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a><span class="n">TRAVERSABLES</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Query</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DDL</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DML</span><span class="p">)</span>
|
||||
</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a>
|
||||
</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a>
|
||||
</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a><span class="k">class</span> <span class="nc">ScopeType</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>
|
||||
</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a><span class="k">class</span><span class="w"> </span><span class="nc">ScopeType</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>
|
||||
</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a> <span class="n">ROOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>
|
||||
</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a> <span class="n">SUBQUERY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>
|
||||
</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a> <span class="n">DERIVED_TABLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>
|
||||
|
@ -271,7 +271,7 @@
|
|||
</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> <span class="n">UDTF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>
|
||||
</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a>
|
||||
</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a>
|
||||
</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a><span class="k">class</span> <span class="nc">Scope</span><span class="p">:</span>
|
||||
</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a><span class="k">class</span><span class="w"> </span><span class="nc">Scope</span><span class="p">:</span>
|
||||
</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a><span class="sd"> Selection scope.</span>
|
||||
</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a>
|
||||
|
@ -303,7 +303,7 @@
|
|||
</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a><span class="sd"> a list of the left and right child scopes.</span>
|
||||
</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a>
|
||||
</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="n">expression</span><span class="p">,</span>
|
||||
</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a> <span class="n">sources</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
|
@ -332,7 +332,7 @@
|
|||
</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">can_be_correlated</span> <span class="o">=</span> <span class="n">can_be_correlated</span>
|
||||
</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">clear_cache</span><span class="p">()</span>
|
||||
</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a>
|
||||
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="k">def</span> <span class="nf">clear_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">clear_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_collected</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_raw_columns</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_stars</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
@ -348,7 +348,7 @@
|
|||
</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_pivots</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_references</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a>
|
||||
</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a> <span class="k">def</span> <span class="nf">branch</span><span class="p">(</span>
|
||||
</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">branch</span><span class="p">(</span>
|
||||
</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">scope_type</span><span class="p">,</span> <span class="n">sources</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">cte_sources</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lateral_sources</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span>
|
||||
</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a> <span class="p">):</span>
|
||||
</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a><span class="w"> </span><span class="sd">"""Branch from the current scope to a new, inner scope"""</span>
|
||||
|
@ -364,7 +364,7 @@
|
|||
</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
||||
</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="p">)</span>
|
||||
</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a>
|
||||
</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="k">def</span> <span class="nf">_collect</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_collect</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tables</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_ctes</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_subqueries</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
@ -402,20 +402,20 @@
|
|||
</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a>
|
||||
</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_collected</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a>
|
||||
</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="k">def</span> <span class="nf">_ensure_collected</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_ensure_collected</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collected</span><span class="p">:</span>
|
||||
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_collect</span><span class="p">()</span>
|
||||
</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a>
|
||||
</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="k">return</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a>
|
||||
</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="k">return</span> <span class="n">find_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a>
|
||||
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">find_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="k">return</span> <span class="n">find_all_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a>
|
||||
</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="k">def</span> <span class="nf">replace</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">):</span>
|
||||
</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">replace</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">):</span>
|
||||
</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a><span class="sd"> Replace `old` with `new`.</span>
|
||||
</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a>
|
||||
|
@ -429,7 +429,7 @@
|
|||
</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">clear_cache</span><span class="p">()</span>
|
||||
</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a>
|
||||
</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="k">def</span> <span class="nf">tables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">tables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a><span class="sd"> List of tables in this scope.</span>
|
||||
</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a>
|
||||
|
@ -440,7 +440,7 @@
|
|||
</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tables</span>
|
||||
</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a>
|
||||
</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="k">def</span> <span class="nf">ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a><span class="sd"> List of CTEs in this scope.</span>
|
||||
</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a>
|
||||
|
@ -451,7 +451,7 @@
|
|||
</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ctes</span>
|
||||
</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a>
|
||||
</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a> <span class="k">def</span> <span class="nf">derived_tables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">derived_tables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a><span class="sd"> List of derived tables in this scope.</span>
|
||||
</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a>
|
||||
|
@ -465,7 +465,7 @@
|
|||
</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_derived_tables</span>
|
||||
</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a>
|
||||
</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> <span class="k">def</span> <span class="nf">udtfs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">udtfs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-222"><a href="#L-222"><span class="linenos">222</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a><span class="sd"> List of "User Defined Tabular Functions" in this scope.</span>
|
||||
</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a>
|
||||
|
@ -476,7 +476,7 @@
|
|||
</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_udtfs</span>
|
||||
</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a>
|
||||
</span><span id="L-231"><a href="#L-231"><span class="linenos">231</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a> <span class="k">def</span> <span class="nf">subqueries</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">subqueries</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a><span class="sd"> List of subqueries in this scope.</span>
|
||||
</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a>
|
||||
|
@ -490,7 +490,7 @@
|
|||
</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_subqueries</span>
|
||||
</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a>
|
||||
</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="k">def</span> <span class="nf">stars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">]:</span>
|
||||
</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">stars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">]:</span>
|
||||
</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a><span class="sd"> List of star expressions (columns or dots) in this scope.</span>
|
||||
</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a><span class="sd"> """</span>
|
||||
|
@ -498,7 +498,7 @@
|
|||
</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stars</span>
|
||||
</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a>
|
||||
</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a> <span class="k">def</span> <span class="nf">columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a><span class="sd"> List of columns in this scope.</span>
|
||||
</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a>
|
||||
|
@ -546,7 +546,7 @@
|
|||
</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_columns</span>
|
||||
</span><span id="L-300"><a href="#L-300"><span class="linenos">300</span></a>
|
||||
</span><span id="L-301"><a href="#L-301"><span class="linenos">301</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a> <span class="k">def</span> <span class="nf">selected_sources</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">selected_sources</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-303"><a href="#L-303"><span class="linenos">303</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a><span class="sd"> Mapping of nodes and sources that are actually selected from in this scope.</span>
|
||||
</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a>
|
||||
|
@ -569,7 +569,7 @@
|
|||
</span><span id="L-322"><a href="#L-322"><span class="linenos">322</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_selected_sources</span>
|
||||
</span><span id="L-323"><a href="#L-323"><span class="linenos">323</span></a>
|
||||
</span><span id="L-324"><a href="#L-324"><span class="linenos">324</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-325"><a href="#L-325"><span class="linenos">325</span></a> <span class="k">def</span> <span class="nf">references</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span>
|
||||
</span><span id="L-325"><a href="#L-325"><span class="linenos">325</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">references</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span>
|
||||
</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_references</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="L-327"><a href="#L-327"><span class="linenos">327</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_references</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="L-328"><a href="#L-328"><span class="linenos">328</span></a>
|
||||
|
@ -586,7 +586,7 @@
|
|||
</span><span id="L-339"><a href="#L-339"><span class="linenos">339</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_references</span>
|
||||
</span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a>
|
||||
</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a> <span class="k">def</span> <span class="nf">external_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">external_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a><span class="sd"> Columns that appear to reference sources in outer scopes.</span>
|
||||
</span><span id="L-345"><a href="#L-345"><span class="linenos">345</span></a>
|
||||
|
@ -606,7 +606,7 @@
|
|||
</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_external_columns</span>
|
||||
</span><span id="L-360"><a href="#L-360"><span class="linenos">360</span></a>
|
||||
</span><span id="L-361"><a href="#L-361"><span class="linenos">361</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-362"><a href="#L-362"><span class="linenos">362</span></a> <span class="k">def</span> <span class="nf">unqualified_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-362"><a href="#L-362"><span class="linenos">362</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">unqualified_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-363"><a href="#L-363"><span class="linenos">363</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-364"><a href="#L-364"><span class="linenos">364</span></a><span class="sd"> Unqualified columns in the current scope.</span>
|
||||
</span><span id="L-365"><a href="#L-365"><span class="linenos">365</span></a>
|
||||
|
@ -616,7 +616,7 @@
|
|||
</span><span id="L-369"><a href="#L-369"><span class="linenos">369</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">c</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">table</span><span class="p">]</span>
|
||||
</span><span id="L-370"><a href="#L-370"><span class="linenos">370</span></a>
|
||||
</span><span id="L-371"><a href="#L-371"><span class="linenos">371</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-372"><a href="#L-372"><span class="linenos">372</span></a> <span class="k">def</span> <span class="nf">join_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-372"><a href="#L-372"><span class="linenos">372</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">join_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-373"><a href="#L-373"><span class="linenos">373</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-374"><a href="#L-374"><span class="linenos">374</span></a><span class="sd"> Hints that exist in the scope that reference tables</span>
|
||||
</span><span id="L-375"><a href="#L-375"><span class="linenos">375</span></a>
|
||||
|
@ -628,7 +628,7 @@
|
|||
</span><span id="L-381"><a href="#L-381"><span class="linenos">381</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_join_hints</span>
|
||||
</span><span id="L-382"><a href="#L-382"><span class="linenos">382</span></a>
|
||||
</span><span id="L-383"><a href="#L-383"><span class="linenos">383</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-384"><a href="#L-384"><span class="linenos">384</span></a> <span class="k">def</span> <span class="nf">pivots</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-384"><a href="#L-384"><span class="linenos">384</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">pivots</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-385"><a href="#L-385"><span class="linenos">385</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pivots</span><span class="p">:</span>
|
||||
</span><span id="L-386"><a href="#L-386"><span class="linenos">386</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_pivots</span> <span class="o">=</span> <span class="p">[</span>
|
||||
</span><span id="L-387"><a href="#L-387"><span class="linenos">387</span></a> <span class="n">pivot</span> <span class="k">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">node</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">references</span> <span class="k">for</span> <span class="n">pivot</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
|
@ -636,7 +636,7 @@
|
|||
</span><span id="L-389"><a href="#L-389"><span class="linenos">389</span></a>
|
||||
</span><span id="L-390"><a href="#L-390"><span class="linenos">390</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pivots</span>
|
||||
</span><span id="L-391"><a href="#L-391"><span class="linenos">391</span></a>
|
||||
</span><span id="L-392"><a href="#L-392"><span class="linenos">392</span></a> <span class="k">def</span> <span class="nf">source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_name</span><span class="p">):</span>
|
||||
</span><span id="L-392"><a href="#L-392"><span class="linenos">392</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_name</span><span class="p">):</span>
|
||||
</span><span id="L-393"><a href="#L-393"><span class="linenos">393</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-394"><a href="#L-394"><span class="linenos">394</span></a><span class="sd"> Get all columns in the current scope for a particular source.</span>
|
||||
</span><span id="L-395"><a href="#L-395"><span class="linenos">395</span></a>
|
||||
|
@ -648,59 +648,59 @@
|
|||
</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">column</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span> <span class="k">if</span> <span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="o">==</span> <span class="n">source_name</span><span class="p">]</span>
|
||||
</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a>
|
||||
</span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="k">def</span> <span class="nf">is_subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a subquery"""</span>
|
||||
</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">SUBQUERY</span>
|
||||
</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a>
|
||||
</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a> <span class="k">def</span> <span class="nf">is_derived_table</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_derived_table</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a derived table"""</span>
|
||||
</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">DERIVED_TABLE</span>
|
||||
</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a>
|
||||
</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="k">def</span> <span class="nf">is_union</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_union</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a union"""</span>
|
||||
</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">UNION</span>
|
||||
</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a>
|
||||
</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="k">def</span> <span class="nf">is_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a common table expression"""</span>
|
||||
</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">CTE</span>
|
||||
</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a>
|
||||
</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="k">def</span> <span class="nf">is_root</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_root</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a><span class="w"> </span><span class="sd">"""Determine if this is the root scope"""</span>
|
||||
</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">ROOT</span>
|
||||
</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a>
|
||||
</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="k">def</span> <span class="nf">is_udtf</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_udtf</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a UDTF (User Defined Table Function)"""</span>
|
||||
</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">UDTF</span>
|
||||
</span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a>
|
||||
</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> <span class="nd">@property</span>
|
||||
</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="k">def</span> <span class="nf">is_correlated_subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_correlated_subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a correlated subquery"""</span>
|
||||
</span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">can_be_correlated</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">external_columns</span><span class="p">)</span>
|
||||
</span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a>
|
||||
</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> <span class="k">def</span> <span class="nf">rename_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span><span class="p">):</span>
|
||||
</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">rename_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span><span class="p">):</span>
|
||||
</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a><span class="w"> </span><span class="sd">"""Rename a source in this scope"""</span>
|
||||
</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">old_name</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span> <span class="p">[])</span>
|
||||
</span><span id="L-441"><a href="#L-441"><span class="linenos">441</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sources</span><span class="p">[</span><span class="n">new_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">columns</span>
|
||||
</span><span id="L-442"><a href="#L-442"><span class="linenos">442</span></a>
|
||||
</span><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a> <span class="k">def</span> <span class="nf">add_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">source</span><span class="p">):</span>
|
||||
</span><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">add_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">source</span><span class="p">):</span>
|
||||
</span><span id="L-444"><a href="#L-444"><span class="linenos">444</span></a><span class="w"> </span><span class="sd">"""Add a source to this scope"""</span>
|
||||
</span><span id="L-445"><a href="#L-445"><span class="linenos">445</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sources</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">source</span>
|
||||
</span><span id="L-446"><a href="#L-446"><span class="linenos">446</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">clear_cache</span><span class="p">()</span>
|
||||
</span><span id="L-447"><a href="#L-447"><span class="linenos">447</span></a>
|
||||
</span><span id="L-448"><a href="#L-448"><span class="linenos">448</span></a> <span class="k">def</span> <span class="nf">remove_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
</span><span id="L-448"><a href="#L-448"><span class="linenos">448</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">remove_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
</span><span id="L-449"><a href="#L-449"><span class="linenos">449</span></a><span class="w"> </span><span class="sd">"""Remove a source from this scope"""</span>
|
||||
</span><span id="L-450"><a href="#L-450"><span class="linenos">450</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="L-451"><a href="#L-451"><span class="linenos">451</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">clear_cache</span><span class="p">()</span>
|
||||
</span><span id="L-452"><a href="#L-452"><span class="linenos">452</span></a>
|
||||
</span><span id="L-453"><a href="#L-453"><span class="linenos">453</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-453"><a href="#L-453"><span class="linenos">453</span></a> <span class="k">def</span><span class="w"> </span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-454"><a href="#L-454"><span class="linenos">454</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"Scope<</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">()</span><span class="si">}</span><span class="s2">>"</span>
|
||||
</span><span id="L-455"><a href="#L-455"><span class="linenos">455</span></a>
|
||||
</span><span id="L-456"><a href="#L-456"><span class="linenos">456</span></a> <span class="k">def</span> <span class="nf">traverse</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-456"><a href="#L-456"><span class="linenos">456</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">traverse</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-457"><a href="#L-457"><span class="linenos">457</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-458"><a href="#L-458"><span class="linenos">458</span></a><span class="sd"> Traverse the scope tree from this node.</span>
|
||||
</span><span id="L-459"><a href="#L-459"><span class="linenos">459</span></a>
|
||||
|
@ -723,7 +723,7 @@
|
|||
</span><span id="L-476"><a href="#L-476"><span class="linenos">476</span></a>
|
||||
</span><span id="L-477"><a href="#L-477"><span class="linenos">477</span></a> <span class="k">yield from</span> <span class="nb">reversed</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
||||
</span><span id="L-478"><a href="#L-478"><span class="linenos">478</span></a>
|
||||
</span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a> <span class="k">def</span> <span class="nf">ref_count</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">ref_count</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-480"><a href="#L-480"><span class="linenos">480</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-481"><a href="#L-481"><span class="linenos">481</span></a><span class="sd"> Count the number of times each scope in this tree is referenced.</span>
|
||||
</span><span id="L-482"><a href="#L-482"><span class="linenos">482</span></a>
|
||||
|
@ -739,7 +739,7 @@
|
|||
</span><span id="L-492"><a href="#L-492"><span class="linenos">492</span></a> <span class="k">return</span> <span class="n">scope_ref_count</span>
|
||||
</span><span id="L-493"><a href="#L-493"><span class="linenos">493</span></a>
|
||||
</span><span id="L-494"><a href="#L-494"><span class="linenos">494</span></a>
|
||||
</span><span id="L-495"><a href="#L-495"><span class="linenos">495</span></a><span class="k">def</span> <span class="nf">traverse_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Scope</span><span class="p">]:</span>
|
||||
</span><span id="L-495"><a href="#L-495"><span class="linenos">495</span></a><span class="k">def</span><span class="w"> </span><span class="nf">traverse_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Scope</span><span class="p">]:</span>
|
||||
</span><span id="L-496"><a href="#L-496"><span class="linenos">496</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-497"><a href="#L-497"><span class="linenos">497</span></a><span class="sd"> Traverse an expression by its "scopes".</span>
|
||||
</span><span id="L-498"><a href="#L-498"><span class="linenos">498</span></a>
|
||||
|
@ -770,7 +770,7 @@
|
|||
</span><span id="L-523"><a href="#L-523"><span class="linenos">523</span></a> <span class="k">return</span> <span class="p">[]</span>
|
||||
</span><span id="L-524"><a href="#L-524"><span class="linenos">524</span></a>
|
||||
</span><span id="L-525"><a href="#L-525"><span class="linenos">525</span></a>
|
||||
</span><span id="L-526"><a href="#L-526"><span class="linenos">526</span></a><span class="k">def</span> <span class="nf">build_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Scope</span><span class="p">]:</span>
|
||||
</span><span id="L-526"><a href="#L-526"><span class="linenos">526</span></a><span class="k">def</span><span class="w"> </span><span class="nf">build_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Scope</span><span class="p">]:</span>
|
||||
</span><span id="L-527"><a href="#L-527"><span class="linenos">527</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-528"><a href="#L-528"><span class="linenos">528</span></a><span class="sd"> Build a scope tree.</span>
|
||||
</span><span id="L-529"><a href="#L-529"><span class="linenos">529</span></a>
|
||||
|
@ -783,7 +783,7 @@
|
|||
</span><span id="L-536"><a href="#L-536"><span class="linenos">536</span></a> <span class="k">return</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">traverse_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||||
</span><span id="L-537"><a href="#L-537"><span class="linenos">537</span></a>
|
||||
</span><span id="L-538"><a href="#L-538"><span class="linenos">538</span></a>
|
||||
</span><span id="L-539"><a href="#L-539"><span class="linenos">539</span></a><span class="k">def</span> <span class="nf">_traverse_scope</span><span class="p">(</span><span class="n">scope</span><span class="p">):</span>
|
||||
</span><span id="L-539"><a href="#L-539"><span class="linenos">539</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_traverse_scope</span><span class="p">(</span><span class="n">scope</span><span class="p">):</span>
|
||||
</span><span id="L-540"><a href="#L-540"><span class="linenos">540</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="L-541"><a href="#L-541"><span class="linenos">541</span></a>
|
||||
</span><span id="L-542"><a href="#L-542"><span class="linenos">542</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span>
|
||||
|
@ -820,13 +820,13 @@
|
|||
</span><span id="L-573"><a href="#L-573"><span class="linenos">573</span></a> <span class="k">yield</span> <span class="n">scope</span>
|
||||
</span><span id="L-574"><a href="#L-574"><span class="linenos">574</span></a>
|
||||
</span><span id="L-575"><a href="#L-575"><span class="linenos">575</span></a>
|
||||
</span><span id="L-576"><a href="#L-576"><span class="linenos">576</span></a><span class="k">def</span> <span class="nf">_traverse_select</span><span class="p">(</span><span class="n">scope</span><span class="p">):</span>
|
||||
</span><span id="L-576"><a href="#L-576"><span class="linenos">576</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_traverse_select</span><span class="p">(</span><span class="n">scope</span><span class="p">):</span>
|
||||
</span><span id="L-577"><a href="#L-577"><span class="linenos">577</span></a> <span class="k">yield from</span> <span class="n">_traverse_ctes</span><span class="p">(</span><span class="n">scope</span><span class="p">)</span>
|
||||
</span><span id="L-578"><a href="#L-578"><span class="linenos">578</span></a> <span class="k">yield from</span> <span class="n">_traverse_tables</span><span class="p">(</span><span class="n">scope</span><span class="p">)</span>
|
||||
</span><span id="L-579"><a href="#L-579"><span class="linenos">579</span></a> <span class="k">yield from</span> <span class="n">_traverse_subqueries</span><span class="p">(</span><span class="n">scope</span><span class="p">)</span>
|
||||
</span><span id="L-580"><a href="#L-580"><span class="linenos">580</span></a>
|
||||
</span><span id="L-581"><a href="#L-581"><span class="linenos">581</span></a>
|
||||
</span><span id="L-582"><a href="#L-582"><span class="linenos">582</span></a><span class="k">def</span> <span class="nf">_traverse_union</span><span class="p">(</span><span class="n">scope</span><span class="p">):</span>
|
||||
</span><span id="L-582"><a href="#L-582"><span class="linenos">582</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_traverse_union</span><span class="p">(</span><span class="n">scope</span><span class="p">):</span>
|
||||
</span><span id="L-583"><a href="#L-583"><span class="linenos">583</span></a> <span class="n">prev_scope</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="L-584"><a href="#L-584"><span class="linenos">584</span></a> <span class="n">union_scope_stack</span> <span class="o">=</span> <span class="p">[</span><span class="n">scope</span><span class="p">]</span>
|
||||
</span><span id="L-585"><a href="#L-585"><span class="linenos">585</span></a> <span class="n">expression_stack</span> <span class="o">=</span> <span class="p">[</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">]</span>
|
||||
|
@ -861,7 +861,7 @@
|
|||
</span><span id="L-614"><a href="#L-614"><span class="linenos">614</span></a> <span class="n">prev_scope</span> <span class="o">=</span> <span class="n">scope</span>
|
||||
</span><span id="L-615"><a href="#L-615"><span class="linenos">615</span></a>
|
||||
</span><span id="L-616"><a href="#L-616"><span class="linenos">616</span></a>
|
||||
</span><span id="L-617"><a href="#L-617"><span class="linenos">617</span></a><span class="k">def</span> <span class="nf">_traverse_ctes</span><span class="p">(</span><span class="n">scope</span><span class="p">):</span>
|
||||
</span><span id="L-617"><a href="#L-617"><span class="linenos">617</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_traverse_ctes</span><span class="p">(</span><span class="n">scope</span><span class="p">):</span>
|
||||
</span><span id="L-618"><a href="#L-618"><span class="linenos">618</span></a> <span class="n">sources</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="L-619"><a href="#L-619"><span class="linenos">619</span></a>
|
||||
</span><span id="L-620"><a href="#L-620"><span class="linenos">620</span></a> <span class="k">for</span> <span class="n">cte</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">ctes</span><span class="p">:</span>
|
||||
|
@ -897,7 +897,7 @@
|
|||
</span><span id="L-650"><a href="#L-650"><span class="linenos">650</span></a> <span class="n">scope</span><span class="o">.</span><span class="n">cte_sources</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">sources</span><span class="p">)</span>
|
||||
</span><span id="L-651"><a href="#L-651"><span class="linenos">651</span></a>
|
||||
</span><span id="L-652"><a href="#L-652"><span class="linenos">652</span></a>
|
||||
</span><span id="L-653"><a href="#L-653"><span class="linenos">653</span></a><span class="k">def</span> <span class="nf">_is_derived_table</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
||||
</span><span id="L-653"><a href="#L-653"><span class="linenos">653</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_is_derived_table</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
||||
</span><span id="L-654"><a href="#L-654"><span class="linenos">654</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-655"><a href="#L-655"><span class="linenos">655</span></a><span class="sd"> We represent (tbl1 JOIN tbl2) as a Subquery, but it's not really a "derived table",</span>
|
||||
</span><span id="L-656"><a href="#L-656"><span class="linenos">656</span></a><span class="sd"> as it doesn't introduce a new scope. If an alias is present, it shadows all names</span>
|
||||
|
@ -908,7 +908,7 @@
|
|||
</span><span id="L-661"><a href="#L-661"><span class="linenos">661</span></a> <span class="p">)</span>
|
||||
</span><span id="L-662"><a href="#L-662"><span class="linenos">662</span></a>
|
||||
</span><span id="L-663"><a href="#L-663"><span class="linenos">663</span></a>
|
||||
</span><span id="L-664"><a href="#L-664"><span class="linenos">664</span></a><span class="k">def</span> <span class="nf">_traverse_tables</span><span class="p">(</span><span class="n">scope</span><span class="p">):</span>
|
||||
</span><span id="L-664"><a href="#L-664"><span class="linenos">664</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_traverse_tables</span><span class="p">(</span><span class="n">scope</span><span class="p">):</span>
|
||||
</span><span id="L-665"><a href="#L-665"><span class="linenos">665</span></a> <span class="n">sources</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="L-666"><a href="#L-666"><span class="linenos">666</span></a>
|
||||
</span><span id="L-667"><a href="#L-667"><span class="linenos">667</span></a> <span class="c1"># Traverse FROMs, JOINs, and LATERALs in the order they are defined</span>
|
||||
|
@ -992,7 +992,7 @@
|
|||
</span><span id="L-745"><a href="#L-745"><span class="linenos">745</span></a> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">sources</span><span class="p">)</span>
|
||||
</span><span id="L-746"><a href="#L-746"><span class="linenos">746</span></a>
|
||||
</span><span id="L-747"><a href="#L-747"><span class="linenos">747</span></a>
|
||||
</span><span id="L-748"><a href="#L-748"><span class="linenos">748</span></a><span class="k">def</span> <span class="nf">_traverse_subqueries</span><span class="p">(</span><span class="n">scope</span><span class="p">):</span>
|
||||
</span><span id="L-748"><a href="#L-748"><span class="linenos">748</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_traverse_subqueries</span><span class="p">(</span><span class="n">scope</span><span class="p">):</span>
|
||||
</span><span id="L-749"><a href="#L-749"><span class="linenos">749</span></a> <span class="k">for</span> <span class="n">subquery</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">subqueries</span><span class="p">:</span>
|
||||
</span><span id="L-750"><a href="#L-750"><span class="linenos">750</span></a> <span class="n">top</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="L-751"><a href="#L-751"><span class="linenos">751</span></a> <span class="k">for</span> <span class="n">child_scope</span> <span class="ow">in</span> <span class="n">_traverse_scope</span><span class="p">(</span><span class="n">scope</span><span class="o">.</span><span class="n">branch</span><span class="p">(</span><span class="n">subquery</span><span class="p">,</span> <span class="n">scope_type</span><span class="o">=</span><span class="n">ScopeType</span><span class="o">.</span><span class="n">SUBQUERY</span><span class="p">)):</span>
|
||||
|
@ -1001,7 +1001,7 @@
|
|||
</span><span id="L-754"><a href="#L-754"><span class="linenos">754</span></a> <span class="n">scope</span><span class="o">.</span><span class="n">subquery_scopes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">top</span><span class="p">)</span>
|
||||
</span><span id="L-755"><a href="#L-755"><span class="linenos">755</span></a>
|
||||
</span><span id="L-756"><a href="#L-756"><span class="linenos">756</span></a>
|
||||
</span><span id="L-757"><a href="#L-757"><span class="linenos">757</span></a><span class="k">def</span> <span class="nf">_traverse_udtfs</span><span class="p">(</span><span class="n">scope</span><span class="p">):</span>
|
||||
</span><span id="L-757"><a href="#L-757"><span class="linenos">757</span></a><span class="k">def</span><span class="w"> </span><span class="nf">_traverse_udtfs</span><span class="p">(</span><span class="n">scope</span><span class="p">):</span>
|
||||
</span><span id="L-758"><a href="#L-758"><span class="linenos">758</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">):</span>
|
||||
</span><span id="L-759"><a href="#L-759"><span class="linenos">759</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span>
|
||||
</span><span id="L-760"><a href="#L-760"><span class="linenos">760</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">):</span>
|
||||
|
@ -1029,7 +1029,7 @@
|
|||
</span><span id="L-782"><a href="#L-782"><span class="linenos">782</span></a> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">sources</span><span class="p">)</span>
|
||||
</span><span id="L-783"><a href="#L-783"><span class="linenos">783</span></a>
|
||||
</span><span id="L-784"><a href="#L-784"><span class="linenos">784</span></a>
|
||||
</span><span id="L-785"><a href="#L-785"><span class="linenos">785</span></a><span class="k">def</span> <span class="nf">walk_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="L-785"><a href="#L-785"><span class="linenos">785</span></a><span class="k">def</span><span class="w"> </span><span class="nf">walk_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="L-786"><a href="#L-786"><span class="linenos">786</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-787"><a href="#L-787"><span class="linenos">787</span></a><span class="sd"> Returns a generator object which visits all nodes in the syntrax tree, stopping at</span>
|
||||
</span><span id="L-788"><a href="#L-788"><span class="linenos">788</span></a><span class="sd"> nodes that start child scopes.</span>
|
||||
|
@ -1074,7 +1074,7 @@
|
|||
</span><span id="L-827"><a href="#L-827"><span class="linenos">827</span></a> <span class="k">yield from</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
</span><span id="L-828"><a href="#L-828"><span class="linenos">828</span></a>
|
||||
</span><span id="L-829"><a href="#L-829"><span class="linenos">829</span></a>
|
||||
</span><span id="L-830"><a href="#L-830"><span class="linenos">830</span></a><span class="k">def</span> <span class="nf">find_all_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="L-830"><a href="#L-830"><span class="linenos">830</span></a><span class="k">def</span><span class="w"> </span><span class="nf">find_all_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="L-831"><a href="#L-831"><span class="linenos">831</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-832"><a href="#L-832"><span class="linenos">832</span></a><span class="sd"> Returns a generator object which visits all nodes in this scope and only yields those that</span>
|
||||
</span><span id="L-833"><a href="#L-833"><span class="linenos">833</span></a><span class="sd"> match at least one of the specified expression types.</span>
|
||||
|
@ -1094,7 +1094,7 @@
|
|||
</span><span id="L-847"><a href="#L-847"><span class="linenos">847</span></a> <span class="k">yield</span> <span class="n">expression</span>
|
||||
</span><span id="L-848"><a href="#L-848"><span class="linenos">848</span></a>
|
||||
</span><span id="L-849"><a href="#L-849"><span class="linenos">849</span></a>
|
||||
</span><span id="L-850"><a href="#L-850"><span class="linenos">850</span></a><span class="k">def</span> <span class="nf">find_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="L-850"><a href="#L-850"><span class="linenos">850</span></a><span class="k">def</span><span class="w"> </span><span class="nf">find_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="L-851"><a href="#L-851"><span class="linenos">851</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-852"><a href="#L-852"><span class="linenos">852</span></a><span class="sd"> Returns the first node in this scope which matches at least one of the specified types.</span>
|
||||
</span><span id="L-853"><a href="#L-853"><span class="linenos">853</span></a>
|
||||
|
@ -1150,7 +1150,7 @@
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#ScopeType"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="ScopeType-19"><a href="#ScopeType-19"><span class="linenos">19</span></a><span class="k">class</span> <span class="nc">ScopeType</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="ScopeType-19"><a href="#ScopeType-19"><span class="linenos">19</span></a><span class="k">class</span><span class="w"> </span><span class="nc">ScopeType</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>
|
||||
</span><span id="ScopeType-20"><a href="#ScopeType-20"><span class="linenos">20</span></a> <span class="n">ROOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>
|
||||
</span><span id="ScopeType-21"><a href="#ScopeType-21"><span class="linenos">21</span></a> <span class="n">SUBQUERY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>
|
||||
</span><span id="ScopeType-22"><a href="#ScopeType-22"><span class="linenos">22</span></a> <span class="n">DERIVED_TABLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span>
|
||||
|
@ -1248,7 +1248,7 @@
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope-28"><a href="#Scope-28"><span class="linenos"> 28</span></a><span class="k">class</span> <span class="nc">Scope</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope-28"><a href="#Scope-28"><span class="linenos"> 28</span></a><span class="k">class</span><span class="w"> </span><span class="nc">Scope</span><span class="p">:</span>
|
||||
</span><span id="Scope-29"><a href="#Scope-29"><span class="linenos"> 29</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-30"><a href="#Scope-30"><span class="linenos"> 30</span></a><span class="sd"> Selection scope.</span>
|
||||
</span><span id="Scope-31"><a href="#Scope-31"><span class="linenos"> 31</span></a>
|
||||
|
@ -1280,7 +1280,7 @@
|
|||
</span><span id="Scope-57"><a href="#Scope-57"><span class="linenos"> 57</span></a><span class="sd"> a list of the left and right child scopes.</span>
|
||||
</span><span id="Scope-58"><a href="#Scope-58"><span class="linenos"> 58</span></a><span class="sd"> """</span>
|
||||
</span><span id="Scope-59"><a href="#Scope-59"><span class="linenos"> 59</span></a>
|
||||
</span><span id="Scope-60"><a href="#Scope-60"><span class="linenos"> 60</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="Scope-60"><a href="#Scope-60"><span class="linenos"> 60</span></a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="Scope-61"><a href="#Scope-61"><span class="linenos"> 61</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="Scope-62"><a href="#Scope-62"><span class="linenos"> 62</span></a> <span class="n">expression</span><span class="p">,</span>
|
||||
</span><span id="Scope-63"><a href="#Scope-63"><span class="linenos"> 63</span></a> <span class="n">sources</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
|
@ -1309,7 +1309,7 @@
|
|||
</span><span id="Scope-86"><a href="#Scope-86"><span class="linenos"> 86</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">can_be_correlated</span> <span class="o">=</span> <span class="n">can_be_correlated</span>
|
||||
</span><span id="Scope-87"><a href="#Scope-87"><span class="linenos"> 87</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">clear_cache</span><span class="p">()</span>
|
||||
</span><span id="Scope-88"><a href="#Scope-88"><span class="linenos"> 88</span></a>
|
||||
</span><span id="Scope-89"><a href="#Scope-89"><span class="linenos"> 89</span></a> <span class="k">def</span> <span class="nf">clear_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-89"><a href="#Scope-89"><span class="linenos"> 89</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">clear_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-90"><a href="#Scope-90"><span class="linenos"> 90</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_collected</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="Scope-91"><a href="#Scope-91"><span class="linenos"> 91</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_raw_columns</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="Scope-92"><a href="#Scope-92"><span class="linenos"> 92</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_stars</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
@ -1325,7 +1325,7 @@
|
|||
</span><span id="Scope-102"><a href="#Scope-102"><span class="linenos">102</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_pivots</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="Scope-103"><a href="#Scope-103"><span class="linenos">103</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_references</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="Scope-104"><a href="#Scope-104"><span class="linenos">104</span></a>
|
||||
</span><span id="Scope-105"><a href="#Scope-105"><span class="linenos">105</span></a> <span class="k">def</span> <span class="nf">branch</span><span class="p">(</span>
|
||||
</span><span id="Scope-105"><a href="#Scope-105"><span class="linenos">105</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">branch</span><span class="p">(</span>
|
||||
</span><span id="Scope-106"><a href="#Scope-106"><span class="linenos">106</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">scope_type</span><span class="p">,</span> <span class="n">sources</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">cte_sources</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lateral_sources</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span>
|
||||
</span><span id="Scope-107"><a href="#Scope-107"><span class="linenos">107</span></a> <span class="p">):</span>
|
||||
</span><span id="Scope-108"><a href="#Scope-108"><span class="linenos">108</span></a><span class="w"> </span><span class="sd">"""Branch from the current scope to a new, inner scope"""</span>
|
||||
|
@ -1341,7 +1341,7 @@
|
|||
</span><span id="Scope-118"><a href="#Scope-118"><span class="linenos">118</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
||||
</span><span id="Scope-119"><a href="#Scope-119"><span class="linenos">119</span></a> <span class="p">)</span>
|
||||
</span><span id="Scope-120"><a href="#Scope-120"><span class="linenos">120</span></a>
|
||||
</span><span id="Scope-121"><a href="#Scope-121"><span class="linenos">121</span></a> <span class="k">def</span> <span class="nf">_collect</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-121"><a href="#Scope-121"><span class="linenos">121</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_collect</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-122"><a href="#Scope-122"><span class="linenos">122</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tables</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="Scope-123"><a href="#Scope-123"><span class="linenos">123</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_ctes</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="Scope-124"><a href="#Scope-124"><span class="linenos">124</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_subqueries</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
@ -1379,20 +1379,20 @@
|
|||
</span><span id="Scope-156"><a href="#Scope-156"><span class="linenos">156</span></a>
|
||||
</span><span id="Scope-157"><a href="#Scope-157"><span class="linenos">157</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_collected</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</span><span id="Scope-158"><a href="#Scope-158"><span class="linenos">158</span></a>
|
||||
</span><span id="Scope-159"><a href="#Scope-159"><span class="linenos">159</span></a> <span class="k">def</span> <span class="nf">_ensure_collected</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-159"><a href="#Scope-159"><span class="linenos">159</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_ensure_collected</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-160"><a href="#Scope-160"><span class="linenos">160</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collected</span><span class="p">:</span>
|
||||
</span><span id="Scope-161"><a href="#Scope-161"><span class="linenos">161</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_collect</span><span class="p">()</span>
|
||||
</span><span id="Scope-162"><a href="#Scope-162"><span class="linenos">162</span></a>
|
||||
</span><span id="Scope-163"><a href="#Scope-163"><span class="linenos">163</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="Scope-163"><a href="#Scope-163"><span class="linenos">163</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="Scope-164"><a href="#Scope-164"><span class="linenos">164</span></a> <span class="k">return</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="Scope-165"><a href="#Scope-165"><span class="linenos">165</span></a>
|
||||
</span><span id="Scope-166"><a href="#Scope-166"><span class="linenos">166</span></a> <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="Scope-166"><a href="#Scope-166"><span class="linenos">166</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="Scope-167"><a href="#Scope-167"><span class="linenos">167</span></a> <span class="k">return</span> <span class="n">find_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
</span><span id="Scope-168"><a href="#Scope-168"><span class="linenos">168</span></a>
|
||||
</span><span id="Scope-169"><a href="#Scope-169"><span class="linenos">169</span></a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="Scope-169"><a href="#Scope-169"><span class="linenos">169</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">find_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="Scope-170"><a href="#Scope-170"><span class="linenos">170</span></a> <span class="k">return</span> <span class="n">find_all_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
</span><span id="Scope-171"><a href="#Scope-171"><span class="linenos">171</span></a>
|
||||
</span><span id="Scope-172"><a href="#Scope-172"><span class="linenos">172</span></a> <span class="k">def</span> <span class="nf">replace</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">):</span>
|
||||
</span><span id="Scope-172"><a href="#Scope-172"><span class="linenos">172</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">replace</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">):</span>
|
||||
</span><span id="Scope-173"><a href="#Scope-173"><span class="linenos">173</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-174"><a href="#Scope-174"><span class="linenos">174</span></a><span class="sd"> Replace `old` with `new`.</span>
|
||||
</span><span id="Scope-175"><a href="#Scope-175"><span class="linenos">175</span></a>
|
||||
|
@ -1406,7 +1406,7 @@
|
|||
</span><span id="Scope-183"><a href="#Scope-183"><span class="linenos">183</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">clear_cache</span><span class="p">()</span>
|
||||
</span><span id="Scope-184"><a href="#Scope-184"><span class="linenos">184</span></a>
|
||||
</span><span id="Scope-185"><a href="#Scope-185"><span class="linenos">185</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-186"><a href="#Scope-186"><span class="linenos">186</span></a> <span class="k">def</span> <span class="nf">tables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-186"><a href="#Scope-186"><span class="linenos">186</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">tables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-187"><a href="#Scope-187"><span class="linenos">187</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-188"><a href="#Scope-188"><span class="linenos">188</span></a><span class="sd"> List of tables in this scope.</span>
|
||||
</span><span id="Scope-189"><a href="#Scope-189"><span class="linenos">189</span></a>
|
||||
|
@ -1417,7 +1417,7 @@
|
|||
</span><span id="Scope-194"><a href="#Scope-194"><span class="linenos">194</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tables</span>
|
||||
</span><span id="Scope-195"><a href="#Scope-195"><span class="linenos">195</span></a>
|
||||
</span><span id="Scope-196"><a href="#Scope-196"><span class="linenos">196</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-197"><a href="#Scope-197"><span class="linenos">197</span></a> <span class="k">def</span> <span class="nf">ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-197"><a href="#Scope-197"><span class="linenos">197</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-198"><a href="#Scope-198"><span class="linenos">198</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-199"><a href="#Scope-199"><span class="linenos">199</span></a><span class="sd"> List of CTEs in this scope.</span>
|
||||
</span><span id="Scope-200"><a href="#Scope-200"><span class="linenos">200</span></a>
|
||||
|
@ -1428,7 +1428,7 @@
|
|||
</span><span id="Scope-205"><a href="#Scope-205"><span class="linenos">205</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ctes</span>
|
||||
</span><span id="Scope-206"><a href="#Scope-206"><span class="linenos">206</span></a>
|
||||
</span><span id="Scope-207"><a href="#Scope-207"><span class="linenos">207</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-208"><a href="#Scope-208"><span class="linenos">208</span></a> <span class="k">def</span> <span class="nf">derived_tables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-208"><a href="#Scope-208"><span class="linenos">208</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">derived_tables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-209"><a href="#Scope-209"><span class="linenos">209</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-210"><a href="#Scope-210"><span class="linenos">210</span></a><span class="sd"> List of derived tables in this scope.</span>
|
||||
</span><span id="Scope-211"><a href="#Scope-211"><span class="linenos">211</span></a>
|
||||
|
@ -1442,7 +1442,7 @@
|
|||
</span><span id="Scope-219"><a href="#Scope-219"><span class="linenos">219</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_derived_tables</span>
|
||||
</span><span id="Scope-220"><a href="#Scope-220"><span class="linenos">220</span></a>
|
||||
</span><span id="Scope-221"><a href="#Scope-221"><span class="linenos">221</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-222"><a href="#Scope-222"><span class="linenos">222</span></a> <span class="k">def</span> <span class="nf">udtfs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-222"><a href="#Scope-222"><span class="linenos">222</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">udtfs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-223"><a href="#Scope-223"><span class="linenos">223</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-224"><a href="#Scope-224"><span class="linenos">224</span></a><span class="sd"> List of "User Defined Tabular Functions" in this scope.</span>
|
||||
</span><span id="Scope-225"><a href="#Scope-225"><span class="linenos">225</span></a>
|
||||
|
@ -1453,7 +1453,7 @@
|
|||
</span><span id="Scope-230"><a href="#Scope-230"><span class="linenos">230</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_udtfs</span>
|
||||
</span><span id="Scope-231"><a href="#Scope-231"><span class="linenos">231</span></a>
|
||||
</span><span id="Scope-232"><a href="#Scope-232"><span class="linenos">232</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-233"><a href="#Scope-233"><span class="linenos">233</span></a> <span class="k">def</span> <span class="nf">subqueries</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-233"><a href="#Scope-233"><span class="linenos">233</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">subqueries</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-234"><a href="#Scope-234"><span class="linenos">234</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-235"><a href="#Scope-235"><span class="linenos">235</span></a><span class="sd"> List of subqueries in this scope.</span>
|
||||
</span><span id="Scope-236"><a href="#Scope-236"><span class="linenos">236</span></a>
|
||||
|
@ -1467,7 +1467,7 @@
|
|||
</span><span id="Scope-244"><a href="#Scope-244"><span class="linenos">244</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_subqueries</span>
|
||||
</span><span id="Scope-245"><a href="#Scope-245"><span class="linenos">245</span></a>
|
||||
</span><span id="Scope-246"><a href="#Scope-246"><span class="linenos">246</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-247"><a href="#Scope-247"><span class="linenos">247</span></a> <span class="k">def</span> <span class="nf">stars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">]:</span>
|
||||
</span><span id="Scope-247"><a href="#Scope-247"><span class="linenos">247</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">stars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">]:</span>
|
||||
</span><span id="Scope-248"><a href="#Scope-248"><span class="linenos">248</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-249"><a href="#Scope-249"><span class="linenos">249</span></a><span class="sd"> List of star expressions (columns or dots) in this scope.</span>
|
||||
</span><span id="Scope-250"><a href="#Scope-250"><span class="linenos">250</span></a><span class="sd"> """</span>
|
||||
|
@ -1475,7 +1475,7 @@
|
|||
</span><span id="Scope-252"><a href="#Scope-252"><span class="linenos">252</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stars</span>
|
||||
</span><span id="Scope-253"><a href="#Scope-253"><span class="linenos">253</span></a>
|
||||
</span><span id="Scope-254"><a href="#Scope-254"><span class="linenos">254</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-255"><a href="#Scope-255"><span class="linenos">255</span></a> <span class="k">def</span> <span class="nf">columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-255"><a href="#Scope-255"><span class="linenos">255</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-256"><a href="#Scope-256"><span class="linenos">256</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-257"><a href="#Scope-257"><span class="linenos">257</span></a><span class="sd"> List of columns in this scope.</span>
|
||||
</span><span id="Scope-258"><a href="#Scope-258"><span class="linenos">258</span></a>
|
||||
|
@ -1523,7 +1523,7 @@
|
|||
</span><span id="Scope-300"><a href="#Scope-300"><span class="linenos">300</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_columns</span>
|
||||
</span><span id="Scope-301"><a href="#Scope-301"><span class="linenos">301</span></a>
|
||||
</span><span id="Scope-302"><a href="#Scope-302"><span class="linenos">302</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-303"><a href="#Scope-303"><span class="linenos">303</span></a> <span class="k">def</span> <span class="nf">selected_sources</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-303"><a href="#Scope-303"><span class="linenos">303</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">selected_sources</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-304"><a href="#Scope-304"><span class="linenos">304</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-305"><a href="#Scope-305"><span class="linenos">305</span></a><span class="sd"> Mapping of nodes and sources that are actually selected from in this scope.</span>
|
||||
</span><span id="Scope-306"><a href="#Scope-306"><span class="linenos">306</span></a>
|
||||
|
@ -1546,7 +1546,7 @@
|
|||
</span><span id="Scope-323"><a href="#Scope-323"><span class="linenos">323</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_selected_sources</span>
|
||||
</span><span id="Scope-324"><a href="#Scope-324"><span class="linenos">324</span></a>
|
||||
</span><span id="Scope-325"><a href="#Scope-325"><span class="linenos">325</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-326"><a href="#Scope-326"><span class="linenos">326</span></a> <span class="k">def</span> <span class="nf">references</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span>
|
||||
</span><span id="Scope-326"><a href="#Scope-326"><span class="linenos">326</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">references</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span>
|
||||
</span><span id="Scope-327"><a href="#Scope-327"><span class="linenos">327</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_references</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="Scope-328"><a href="#Scope-328"><span class="linenos">328</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_references</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="Scope-329"><a href="#Scope-329"><span class="linenos">329</span></a>
|
||||
|
@ -1563,7 +1563,7 @@
|
|||
</span><span id="Scope-340"><a href="#Scope-340"><span class="linenos">340</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_references</span>
|
||||
</span><span id="Scope-341"><a href="#Scope-341"><span class="linenos">341</span></a>
|
||||
</span><span id="Scope-342"><a href="#Scope-342"><span class="linenos">342</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-343"><a href="#Scope-343"><span class="linenos">343</span></a> <span class="k">def</span> <span class="nf">external_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-343"><a href="#Scope-343"><span class="linenos">343</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">external_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-344"><a href="#Scope-344"><span class="linenos">344</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-345"><a href="#Scope-345"><span class="linenos">345</span></a><span class="sd"> Columns that appear to reference sources in outer scopes.</span>
|
||||
</span><span id="Scope-346"><a href="#Scope-346"><span class="linenos">346</span></a>
|
||||
|
@ -1583,7 +1583,7 @@
|
|||
</span><span id="Scope-360"><a href="#Scope-360"><span class="linenos">360</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_external_columns</span>
|
||||
</span><span id="Scope-361"><a href="#Scope-361"><span class="linenos">361</span></a>
|
||||
</span><span id="Scope-362"><a href="#Scope-362"><span class="linenos">362</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-363"><a href="#Scope-363"><span class="linenos">363</span></a> <span class="k">def</span> <span class="nf">unqualified_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-363"><a href="#Scope-363"><span class="linenos">363</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">unqualified_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-364"><a href="#Scope-364"><span class="linenos">364</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-365"><a href="#Scope-365"><span class="linenos">365</span></a><span class="sd"> Unqualified columns in the current scope.</span>
|
||||
</span><span id="Scope-366"><a href="#Scope-366"><span class="linenos">366</span></a>
|
||||
|
@ -1593,7 +1593,7 @@
|
|||
</span><span id="Scope-370"><a href="#Scope-370"><span class="linenos">370</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">c</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">table</span><span class="p">]</span>
|
||||
</span><span id="Scope-371"><a href="#Scope-371"><span class="linenos">371</span></a>
|
||||
</span><span id="Scope-372"><a href="#Scope-372"><span class="linenos">372</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-373"><a href="#Scope-373"><span class="linenos">373</span></a> <span class="k">def</span> <span class="nf">join_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-373"><a href="#Scope-373"><span class="linenos">373</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">join_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-374"><a href="#Scope-374"><span class="linenos">374</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-375"><a href="#Scope-375"><span class="linenos">375</span></a><span class="sd"> Hints that exist in the scope that reference tables</span>
|
||||
</span><span id="Scope-376"><a href="#Scope-376"><span class="linenos">376</span></a>
|
||||
|
@ -1605,7 +1605,7 @@
|
|||
</span><span id="Scope-382"><a href="#Scope-382"><span class="linenos">382</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_join_hints</span>
|
||||
</span><span id="Scope-383"><a href="#Scope-383"><span class="linenos">383</span></a>
|
||||
</span><span id="Scope-384"><a href="#Scope-384"><span class="linenos">384</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-385"><a href="#Scope-385"><span class="linenos">385</span></a> <span class="k">def</span> <span class="nf">pivots</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-385"><a href="#Scope-385"><span class="linenos">385</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">pivots</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-386"><a href="#Scope-386"><span class="linenos">386</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pivots</span><span class="p">:</span>
|
||||
</span><span id="Scope-387"><a href="#Scope-387"><span class="linenos">387</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_pivots</span> <span class="o">=</span> <span class="p">[</span>
|
||||
</span><span id="Scope-388"><a href="#Scope-388"><span class="linenos">388</span></a> <span class="n">pivot</span> <span class="k">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">node</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">references</span> <span class="k">for</span> <span class="n">pivot</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
|
@ -1613,7 +1613,7 @@
|
|||
</span><span id="Scope-390"><a href="#Scope-390"><span class="linenos">390</span></a>
|
||||
</span><span id="Scope-391"><a href="#Scope-391"><span class="linenos">391</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pivots</span>
|
||||
</span><span id="Scope-392"><a href="#Scope-392"><span class="linenos">392</span></a>
|
||||
</span><span id="Scope-393"><a href="#Scope-393"><span class="linenos">393</span></a> <span class="k">def</span> <span class="nf">source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_name</span><span class="p">):</span>
|
||||
</span><span id="Scope-393"><a href="#Scope-393"><span class="linenos">393</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_name</span><span class="p">):</span>
|
||||
</span><span id="Scope-394"><a href="#Scope-394"><span class="linenos">394</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-395"><a href="#Scope-395"><span class="linenos">395</span></a><span class="sd"> Get all columns in the current scope for a particular source.</span>
|
||||
</span><span id="Scope-396"><a href="#Scope-396"><span class="linenos">396</span></a>
|
||||
|
@ -1625,59 +1625,59 @@
|
|||
</span><span id="Scope-402"><a href="#Scope-402"><span class="linenos">402</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">column</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span> <span class="k">if</span> <span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="o">==</span> <span class="n">source_name</span><span class="p">]</span>
|
||||
</span><span id="Scope-403"><a href="#Scope-403"><span class="linenos">403</span></a>
|
||||
</span><span id="Scope-404"><a href="#Scope-404"><span class="linenos">404</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-405"><a href="#Scope-405"><span class="linenos">405</span></a> <span class="k">def</span> <span class="nf">is_subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-405"><a href="#Scope-405"><span class="linenos">405</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-406"><a href="#Scope-406"><span class="linenos">406</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a subquery"""</span>
|
||||
</span><span id="Scope-407"><a href="#Scope-407"><span class="linenos">407</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">SUBQUERY</span>
|
||||
</span><span id="Scope-408"><a href="#Scope-408"><span class="linenos">408</span></a>
|
||||
</span><span id="Scope-409"><a href="#Scope-409"><span class="linenos">409</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-410"><a href="#Scope-410"><span class="linenos">410</span></a> <span class="k">def</span> <span class="nf">is_derived_table</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-410"><a href="#Scope-410"><span class="linenos">410</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_derived_table</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-411"><a href="#Scope-411"><span class="linenos">411</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a derived table"""</span>
|
||||
</span><span id="Scope-412"><a href="#Scope-412"><span class="linenos">412</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">DERIVED_TABLE</span>
|
||||
</span><span id="Scope-413"><a href="#Scope-413"><span class="linenos">413</span></a>
|
||||
</span><span id="Scope-414"><a href="#Scope-414"><span class="linenos">414</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-415"><a href="#Scope-415"><span class="linenos">415</span></a> <span class="k">def</span> <span class="nf">is_union</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-415"><a href="#Scope-415"><span class="linenos">415</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_union</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-416"><a href="#Scope-416"><span class="linenos">416</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a union"""</span>
|
||||
</span><span id="Scope-417"><a href="#Scope-417"><span class="linenos">417</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">UNION</span>
|
||||
</span><span id="Scope-418"><a href="#Scope-418"><span class="linenos">418</span></a>
|
||||
</span><span id="Scope-419"><a href="#Scope-419"><span class="linenos">419</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-420"><a href="#Scope-420"><span class="linenos">420</span></a> <span class="k">def</span> <span class="nf">is_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-420"><a href="#Scope-420"><span class="linenos">420</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-421"><a href="#Scope-421"><span class="linenos">421</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a common table expression"""</span>
|
||||
</span><span id="Scope-422"><a href="#Scope-422"><span class="linenos">422</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">CTE</span>
|
||||
</span><span id="Scope-423"><a href="#Scope-423"><span class="linenos">423</span></a>
|
||||
</span><span id="Scope-424"><a href="#Scope-424"><span class="linenos">424</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-425"><a href="#Scope-425"><span class="linenos">425</span></a> <span class="k">def</span> <span class="nf">is_root</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-425"><a href="#Scope-425"><span class="linenos">425</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_root</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-426"><a href="#Scope-426"><span class="linenos">426</span></a><span class="w"> </span><span class="sd">"""Determine if this is the root scope"""</span>
|
||||
</span><span id="Scope-427"><a href="#Scope-427"><span class="linenos">427</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">ROOT</span>
|
||||
</span><span id="Scope-428"><a href="#Scope-428"><span class="linenos">428</span></a>
|
||||
</span><span id="Scope-429"><a href="#Scope-429"><span class="linenos">429</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-430"><a href="#Scope-430"><span class="linenos">430</span></a> <span class="k">def</span> <span class="nf">is_udtf</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-430"><a href="#Scope-430"><span class="linenos">430</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_udtf</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-431"><a href="#Scope-431"><span class="linenos">431</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a UDTF (User Defined Table Function)"""</span>
|
||||
</span><span id="Scope-432"><a href="#Scope-432"><span class="linenos">432</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">UDTF</span>
|
||||
</span><span id="Scope-433"><a href="#Scope-433"><span class="linenos">433</span></a>
|
||||
</span><span id="Scope-434"><a href="#Scope-434"><span class="linenos">434</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope-435"><a href="#Scope-435"><span class="linenos">435</span></a> <span class="k">def</span> <span class="nf">is_correlated_subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-435"><a href="#Scope-435"><span class="linenos">435</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_correlated_subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-436"><a href="#Scope-436"><span class="linenos">436</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a correlated subquery"""</span>
|
||||
</span><span id="Scope-437"><a href="#Scope-437"><span class="linenos">437</span></a> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">can_be_correlated</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">external_columns</span><span class="p">)</span>
|
||||
</span><span id="Scope-438"><a href="#Scope-438"><span class="linenos">438</span></a>
|
||||
</span><span id="Scope-439"><a href="#Scope-439"><span class="linenos">439</span></a> <span class="k">def</span> <span class="nf">rename_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span><span class="p">):</span>
|
||||
</span><span id="Scope-439"><a href="#Scope-439"><span class="linenos">439</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">rename_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span><span class="p">):</span>
|
||||
</span><span id="Scope-440"><a href="#Scope-440"><span class="linenos">440</span></a><span class="w"> </span><span class="sd">"""Rename a source in this scope"""</span>
|
||||
</span><span id="Scope-441"><a href="#Scope-441"><span class="linenos">441</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">old_name</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span> <span class="p">[])</span>
|
||||
</span><span id="Scope-442"><a href="#Scope-442"><span class="linenos">442</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sources</span><span class="p">[</span><span class="n">new_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">columns</span>
|
||||
</span><span id="Scope-443"><a href="#Scope-443"><span class="linenos">443</span></a>
|
||||
</span><span id="Scope-444"><a href="#Scope-444"><span class="linenos">444</span></a> <span class="k">def</span> <span class="nf">add_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">source</span><span class="p">):</span>
|
||||
</span><span id="Scope-444"><a href="#Scope-444"><span class="linenos">444</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">add_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">source</span><span class="p">):</span>
|
||||
</span><span id="Scope-445"><a href="#Scope-445"><span class="linenos">445</span></a><span class="w"> </span><span class="sd">"""Add a source to this scope"""</span>
|
||||
</span><span id="Scope-446"><a href="#Scope-446"><span class="linenos">446</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sources</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">source</span>
|
||||
</span><span id="Scope-447"><a href="#Scope-447"><span class="linenos">447</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">clear_cache</span><span class="p">()</span>
|
||||
</span><span id="Scope-448"><a href="#Scope-448"><span class="linenos">448</span></a>
|
||||
</span><span id="Scope-449"><a href="#Scope-449"><span class="linenos">449</span></a> <span class="k">def</span> <span class="nf">remove_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
</span><span id="Scope-449"><a href="#Scope-449"><span class="linenos">449</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">remove_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
</span><span id="Scope-450"><a href="#Scope-450"><span class="linenos">450</span></a><span class="w"> </span><span class="sd">"""Remove a source from this scope"""</span>
|
||||
</span><span id="Scope-451"><a href="#Scope-451"><span class="linenos">451</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="Scope-452"><a href="#Scope-452"><span class="linenos">452</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">clear_cache</span><span class="p">()</span>
|
||||
</span><span id="Scope-453"><a href="#Scope-453"><span class="linenos">453</span></a>
|
||||
</span><span id="Scope-454"><a href="#Scope-454"><span class="linenos">454</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-454"><a href="#Scope-454"><span class="linenos">454</span></a> <span class="k">def</span><span class="w"> </span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-455"><a href="#Scope-455"><span class="linenos">455</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"Scope<</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">()</span><span class="si">}</span><span class="s2">>"</span>
|
||||
</span><span id="Scope-456"><a href="#Scope-456"><span class="linenos">456</span></a>
|
||||
</span><span id="Scope-457"><a href="#Scope-457"><span class="linenos">457</span></a> <span class="k">def</span> <span class="nf">traverse</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-457"><a href="#Scope-457"><span class="linenos">457</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">traverse</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-458"><a href="#Scope-458"><span class="linenos">458</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-459"><a href="#Scope-459"><span class="linenos">459</span></a><span class="sd"> Traverse the scope tree from this node.</span>
|
||||
</span><span id="Scope-460"><a href="#Scope-460"><span class="linenos">460</span></a>
|
||||
|
@ -1700,7 +1700,7 @@
|
|||
</span><span id="Scope-477"><a href="#Scope-477"><span class="linenos">477</span></a>
|
||||
</span><span id="Scope-478"><a href="#Scope-478"><span class="linenos">478</span></a> <span class="k">yield from</span> <span class="nb">reversed</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
||||
</span><span id="Scope-479"><a href="#Scope-479"><span class="linenos">479</span></a>
|
||||
</span><span id="Scope-480"><a href="#Scope-480"><span class="linenos">480</span></a> <span class="k">def</span> <span class="nf">ref_count</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-480"><a href="#Scope-480"><span class="linenos">480</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">ref_count</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope-481"><a href="#Scope-481"><span class="linenos">481</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope-482"><a href="#Scope-482"><span class="linenos">482</span></a><span class="sd"> Count the number of times each scope in this tree is referenced.</span>
|
||||
</span><span id="Scope-483"><a href="#Scope-483"><span class="linenos">483</span></a>
|
||||
|
@ -1761,7 +1761,7 @@ a list of the left and right child scopes.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope.__init__"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.__init__-60"><a href="#Scope.__init__-60"><span class="linenos">60</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.__init__-60"><a href="#Scope.__init__-60"><span class="linenos">60</span></a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="Scope.__init__-61"><a href="#Scope.__init__-61"><span class="linenos">61</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="Scope.__init__-62"><a href="#Scope.__init__-62"><span class="linenos">62</span></a> <span class="n">expression</span><span class="p">,</span>
|
||||
</span><span id="Scope.__init__-63"><a href="#Scope.__init__-63"><span class="linenos">63</span></a> <span class="n">sources</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
|
@ -1960,7 +1960,7 @@ a list of the left and right child scopes.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope.clear_cache"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.clear_cache-89"><a href="#Scope.clear_cache-89"><span class="linenos"> 89</span></a> <span class="k">def</span> <span class="nf">clear_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.clear_cache-89"><a href="#Scope.clear_cache-89"><span class="linenos"> 89</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">clear_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.clear_cache-90"><a href="#Scope.clear_cache-90"><span class="linenos"> 90</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_collected</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="Scope.clear_cache-91"><a href="#Scope.clear_cache-91"><span class="linenos"> 91</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_raw_columns</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="Scope.clear_cache-92"><a href="#Scope.clear_cache-92"><span class="linenos"> 92</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_stars</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
@ -1992,7 +1992,7 @@ a list of the left and right child scopes.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope.branch"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.branch-105"><a href="#Scope.branch-105"><span class="linenos">105</span></a> <span class="k">def</span> <span class="nf">branch</span><span class="p">(</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.branch-105"><a href="#Scope.branch-105"><span class="linenos">105</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">branch</span><span class="p">(</span>
|
||||
</span><span id="Scope.branch-106"><a href="#Scope.branch-106"><span class="linenos">106</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">scope_type</span><span class="p">,</span> <span class="n">sources</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">cte_sources</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lateral_sources</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span>
|
||||
</span><span id="Scope.branch-107"><a href="#Scope.branch-107"><span class="linenos">107</span></a> <span class="p">):</span>
|
||||
</span><span id="Scope.branch-108"><a href="#Scope.branch-108"><span class="linenos">108</span></a><span class="w"> </span><span class="sd">"""Branch from the current scope to a new, inner scope"""</span>
|
||||
|
@ -2026,7 +2026,7 @@ a list of the left and right child scopes.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope.walk"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.walk-163"><a href="#Scope.walk-163"><span class="linenos">163</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.walk-163"><a href="#Scope.walk-163"><span class="linenos">163</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="Scope.walk-164"><a href="#Scope.walk-164"><span class="linenos">164</span></a> <span class="k">return</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
@ -2045,7 +2045,7 @@ a list of the left and right child scopes.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope.find"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.find-166"><a href="#Scope.find-166"><span class="linenos">166</span></a> <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.find-166"><a href="#Scope.find-166"><span class="linenos">166</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="Scope.find-167"><a href="#Scope.find-167"><span class="linenos">167</span></a> <span class="k">return</span> <span class="n">find_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
@ -2064,7 +2064,7 @@ a list of the left and right child scopes.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope.find_all"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.find_all-169"><a href="#Scope.find_all-169"><span class="linenos">169</span></a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.find_all-169"><a href="#Scope.find_all-169"><span class="linenos">169</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">find_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="Scope.find_all-170"><a href="#Scope.find_all-170"><span class="linenos">170</span></a> <span class="k">return</span> <span class="n">find_all_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
@ -2083,7 +2083,7 @@ a list of the left and right child scopes.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope.replace"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.replace-172"><a href="#Scope.replace-172"><span class="linenos">172</span></a> <span class="k">def</span> <span class="nf">replace</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.replace-172"><a href="#Scope.replace-172"><span class="linenos">172</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">replace</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">):</span>
|
||||
</span><span id="Scope.replace-173"><a href="#Scope.replace-173"><span class="linenos">173</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.replace-174"><a href="#Scope.replace-174"><span class="linenos">174</span></a><span class="sd"> Replace `old` with `new`.</span>
|
||||
</span><span id="Scope.replace-175"><a href="#Scope.replace-175"><span class="linenos">175</span></a>
|
||||
|
@ -2122,7 +2122,7 @@ a list of the left and right child scopes.</li>
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.tables"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.tables-185"><a href="#Scope.tables-185"><span class="linenos">185</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.tables-186"><a href="#Scope.tables-186"><span class="linenos">186</span></a> <span class="k">def</span> <span class="nf">tables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.tables-186"><a href="#Scope.tables-186"><span class="linenos">186</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">tables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.tables-187"><a href="#Scope.tables-187"><span class="linenos">187</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.tables-188"><a href="#Scope.tables-188"><span class="linenos">188</span></a><span class="sd"> List of tables in this scope.</span>
|
||||
</span><span id="Scope.tables-189"><a href="#Scope.tables-189"><span class="linenos">189</span></a>
|
||||
|
@ -2155,7 +2155,7 @@ a list of the left and right child scopes.</li>
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.ctes"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.ctes-196"><a href="#Scope.ctes-196"><span class="linenos">196</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.ctes-197"><a href="#Scope.ctes-197"><span class="linenos">197</span></a> <span class="k">def</span> <span class="nf">ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.ctes-197"><a href="#Scope.ctes-197"><span class="linenos">197</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.ctes-198"><a href="#Scope.ctes-198"><span class="linenos">198</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.ctes-199"><a href="#Scope.ctes-199"><span class="linenos">199</span></a><span class="sd"> List of CTEs in this scope.</span>
|
||||
</span><span id="Scope.ctes-200"><a href="#Scope.ctes-200"><span class="linenos">200</span></a>
|
||||
|
@ -2188,7 +2188,7 @@ a list of the left and right child scopes.</li>
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.derived_tables"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.derived_tables-207"><a href="#Scope.derived_tables-207"><span class="linenos">207</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.derived_tables-208"><a href="#Scope.derived_tables-208"><span class="linenos">208</span></a> <span class="k">def</span> <span class="nf">derived_tables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.derived_tables-208"><a href="#Scope.derived_tables-208"><span class="linenos">208</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">derived_tables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.derived_tables-209"><a href="#Scope.derived_tables-209"><span class="linenos">209</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.derived_tables-210"><a href="#Scope.derived_tables-210"><span class="linenos">210</span></a><span class="sd"> List of derived tables in this scope.</span>
|
||||
</span><span id="Scope.derived_tables-211"><a href="#Scope.derived_tables-211"><span class="linenos">211</span></a>
|
||||
|
@ -2230,7 +2230,7 @@ a list of the left and right child scopes.</li>
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.udtfs"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.udtfs-221"><a href="#Scope.udtfs-221"><span class="linenos">221</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.udtfs-222"><a href="#Scope.udtfs-222"><span class="linenos">222</span></a> <span class="k">def</span> <span class="nf">udtfs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.udtfs-222"><a href="#Scope.udtfs-222"><span class="linenos">222</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">udtfs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.udtfs-223"><a href="#Scope.udtfs-223"><span class="linenos">223</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.udtfs-224"><a href="#Scope.udtfs-224"><span class="linenos">224</span></a><span class="sd"> List of "User Defined Tabular Functions" in this scope.</span>
|
||||
</span><span id="Scope.udtfs-225"><a href="#Scope.udtfs-225"><span class="linenos">225</span></a>
|
||||
|
@ -2263,7 +2263,7 @@ a list of the left and right child scopes.</li>
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.subqueries"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.subqueries-232"><a href="#Scope.subqueries-232"><span class="linenos">232</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.subqueries-233"><a href="#Scope.subqueries-233"><span class="linenos">233</span></a> <span class="k">def</span> <span class="nf">subqueries</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.subqueries-233"><a href="#Scope.subqueries-233"><span class="linenos">233</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">subqueries</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.subqueries-234"><a href="#Scope.subqueries-234"><span class="linenos">234</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.subqueries-235"><a href="#Scope.subqueries-235"><span class="linenos">235</span></a><span class="sd"> List of subqueries in this scope.</span>
|
||||
</span><span id="Scope.subqueries-236"><a href="#Scope.subqueries-236"><span class="linenos">236</span></a>
|
||||
|
@ -2305,7 +2305,7 @@ a list of the left and right child scopes.</li>
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.stars"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.stars-246"><a href="#Scope.stars-246"><span class="linenos">246</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.stars-247"><a href="#Scope.stars-247"><span class="linenos">247</span></a> <span class="k">def</span> <span class="nf">stars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">]:</span>
|
||||
</span><span id="Scope.stars-247"><a href="#Scope.stars-247"><span class="linenos">247</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">stars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">]:</span>
|
||||
</span><span id="Scope.stars-248"><a href="#Scope.stars-248"><span class="linenos">248</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.stars-249"><a href="#Scope.stars-249"><span class="linenos">249</span></a><span class="sd"> List of star expressions (columns or dots) in this scope.</span>
|
||||
</span><span id="Scope.stars-250"><a href="#Scope.stars-250"><span class="linenos">250</span></a><span class="sd"> """</span>
|
||||
|
@ -2329,7 +2329,7 @@ a list of the left and right child scopes.</li>
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.columns"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.columns-254"><a href="#Scope.columns-254"><span class="linenos">254</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.columns-255"><a href="#Scope.columns-255"><span class="linenos">255</span></a> <span class="k">def</span> <span class="nf">columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.columns-255"><a href="#Scope.columns-255"><span class="linenos">255</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.columns-256"><a href="#Scope.columns-256"><span class="linenos">256</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.columns-257"><a href="#Scope.columns-257"><span class="linenos">257</span></a><span class="sd"> List of columns in this scope.</span>
|
||||
</span><span id="Scope.columns-258"><a href="#Scope.columns-258"><span class="linenos">258</span></a>
|
||||
|
@ -2400,7 +2400,7 @@ a list of the left and right child scopes.</li>
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.selected_sources"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.selected_sources-302"><a href="#Scope.selected_sources-302"><span class="linenos">302</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.selected_sources-303"><a href="#Scope.selected_sources-303"><span class="linenos">303</span></a> <span class="k">def</span> <span class="nf">selected_sources</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.selected_sources-303"><a href="#Scope.selected_sources-303"><span class="linenos">303</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">selected_sources</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.selected_sources-304"><a href="#Scope.selected_sources-304"><span class="linenos">304</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.selected_sources-305"><a href="#Scope.selected_sources-305"><span class="linenos">305</span></a><span class="sd"> Mapping of nodes and sources that are actually selected from in this scope.</span>
|
||||
</span><span id="Scope.selected_sources-306"><a href="#Scope.selected_sources-306"><span class="linenos">306</span></a>
|
||||
|
@ -2448,7 +2448,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.references"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.references-325"><a href="#Scope.references-325"><span class="linenos">325</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.references-326"><a href="#Scope.references-326"><span class="linenos">326</span></a> <span class="k">def</span> <span class="nf">references</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span>
|
||||
</span><span id="Scope.references-326"><a href="#Scope.references-326"><span class="linenos">326</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">references</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span>
|
||||
</span><span id="Scope.references-327"><a href="#Scope.references-327"><span class="linenos">327</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_references</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="Scope.references-328"><a href="#Scope.references-328"><span class="linenos">328</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_references</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="Scope.references-329"><a href="#Scope.references-329"><span class="linenos">329</span></a>
|
||||
|
@ -2479,7 +2479,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.external_columns"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.external_columns-342"><a href="#Scope.external_columns-342"><span class="linenos">342</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.external_columns-343"><a href="#Scope.external_columns-343"><span class="linenos">343</span></a> <span class="k">def</span> <span class="nf">external_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.external_columns-343"><a href="#Scope.external_columns-343"><span class="linenos">343</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">external_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.external_columns-344"><a href="#Scope.external_columns-344"><span class="linenos">344</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.external_columns-345"><a href="#Scope.external_columns-345"><span class="linenos">345</span></a><span class="sd"> Columns that appear to reference sources in outer scopes.</span>
|
||||
</span><span id="Scope.external_columns-346"><a href="#Scope.external_columns-346"><span class="linenos">346</span></a>
|
||||
|
@ -2522,7 +2522,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.unqualified_columns"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.unqualified_columns-362"><a href="#Scope.unqualified_columns-362"><span class="linenos">362</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.unqualified_columns-363"><a href="#Scope.unqualified_columns-363"><span class="linenos">363</span></a> <span class="k">def</span> <span class="nf">unqualified_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.unqualified_columns-363"><a href="#Scope.unqualified_columns-363"><span class="linenos">363</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">unqualified_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.unqualified_columns-364"><a href="#Scope.unqualified_columns-364"><span class="linenos">364</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.unqualified_columns-365"><a href="#Scope.unqualified_columns-365"><span class="linenos">365</span></a><span class="sd"> Unqualified columns in the current scope.</span>
|
||||
</span><span id="Scope.unqualified_columns-366"><a href="#Scope.unqualified_columns-366"><span class="linenos">366</span></a>
|
||||
|
@ -2554,7 +2554,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.join_hints"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.join_hints-372"><a href="#Scope.join_hints-372"><span class="linenos">372</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.join_hints-373"><a href="#Scope.join_hints-373"><span class="linenos">373</span></a> <span class="k">def</span> <span class="nf">join_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.join_hints-373"><a href="#Scope.join_hints-373"><span class="linenos">373</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">join_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.join_hints-374"><a href="#Scope.join_hints-374"><span class="linenos">374</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.join_hints-375"><a href="#Scope.join_hints-375"><span class="linenos">375</span></a><span class="sd"> Hints that exist in the scope that reference tables</span>
|
||||
</span><span id="Scope.join_hints-376"><a href="#Scope.join_hints-376"><span class="linenos">376</span></a>
|
||||
|
@ -2588,7 +2588,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.pivots"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.pivots-384"><a href="#Scope.pivots-384"><span class="linenos">384</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.pivots-385"><a href="#Scope.pivots-385"><span class="linenos">385</span></a> <span class="k">def</span> <span class="nf">pivots</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.pivots-385"><a href="#Scope.pivots-385"><span class="linenos">385</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">pivots</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.pivots-386"><a href="#Scope.pivots-386"><span class="linenos">386</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pivots</span><span class="p">:</span>
|
||||
</span><span id="Scope.pivots-387"><a href="#Scope.pivots-387"><span class="linenos">387</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_pivots</span> <span class="o">=</span> <span class="p">[</span>
|
||||
</span><span id="Scope.pivots-388"><a href="#Scope.pivots-388"><span class="linenos">388</span></a> <span class="n">pivot</span> <span class="k">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">node</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">references</span> <span class="k">for</span> <span class="n">pivot</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
|
@ -2612,7 +2612,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope.source_columns"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.source_columns-393"><a href="#Scope.source_columns-393"><span class="linenos">393</span></a> <span class="k">def</span> <span class="nf">source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_name</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.source_columns-393"><a href="#Scope.source_columns-393"><span class="linenos">393</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_name</span><span class="p">):</span>
|
||||
</span><span id="Scope.source_columns-394"><a href="#Scope.source_columns-394"><span class="linenos">394</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.source_columns-395"><a href="#Scope.source_columns-395"><span class="linenos">395</span></a><span class="sd"> Get all columns in the current scope for a particular source.</span>
|
||||
</span><span id="Scope.source_columns-396"><a href="#Scope.source_columns-396"><span class="linenos">396</span></a>
|
||||
|
@ -2652,7 +2652,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.is_subquery"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.is_subquery-404"><a href="#Scope.is_subquery-404"><span class="linenos">404</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.is_subquery-405"><a href="#Scope.is_subquery-405"><span class="linenos">405</span></a> <span class="k">def</span> <span class="nf">is_subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.is_subquery-405"><a href="#Scope.is_subquery-405"><span class="linenos">405</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.is_subquery-406"><a href="#Scope.is_subquery-406"><span class="linenos">406</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a subquery"""</span>
|
||||
</span><span id="Scope.is_subquery-407"><a href="#Scope.is_subquery-407"><span class="linenos">407</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">SUBQUERY</span>
|
||||
</span></pre></div>
|
||||
|
@ -2673,7 +2673,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.is_derived_table"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.is_derived_table-409"><a href="#Scope.is_derived_table-409"><span class="linenos">409</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.is_derived_table-410"><a href="#Scope.is_derived_table-410"><span class="linenos">410</span></a> <span class="k">def</span> <span class="nf">is_derived_table</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.is_derived_table-410"><a href="#Scope.is_derived_table-410"><span class="linenos">410</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_derived_table</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.is_derived_table-411"><a href="#Scope.is_derived_table-411"><span class="linenos">411</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a derived table"""</span>
|
||||
</span><span id="Scope.is_derived_table-412"><a href="#Scope.is_derived_table-412"><span class="linenos">412</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">DERIVED_TABLE</span>
|
||||
</span></pre></div>
|
||||
|
@ -2694,7 +2694,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.is_union"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.is_union-414"><a href="#Scope.is_union-414"><span class="linenos">414</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.is_union-415"><a href="#Scope.is_union-415"><span class="linenos">415</span></a> <span class="k">def</span> <span class="nf">is_union</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.is_union-415"><a href="#Scope.is_union-415"><span class="linenos">415</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_union</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.is_union-416"><a href="#Scope.is_union-416"><span class="linenos">416</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a union"""</span>
|
||||
</span><span id="Scope.is_union-417"><a href="#Scope.is_union-417"><span class="linenos">417</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">UNION</span>
|
||||
</span></pre></div>
|
||||
|
@ -2715,7 +2715,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.is_cte"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.is_cte-419"><a href="#Scope.is_cte-419"><span class="linenos">419</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.is_cte-420"><a href="#Scope.is_cte-420"><span class="linenos">420</span></a> <span class="k">def</span> <span class="nf">is_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.is_cte-420"><a href="#Scope.is_cte-420"><span class="linenos">420</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.is_cte-421"><a href="#Scope.is_cte-421"><span class="linenos">421</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a common table expression"""</span>
|
||||
</span><span id="Scope.is_cte-422"><a href="#Scope.is_cte-422"><span class="linenos">422</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">CTE</span>
|
||||
</span></pre></div>
|
||||
|
@ -2736,7 +2736,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.is_root"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.is_root-424"><a href="#Scope.is_root-424"><span class="linenos">424</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.is_root-425"><a href="#Scope.is_root-425"><span class="linenos">425</span></a> <span class="k">def</span> <span class="nf">is_root</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.is_root-425"><a href="#Scope.is_root-425"><span class="linenos">425</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_root</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.is_root-426"><a href="#Scope.is_root-426"><span class="linenos">426</span></a><span class="w"> </span><span class="sd">"""Determine if this is the root scope"""</span>
|
||||
</span><span id="Scope.is_root-427"><a href="#Scope.is_root-427"><span class="linenos">427</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">ROOT</span>
|
||||
</span></pre></div>
|
||||
|
@ -2757,7 +2757,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.is_udtf"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.is_udtf-429"><a href="#Scope.is_udtf-429"><span class="linenos">429</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.is_udtf-430"><a href="#Scope.is_udtf-430"><span class="linenos">430</span></a> <span class="k">def</span> <span class="nf">is_udtf</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.is_udtf-430"><a href="#Scope.is_udtf-430"><span class="linenos">430</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_udtf</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.is_udtf-431"><a href="#Scope.is_udtf-431"><span class="linenos">431</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a UDTF (User Defined Table Function)"""</span>
|
||||
</span><span id="Scope.is_udtf-432"><a href="#Scope.is_udtf-432"><span class="linenos">432</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope_type</span> <span class="o">==</span> <span class="n">ScopeType</span><span class="o">.</span><span class="n">UDTF</span>
|
||||
</span></pre></div>
|
||||
|
@ -2778,7 +2778,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
</div>
|
||||
<a class="headerlink" href="#Scope.is_correlated_subquery"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.is_correlated_subquery-434"><a href="#Scope.is_correlated_subquery-434"><span class="linenos">434</span></a> <span class="nd">@property</span>
|
||||
</span><span id="Scope.is_correlated_subquery-435"><a href="#Scope.is_correlated_subquery-435"><span class="linenos">435</span></a> <span class="k">def</span> <span class="nf">is_correlated_subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.is_correlated_subquery-435"><a href="#Scope.is_correlated_subquery-435"><span class="linenos">435</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">is_correlated_subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.is_correlated_subquery-436"><a href="#Scope.is_correlated_subquery-436"><span class="linenos">436</span></a><span class="w"> </span><span class="sd">"""Determine if this scope is a correlated subquery"""</span>
|
||||
</span><span id="Scope.is_correlated_subquery-437"><a href="#Scope.is_correlated_subquery-437"><span class="linenos">437</span></a> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">can_be_correlated</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">external_columns</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
@ -2800,7 +2800,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope.rename_source"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.rename_source-439"><a href="#Scope.rename_source-439"><span class="linenos">439</span></a> <span class="k">def</span> <span class="nf">rename_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.rename_source-439"><a href="#Scope.rename_source-439"><span class="linenos">439</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">rename_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span><span class="p">):</span>
|
||||
</span><span id="Scope.rename_source-440"><a href="#Scope.rename_source-440"><span class="linenos">440</span></a><span class="w"> </span><span class="sd">"""Rename a source in this scope"""</span>
|
||||
</span><span id="Scope.rename_source-441"><a href="#Scope.rename_source-441"><span class="linenos">441</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">old_name</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span> <span class="p">[])</span>
|
||||
</span><span id="Scope.rename_source-442"><a href="#Scope.rename_source-442"><span class="linenos">442</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sources</span><span class="p">[</span><span class="n">new_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">columns</span>
|
||||
|
@ -2823,7 +2823,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope.add_source"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.add_source-444"><a href="#Scope.add_source-444"><span class="linenos">444</span></a> <span class="k">def</span> <span class="nf">add_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">source</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.add_source-444"><a href="#Scope.add_source-444"><span class="linenos">444</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">add_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">source</span><span class="p">):</span>
|
||||
</span><span id="Scope.add_source-445"><a href="#Scope.add_source-445"><span class="linenos">445</span></a><span class="w"> </span><span class="sd">"""Add a source to this scope"""</span>
|
||||
</span><span id="Scope.add_source-446"><a href="#Scope.add_source-446"><span class="linenos">446</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sources</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">source</span>
|
||||
</span><span id="Scope.add_source-447"><a href="#Scope.add_source-447"><span class="linenos">447</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">clear_cache</span><span class="p">()</span>
|
||||
|
@ -2846,7 +2846,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope.remove_source"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.remove_source-449"><a href="#Scope.remove_source-449"><span class="linenos">449</span></a> <span class="k">def</span> <span class="nf">remove_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.remove_source-449"><a href="#Scope.remove_source-449"><span class="linenos">449</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">remove_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
</span><span id="Scope.remove_source-450"><a href="#Scope.remove_source-450"><span class="linenos">450</span></a><span class="w"> </span><span class="sd">"""Remove a source from this scope"""</span>
|
||||
</span><span id="Scope.remove_source-451"><a href="#Scope.remove_source-451"><span class="linenos">451</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="Scope.remove_source-452"><a href="#Scope.remove_source-452"><span class="linenos">452</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">clear_cache</span><span class="p">()</span>
|
||||
|
@ -2869,7 +2869,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope.traverse"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.traverse-457"><a href="#Scope.traverse-457"><span class="linenos">457</span></a> <span class="k">def</span> <span class="nf">traverse</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.traverse-457"><a href="#Scope.traverse-457"><span class="linenos">457</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">traverse</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.traverse-458"><a href="#Scope.traverse-458"><span class="linenos">458</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.traverse-459"><a href="#Scope.traverse-459"><span class="linenos">459</span></a><span class="sd"> Traverse the scope tree from this node.</span>
|
||||
</span><span id="Scope.traverse-460"><a href="#Scope.traverse-460"><span class="linenos">460</span></a>
|
||||
|
@ -2916,7 +2916,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope.ref_count"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.ref_count-480"><a href="#Scope.ref_count-480"><span class="linenos">480</span></a> <span class="k">def</span> <span class="nf">ref_count</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.ref_count-480"><a href="#Scope.ref_count-480"><span class="linenos">480</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">ref_count</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="Scope.ref_count-481"><a href="#Scope.ref_count-481"><span class="linenos">481</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="Scope.ref_count-482"><a href="#Scope.ref_count-482"><span class="linenos">482</span></a><span class="sd"> Count the number of times each scope in this tree is referenced.</span>
|
||||
</span><span id="Scope.ref_count-483"><a href="#Scope.ref_count-483"><span class="linenos">483</span></a>
|
||||
|
@ -2956,7 +2956,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#traverse_scope"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="traverse_scope-496"><a href="#traverse_scope-496"><span class="linenos">496</span></a><span class="k">def</span> <span class="nf">traverse_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Scope</span><span class="p">]:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="traverse_scope-496"><a href="#traverse_scope-496"><span class="linenos">496</span></a><span class="k">def</span><span class="w"> </span><span class="nf">traverse_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Scope</span><span class="p">]:</span>
|
||||
</span><span id="traverse_scope-497"><a href="#traverse_scope-497"><span class="linenos">497</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="traverse_scope-498"><a href="#traverse_scope-498"><span class="linenos">498</span></a><span class="sd"> Traverse an expression by its "scopes".</span>
|
||||
</span><span id="traverse_scope-499"><a href="#traverse_scope-499"><span class="linenos">499</span></a>
|
||||
|
@ -3001,7 +3001,7 @@ incomplete properties which is confusing.</p>
|
|||
|
||||
<blockquote>
|
||||
<div class="pdoc-code codehilite">
|
||||
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">sqlglot</span>
|
||||
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span><span class="w"> </span><span class="nn">sqlglot</span>
|
||||
<span class="gp">>>> </span><span class="n">expression</span> <span class="o">=</span> <span class="n"><a href="../../sqlglot.html#parse_one">sqlglot.parse_one</a></span><span class="p">(</span><span class="s2">"SELECT a FROM (SELECT a FROM x) AS y"</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">scopes</span> <span class="o">=</span> <span class="n">traverse_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">scopes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">(),</span> <span class="nb">list</span><span class="p">(</span><span class="n">scopes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">sources</span><span class="p">)</span>
|
||||
|
@ -3038,7 +3038,7 @@ incomplete properties which is confusing.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#build_scope"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="build_scope-527"><a href="#build_scope-527"><span class="linenos">527</span></a><span class="k">def</span> <span class="nf">build_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Scope</span><span class="p">]:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="build_scope-527"><a href="#build_scope-527"><span class="linenos">527</span></a><span class="k">def</span><span class="w"> </span><span class="nf">build_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Scope</span><span class="p">]:</span>
|
||||
</span><span id="build_scope-528"><a href="#build_scope-528"><span class="linenos">528</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="build_scope-529"><a href="#build_scope-529"><span class="linenos">529</span></a><span class="sd"> Build a scope tree.</span>
|
||||
</span><span id="build_scope-530"><a href="#build_scope-530"><span class="linenos">530</span></a>
|
||||
|
@ -3080,7 +3080,7 @@ incomplete properties which is confusing.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#walk_in_scope"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="walk_in_scope-786"><a href="#walk_in_scope-786"><span class="linenos">786</span></a><span class="k">def</span> <span class="nf">walk_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="walk_in_scope-786"><a href="#walk_in_scope-786"><span class="linenos">786</span></a><span class="k">def</span><span class="w"> </span><span class="nf">walk_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="walk_in_scope-787"><a href="#walk_in_scope-787"><span class="linenos">787</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="walk_in_scope-788"><a href="#walk_in_scope-788"><span class="linenos">788</span></a><span class="sd"> Returns a generator object which visits all nodes in the syntrax tree, stopping at</span>
|
||||
</span><span id="walk_in_scope-789"><a href="#walk_in_scope-789"><span class="linenos">789</span></a><span class="sd"> nodes that start child scopes.</span>
|
||||
|
@ -3159,7 +3159,7 @@ the generator should stop traversing this branch of the tree.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#find_all_in_scope"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="find_all_in_scope-831"><a href="#find_all_in_scope-831"><span class="linenos">831</span></a><span class="k">def</span> <span class="nf">find_all_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="find_all_in_scope-831"><a href="#find_all_in_scope-831"><span class="linenos">831</span></a><span class="k">def</span><span class="w"> </span><span class="nf">find_all_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="find_all_in_scope-832"><a href="#find_all_in_scope-832"><span class="linenos">832</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="find_all_in_scope-833"><a href="#find_all_in_scope-833"><span class="linenos">833</span></a><span class="sd"> Returns a generator object which visits all nodes in this scope and only yields those that</span>
|
||||
</span><span id="find_all_in_scope-834"><a href="#find_all_in_scope-834"><span class="linenos">834</span></a><span class="sd"> match at least one of the specified expression types.</span>
|
||||
|
@ -3213,7 +3213,7 @@ match at least one of the specified expression types.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#find_in_scope"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="find_in_scope-851"><a href="#find_in_scope-851"><span class="linenos">851</span></a><span class="k">def</span> <span class="nf">find_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="find_in_scope-851"><a href="#find_in_scope-851"><span class="linenos">851</span></a><span class="k">def</span><span class="w"> </span><span class="nf">find_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="find_in_scope-852"><a href="#find_in_scope-852"><span class="linenos">852</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="find_in_scope-853"><a href="#find_in_scope-853"><span class="linenos">853</span></a><span class="sd"> Returns the first node in this scope which matches at least one of the specified types.</span>
|
||||
</span><span id="find_in_scope-854"><a href="#find_in_scope-854"><span class="linenos">854</span></a>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue