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.jsonpath 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>
|
||||
|
@ -80,20 +80,20 @@
|
|||
|
||||
<label class="view-source-button" for="mod-jsonpath-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">typing</span> <span class="k">as</span> <span class="nn">t</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">typing</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">t</span>
|
||||
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a>
|
||||
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="kn">import</span> <span class="nn">sqlglot.expressions</span> <span class="k">as</span> <span class="nn">exp</span>
|
||||
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="kn">from</span> <span class="nn">sqlglot.errors</span> <span class="kn">import</span> <span class="n">ParseError</span>
|
||||
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="kn">from</span> <span class="nn">sqlglot.tokens</span> <span class="kn">import</span> <span class="n">Token</span><span class="p">,</span> <span class="n">Tokenizer</span><span class="p">,</span> <span class="n">TokenType</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">sqlglot.expressions</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">exp</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">sqlglot.errors</span><span class="w"> </span><span class="kn">import</span> <span class="n">ParseError</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">sqlglot.tokens</span><span class="w"> </span><span class="kn">import</span> <span class="n">Token</span><span class="p">,</span> <span class="n">Tokenizer</span><span class="p">,</span> <span class="n">TokenType</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="k">if</span> <span class="n">t</span><span class="o">.</span><span class="n">TYPE_CHECKING</span><span class="p">:</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._typing</span> <span class="kn">import</span> <span class="n">Lit</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.dialects.dialect</span> <span class="kn">import</span> <span class="n">DialectType</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._typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Lit</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.dialects.dialect</span><span class="w"> </span><span class="kn">import</span> <span class="n">DialectType</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><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a><span class="k">class</span> <span class="nc">JSONPathTokenizer</span><span class="p">(</span><span class="n">Tokenizer</span><span class="p">):</span>
|
||||
</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a><span class="k">class</span><span class="w"> </span><span class="nc">JSONPathTokenizer</span><span class="p">(</span><span class="n">Tokenizer</span><span class="p">):</span>
|
||||
</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a> <span class="s2">"("</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span>
|
||||
</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a> <span class="s2">")"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span>
|
||||
|
@ -119,9 +119,9 @@
|
|||
</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">]</span>
|
||||
</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a>
|
||||
</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a>
|
||||
</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a><span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="n">path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">:</span>
|
||||
</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a><span class="k">def</span><span class="w"> </span><span class="nf">parse</span><span class="p">(</span><span class="n">path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">:</span>
|
||||
</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a><span class="w"> </span><span class="sd">"""Takes in a JSON path string and parses it into a JSONPath expression."""</span>
|
||||
</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span>
|
||||
</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.dialects</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dialect</span>
|
||||
</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a>
|
||||
</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="n">jsonpath_tokenizer</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span><span class="o">.</span><span class="n">jsonpath_tokenizer</span>
|
||||
</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="n">jsonpath_tokenizer</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
|
@ -129,36 +129,36 @@
|
|||
</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a>
|
||||
</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a>
|
||||
</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="k">def</span> <span class="nf">_curr</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">TokenType</span><span class="p">]:</span>
|
||||
</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_curr</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">TokenType</span><span class="p">]:</span>
|
||||
</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="k">return</span> <span class="n">tokens</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">token_type</span> <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="n">size</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a>
|
||||
</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="k">def</span> <span class="nf">_prev</span><span class="p">()</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span>
|
||||
</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_prev</span><span class="p">()</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span>
|
||||
</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="k">return</span> <span class="n">tokens</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span>
|
||||
</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a>
|
||||
</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">()</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span>
|
||||
</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_advance</span><span class="p">()</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span>
|
||||
</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="k">nonlocal</span> <span class="n">i</span>
|
||||
</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="k">return</span> <span class="n">_prev</span><span class="p">()</span>
|
||||
</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a>
|
||||
</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="k">def</span> <span class="nf">_error</span><span class="p">(</span><span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_error</span><span class="p">(</span><span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">msg</span><span class="si">}</span><span class="s2"> at index </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">path</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a>
|
||||
</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span>
|
||||
</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">True</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span>
|
||||
</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">True</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span>
|
||||
</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="k">pass</span>
|
||||
</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a>
|
||||
</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span>
|
||||
</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">False</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</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">Token</span><span class="p">]:</span>
|
||||
</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">False</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</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">Token</span><span class="p">]:</span>
|
||||
</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="k">pass</span>
|
||||
</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a>
|
||||
</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="k">if</span> <span class="n">_curr</span><span class="p">()</span> <span class="o">==</span> <span class="n">token_type</span><span class="p">:</span>
|
||||
</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="k">return</span> <span class="n">_advance</span><span class="p">()</span>
|
||||
</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="k">if</span> <span class="n">raise_unmatched</span><span class="p">:</span>
|
||||
</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="n">_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected </span><span class="si">{</span><span class="n">token_type</span><span class="si">}</span><span class="s2">"</span><span class="p">))</span>
|
||||
</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="k">return</span> <span class="kc">None</span>
|
||||
</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a>
|
||||
</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="k">def</span> <span class="nf">_parse_literal</span><span class="p">()</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span>
|
||||
</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_literal</span><span class="p">()</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span>
|
||||
</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="n">token</span> <span class="o">=</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">)</span> <span class="ow">or</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span>
|
||||
</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="k">if</span> <span class="n">token</span><span class="p">:</span>
|
||||
</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="k">return</span> <span class="n">token</span><span class="o">.</span><span class="n">text</span>
|
||||
|
@ -189,7 +189,7 @@
|
|||
</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a>
|
||||
</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="k">return</span> <span class="kc">False</span>
|
||||
</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a>
|
||||
</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="k">def</span> <span class="nf">_parse_slice</span><span class="p">()</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span>
|
||||
</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_slice</span><span class="p">()</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span>
|
||||
</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">_parse_literal</span><span class="p">()</span>
|
||||
</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">_parse_literal</span><span class="p">()</span> <span class="k">if</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> <span class="n">step</span> <span class="o">=</span> <span class="n">_parse_literal</span><span class="p">()</span> <span class="k">if</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
|
@ -199,7 +199,7 @@
|
|||
</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a>
|
||||
</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSlice</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="n">end</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="n">step</span><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">_parse_bracket</span><span class="p">()</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</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">_parse_bracket</span><span class="p">()</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">:</span>
|
||||
</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="n">_parse_slice</span><span class="p">()</span>
|
||||
</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a>
|
||||
</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">literal</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">or</span> <span class="n">literal</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">False</span><span class="p">:</span>
|
||||
|
@ -228,7 +228,7 @@
|
|||
</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a>
|
||||
</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="k">return</span> <span class="n">node</span>
|
||||
</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a>
|
||||
</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="k">def</span> <span class="nf">_parse_var_text</span><span class="p">()</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_var_text</span><span class="p">()</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a><span class="sd"> Consumes & returns the text for a var. In BigQuery it's valid to have a key with spaces</span>
|
||||
</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a><span class="sd"> in it, e.g JSON_QUERY(..., '$. a b c ') should produce a single JSONPathKey(' a b c ').</span>
|
||||
|
@ -322,7 +322,7 @@
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#JSONPathTokenizer"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathTokenizer-15"><a href="#JSONPathTokenizer-15"><span class="linenos">15</span></a><span class="k">class</span> <span class="nc">JSONPathTokenizer</span><span class="p">(</span><span class="n">Tokenizer</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathTokenizer-15"><a href="#JSONPathTokenizer-15"><span class="linenos">15</span></a><span class="k">class</span><span class="w"> </span><span class="nc">JSONPathTokenizer</span><span class="p">(</span><span class="n">Tokenizer</span><span class="p">):</span>
|
||||
</span><span id="JSONPathTokenizer-16"><a href="#JSONPathTokenizer-16"><span class="linenos">16</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="JSONPathTokenizer-17"><a href="#JSONPathTokenizer-17"><span class="linenos">17</span></a> <span class="s2">"("</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-18"><a href="#JSONPathTokenizer-18"><span class="linenos">18</span></a> <span class="s2">")"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span>
|
||||
|
@ -426,6 +426,7 @@
|
|||
<dd id="JSONPathTokenizer.NUMERIC_LITERALS" class="variable"><a href="tokens.html#Tokenizer.NUMERIC_LITERALS">NUMERIC_LITERALS</a></dd>
|
||||
<dd id="JSONPathTokenizer.COMMENTS" class="variable"><a href="tokens.html#Tokenizer.COMMENTS">COMMENTS</a></dd>
|
||||
<dd id="JSONPathTokenizer.dialect" class="variable"><a href="tokens.html#Tokenizer.dialect">dialect</a></dd>
|
||||
<dd id="JSONPathTokenizer.use_rs_tokenizer" class="variable"><a href="tokens.html#Tokenizer.use_rs_tokenizer">use_rs_tokenizer</a></dd>
|
||||
<dd id="JSONPathTokenizer.reset" class="function"><a href="tokens.html#Tokenizer.reset">reset</a></dd>
|
||||
<dd id="JSONPathTokenizer.tokenize" class="function"><a href="tokens.html#Tokenizer.tokenize">tokenize</a></dd>
|
||||
<dd id="JSONPathTokenizer.tokenize_rs" class="function"><a href="tokens.html#Tokenizer.tokenize_rs">tokenize_rs</a></dd>
|
||||
|
@ -448,9 +449,9 @@
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#parse"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="parse-41"><a href="#parse-41"><span class="linenos"> 41</span></a><span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="n">path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="parse-41"><a href="#parse-41"><span class="linenos"> 41</span></a><span class="k">def</span><span class="w"> </span><span class="nf">parse</span><span class="p">(</span><span class="n">path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">:</span>
|
||||
</span><span id="parse-42"><a href="#parse-42"><span class="linenos"> 42</span></a><span class="w"> </span><span class="sd">"""Takes in a JSON path string and parses it into a JSONPath expression."""</span>
|
||||
</span><span id="parse-43"><a href="#parse-43"><span class="linenos"> 43</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span>
|
||||
</span><span id="parse-43"><a href="#parse-43"><span class="linenos"> 43</span></a> <span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.dialects</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dialect</span>
|
||||
</span><span id="parse-44"><a href="#parse-44"><span class="linenos"> 44</span></a>
|
||||
</span><span id="parse-45"><a href="#parse-45"><span class="linenos"> 45</span></a> <span class="n">jsonpath_tokenizer</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span><span class="o">.</span><span class="n">jsonpath_tokenizer</span>
|
||||
</span><span id="parse-46"><a href="#parse-46"><span class="linenos"> 46</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="n">jsonpath_tokenizer</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
|
@ -458,36 +459,36 @@
|
|||
</span><span id="parse-48"><a href="#parse-48"><span class="linenos"> 48</span></a>
|
||||
</span><span id="parse-49"><a href="#parse-49"><span class="linenos"> 49</span></a> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
</span><span id="parse-50"><a href="#parse-50"><span class="linenos"> 50</span></a>
|
||||
</span><span id="parse-51"><a href="#parse-51"><span class="linenos"> 51</span></a> <span class="k">def</span> <span class="nf">_curr</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">TokenType</span><span class="p">]:</span>
|
||||
</span><span id="parse-51"><a href="#parse-51"><span class="linenos"> 51</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_curr</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">TokenType</span><span class="p">]:</span>
|
||||
</span><span id="parse-52"><a href="#parse-52"><span class="linenos"> 52</span></a> <span class="k">return</span> <span class="n">tokens</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">token_type</span> <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="n">size</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="parse-53"><a href="#parse-53"><span class="linenos"> 53</span></a>
|
||||
</span><span id="parse-54"><a href="#parse-54"><span class="linenos"> 54</span></a> <span class="k">def</span> <span class="nf">_prev</span><span class="p">()</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span>
|
||||
</span><span id="parse-54"><a href="#parse-54"><span class="linenos"> 54</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_prev</span><span class="p">()</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span>
|
||||
</span><span id="parse-55"><a href="#parse-55"><span class="linenos"> 55</span></a> <span class="k">return</span> <span class="n">tokens</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span>
|
||||
</span><span id="parse-56"><a href="#parse-56"><span class="linenos"> 56</span></a>
|
||||
</span><span id="parse-57"><a href="#parse-57"><span class="linenos"> 57</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">()</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span>
|
||||
</span><span id="parse-57"><a href="#parse-57"><span class="linenos"> 57</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_advance</span><span class="p">()</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span>
|
||||
</span><span id="parse-58"><a href="#parse-58"><span class="linenos"> 58</span></a> <span class="k">nonlocal</span> <span class="n">i</span>
|
||||
</span><span id="parse-59"><a href="#parse-59"><span class="linenos"> 59</span></a> <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
</span><span id="parse-60"><a href="#parse-60"><span class="linenos"> 60</span></a> <span class="k">return</span> <span class="n">_prev</span><span class="p">()</span>
|
||||
</span><span id="parse-61"><a href="#parse-61"><span class="linenos"> 61</span></a>
|
||||
</span><span id="parse-62"><a href="#parse-62"><span class="linenos"> 62</span></a> <span class="k">def</span> <span class="nf">_error</span><span class="p">(</span><span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="parse-62"><a href="#parse-62"><span class="linenos"> 62</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_error</span><span class="p">(</span><span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="parse-63"><a href="#parse-63"><span class="linenos"> 63</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">msg</span><span class="si">}</span><span class="s2"> at index </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">path</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="parse-64"><a href="#parse-64"><span class="linenos"> 64</span></a>
|
||||
</span><span id="parse-65"><a href="#parse-65"><span class="linenos"> 65</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span>
|
||||
</span><span id="parse-66"><a href="#parse-66"><span class="linenos"> 66</span></a> <span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">True</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span>
|
||||
</span><span id="parse-66"><a href="#parse-66"><span class="linenos"> 66</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">True</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span>
|
||||
</span><span id="parse-67"><a href="#parse-67"><span class="linenos"> 67</span></a> <span class="k">pass</span>
|
||||
</span><span id="parse-68"><a href="#parse-68"><span class="linenos"> 68</span></a>
|
||||
</span><span id="parse-69"><a href="#parse-69"><span class="linenos"> 69</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span>
|
||||
</span><span id="parse-70"><a href="#parse-70"><span class="linenos"> 70</span></a> <span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">False</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</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">Token</span><span class="p">]:</span>
|
||||
</span><span id="parse-70"><a href="#parse-70"><span class="linenos"> 70</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="p">:</span> <span class="n">Lit</span><span class="p">[</span><span class="kc">False</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</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">Token</span><span class="p">]:</span>
|
||||
</span><span id="parse-71"><a href="#parse-71"><span class="linenos"> 71</span></a> <span class="k">pass</span>
|
||||
</span><span id="parse-72"><a href="#parse-72"><span class="linenos"> 72</span></a>
|
||||
</span><span id="parse-73"><a href="#parse-73"><span class="linenos"> 73</span></a> <span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
</span><span id="parse-73"><a href="#parse-73"><span class="linenos"> 73</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
</span><span id="parse-74"><a href="#parse-74"><span class="linenos"> 74</span></a> <span class="k">if</span> <span class="n">_curr</span><span class="p">()</span> <span class="o">==</span> <span class="n">token_type</span><span class="p">:</span>
|
||||
</span><span id="parse-75"><a href="#parse-75"><span class="linenos"> 75</span></a> <span class="k">return</span> <span class="n">_advance</span><span class="p">()</span>
|
||||
</span><span id="parse-76"><a href="#parse-76"><span class="linenos"> 76</span></a> <span class="k">if</span> <span class="n">raise_unmatched</span><span class="p">:</span>
|
||||
</span><span id="parse-77"><a href="#parse-77"><span class="linenos"> 77</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="n">_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected </span><span class="si">{</span><span class="n">token_type</span><span class="si">}</span><span class="s2">"</span><span class="p">))</span>
|
||||
</span><span id="parse-78"><a href="#parse-78"><span class="linenos"> 78</span></a> <span class="k">return</span> <span class="kc">None</span>
|
||||
</span><span id="parse-79"><a href="#parse-79"><span class="linenos"> 79</span></a>
|
||||
</span><span id="parse-80"><a href="#parse-80"><span class="linenos"> 80</span></a> <span class="k">def</span> <span class="nf">_parse_literal</span><span class="p">()</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span>
|
||||
</span><span id="parse-80"><a href="#parse-80"><span class="linenos"> 80</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_literal</span><span class="p">()</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span>
|
||||
</span><span id="parse-81"><a href="#parse-81"><span class="linenos"> 81</span></a> <span class="n">token</span> <span class="o">=</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">)</span> <span class="ow">or</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span>
|
||||
</span><span id="parse-82"><a href="#parse-82"><span class="linenos"> 82</span></a> <span class="k">if</span> <span class="n">token</span><span class="p">:</span>
|
||||
</span><span id="parse-83"><a href="#parse-83"><span class="linenos"> 83</span></a> <span class="k">return</span> <span class="n">token</span><span class="o">.</span><span class="n">text</span>
|
||||
|
@ -518,7 +519,7 @@
|
|||
</span><span id="parse-108"><a href="#parse-108"><span class="linenos">108</span></a>
|
||||
</span><span id="parse-109"><a href="#parse-109"><span class="linenos">109</span></a> <span class="k">return</span> <span class="kc">False</span>
|
||||
</span><span id="parse-110"><a href="#parse-110"><span class="linenos">110</span></a>
|
||||
</span><span id="parse-111"><a href="#parse-111"><span class="linenos">111</span></a> <span class="k">def</span> <span class="nf">_parse_slice</span><span class="p">()</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span>
|
||||
</span><span id="parse-111"><a href="#parse-111"><span class="linenos">111</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_slice</span><span class="p">()</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span>
|
||||
</span><span id="parse-112"><a href="#parse-112"><span class="linenos">112</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">_parse_literal</span><span class="p">()</span>
|
||||
</span><span id="parse-113"><a href="#parse-113"><span class="linenos">113</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">_parse_literal</span><span class="p">()</span> <span class="k">if</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="parse-114"><a href="#parse-114"><span class="linenos">114</span></a> <span class="n">step</span> <span class="o">=</span> <span class="n">_parse_literal</span><span class="p">()</span> <span class="k">if</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
|
@ -528,7 +529,7 @@
|
|||
</span><span id="parse-118"><a href="#parse-118"><span class="linenos">118</span></a>
|
||||
</span><span id="parse-119"><a href="#parse-119"><span class="linenos">119</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSlice</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="n">end</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="n">step</span><span class="p">)</span>
|
||||
</span><span id="parse-120"><a href="#parse-120"><span class="linenos">120</span></a>
|
||||
</span><span id="parse-121"><a href="#parse-121"><span class="linenos">121</span></a> <span class="k">def</span> <span class="nf">_parse_bracket</span><span class="p">()</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">:</span>
|
||||
</span><span id="parse-121"><a href="#parse-121"><span class="linenos">121</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_bracket</span><span class="p">()</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">:</span>
|
||||
</span><span id="parse-122"><a href="#parse-122"><span class="linenos">122</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="n">_parse_slice</span><span class="p">()</span>
|
||||
</span><span id="parse-123"><a href="#parse-123"><span class="linenos">123</span></a>
|
||||
</span><span id="parse-124"><a href="#parse-124"><span class="linenos">124</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">literal</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">or</span> <span class="n">literal</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">False</span><span class="p">:</span>
|
||||
|
@ -557,7 +558,7 @@
|
|||
</span><span id="parse-147"><a href="#parse-147"><span class="linenos">147</span></a>
|
||||
</span><span id="parse-148"><a href="#parse-148"><span class="linenos">148</span></a> <span class="k">return</span> <span class="n">node</span>
|
||||
</span><span id="parse-149"><a href="#parse-149"><span class="linenos">149</span></a>
|
||||
</span><span id="parse-150"><a href="#parse-150"><span class="linenos">150</span></a> <span class="k">def</span> <span class="nf">_parse_var_text</span><span class="p">()</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="parse-150"><a href="#parse-150"><span class="linenos">150</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_parse_var_text</span><span class="p">()</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="parse-151"><a href="#parse-151"><span class="linenos">151</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="parse-152"><a href="#parse-152"><span class="linenos">152</span></a><span class="sd"> Consumes & returns the text for a var. In BigQuery it's valid to have a key with spaces</span>
|
||||
</span><span id="parse-153"><a href="#parse-153"><span class="linenos">153</span></a><span class="sd"> in it, e.g JSON_QUERY(..., '$. a b c ') should produce a single JSONPathKey(' a b c ').</span>
|
||||
|
@ -640,7 +641,7 @@
|
|||
<div class="attr variable">
|
||||
<span class="name">ALL_JSON_PATH_PARTS</span> =
|
||||
<input id="ALL_JSON_PATH_PARTS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
<label class="view-value-button pdoc-button" for="ALL_JSON_PATH_PARTS-view-value"></label><span class="default_value">{<class '<a href="expressions.html#JSONPathScript">sqlglot.expressions.JSONPathScript</a>'>, <class '<a href="expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>, <class '<a href="expressions.html#JSONPathRecursive">sqlglot.expressions.JSONPathRecursive</a>'>, <class '<a href="expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>, <class '<a href="expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</a>'>, <class '<a href="expressions.html#JSONPathFilter">sqlglot.expressions.JSONPathFilter</a>'>, <class '<a href="expressions.html#JSONPathUnion">sqlglot.expressions.JSONPathUnion</a>'>, <class '<a href="expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>, <class '<a href="expressions.html#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>'>, <class '<a href="expressions.html#JSONPathSlice">sqlglot.expressions.JSONPathSlice</a>'>}</span>
|
||||
<label class="view-value-button pdoc-button" for="ALL_JSON_PATH_PARTS-view-value"></label><span class="default_value">{<class '<a href="expressions.html#JSONPathRecursive">sqlglot.expressions.JSONPathRecursive</a>'>, <class '<a href="expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>, <class '<a href="expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</a>'>, <class '<a href="expressions.html#JSONPathFilter">sqlglot.expressions.JSONPathFilter</a>'>, <class '<a href="expressions.html#JSONPathUnion">sqlglot.expressions.JSONPathUnion</a>'>, <class '<a href="expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>, <class '<a href="expressions.html#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>'>, <class '<a href="expressions.html#JSONPathSlice">sqlglot.expressions.JSONPathSlice</a>'>, <class '<a href="expressions.html#JSONPathScript">sqlglot.expressions.JSONPathScript</a>'>, <class '<a href="expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>}</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue