Adding upstream version 25.5.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
147b6e06e8
commit
4e506fbac7
136 changed files with 80990 additions and 72541 deletions
File diff suppressed because one or more lines are too long
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot 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>
|
||||
|
@ -195,7 +195,7 @@
|
|||
<p>What happened to sqlglot.dataframe?</p>
|
||||
|
||||
<ul>
|
||||
<li>The PySpark dataframe api was moved to a standalone library called <a href="https://github.com/eakmanrq/sqlframe">sqlframe</a> in v24. It now allows you to run queries as opposed to just generate SQL.</li>
|
||||
<li>The PySpark dataframe api was moved to a standalone library called <a href="https://github.com/eakmanrq/sqlframe">SQLFrame</a> in v24. It now allows you to run queries as opposed to just generate SQL.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="examples">Examples</h2>
|
||||
|
@ -642,7 +642,7 @@
|
|||
<li><a href="https://github.com/pinterest/querybook">Querybook</a></li>
|
||||
<li><a href="https://github.com/marsupialtail/quokka">Quokka</a></li>
|
||||
<li><a href="https://github.com/moj-analytical-services/splink">Splink</a></li>
|
||||
<li><a href="https://github.com/eakmanrq/sqlframe">sqlframe</a></li>
|
||||
<li><a href="https://github.com/eakmanrq/sqlframe">SQLFrame</a></li>
|
||||
</ul>
|
||||
|
||||
<h2 id="documentation">Documentation</h2>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot._typing 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot._version 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>
|
||||
|
@ -76,8 +76,8 @@
|
|||
</span><span id="L-12"><a href="#L-12"><span class="linenos">12</span></a><span class="n">__version_tuple__</span><span class="p">:</span> <span class="n">VERSION_TUPLE</span>
|
||||
</span><span id="L-13"><a href="#L-13"><span class="linenos">13</span></a><span class="n">version_tuple</span><span class="p">:</span> <span class="n">VERSION_TUPLE</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">__version__</span> <span class="o">=</span> <span class="n">version</span> <span class="o">=</span> <span class="s1">'25.0.3'</span>
|
||||
</span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a><span class="n">__version_tuple__</span> <span class="o">=</span> <span class="n">version_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
|
||||
</span><span id="L-15"><a href="#L-15"><span class="linenos">15</span></a><span class="n">__version__</span> <span class="o">=</span> <span class="n">version</span> <span class="o">=</span> <span class="s1">'25.5.0'</span>
|
||||
</span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a><span class="n">__version_tuple__</span> <span class="o">=</span> <span class="n">version_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -97,7 +97,7 @@
|
|||
<section id="version">
|
||||
<div class="attr variable">
|
||||
<span class="name">version</span><span class="annotation">: str</span> =
|
||||
<span class="default_value">'25.0.3'</span>
|
||||
<span class="default_value">'25.5.0'</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -109,7 +109,7 @@
|
|||
<section id="version_tuple">
|
||||
<div class="attr variable">
|
||||
<span class="name">version_tuple</span><span class="annotation">: object</span> =
|
||||
<span class="default_value">(25, 0, 3)</span>
|
||||
<span class="default_value">(25, 5, 0)</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.dialects 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>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.dialects.risingwave 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>
|
||||
|
@ -45,15 +45,24 @@
|
|||
<li>
|
||||
<a class="variable" href="#RisingWave.Generator.TRY_SUPPORTED">TRY_SUPPORTED</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="variable" href="#RisingWave.Generator.SUPPORTS_UESCAPE">SUPPORTS_UESCAPE</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="variable" href="#RisingWave.Generator.AFTER_HAVING_MODIFIER_TRANSFORMS">AFTER_HAVING_MODIFIER_TRANSFORMS</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a class="variable" href="#RisingWave.SUPPORTS_COLUMN_JOIN_MARKS">SUPPORTS_COLUMN_JOIN_MARKS</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="variable" href="#RisingWave.tokenizer_class">tokenizer_class</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="variable" href="#RisingWave.jsonpath_tokenizer_class">jsonpath_tokenizer_class</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="variable" href="#RisingWave.parser_class">parser_class</a>
|
||||
</li>
|
||||
|
@ -72,6 +81,12 @@
|
|||
<li>
|
||||
<a class="variable" href="#RisingWave.INVERSE_TIME_TRIE">INVERSE_TIME_TRIE</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="variable" href="#RisingWave.INVERSE_FORMAT_MAPPING">INVERSE_FORMAT_MAPPING</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="variable" href="#RisingWave.INVERSE_FORMAT_TRIE">INVERSE_FORMAT_TRIE</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="variable" href="#RisingWave.ESCAPED_SEQUENCES">ESCAPED_SEQUENCES</a>
|
||||
</li>
|
||||
|
@ -166,6 +181,20 @@
|
|||
|
||||
|
||||
|
||||
<div id="RisingWave.SUPPORTS_COLUMN_JOIN_MARKS" class="classattr">
|
||||
<div class="attr variable">
|
||||
<span class="name">SUPPORTS_COLUMN_JOIN_MARKS</span> =
|
||||
<span class="default_value">False</span>
|
||||
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#RisingWave.SUPPORTS_COLUMN_JOIN_MARKS"></a>
|
||||
|
||||
<div class="docstring"><p>Whether the old-style outer join (+) syntax is supported.</p>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div id="RisingWave.tokenizer_class" class="classattr">
|
||||
<div class="attr variable">
|
||||
<span class="name">tokenizer_class</span> =
|
||||
|
@ -177,6 +206,18 @@
|
|||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="RisingWave.jsonpath_tokenizer_class" class="classattr">
|
||||
<div class="attr variable">
|
||||
<span class="name">jsonpath_tokenizer_class</span> =
|
||||
<span class="default_value"><class 'sqlglot.tokens.JSONPathTokenizer'></span>
|
||||
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#RisingWave.jsonpath_tokenizer_class"></a>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="RisingWave.parser_class" class="classattr">
|
||||
<div class="attr variable">
|
||||
|
@ -253,6 +294,30 @@
|
|||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="RisingWave.INVERSE_FORMAT_MAPPING" class="classattr">
|
||||
<div class="attr variable">
|
||||
<span class="name">INVERSE_FORMAT_MAPPING</span><span class="annotation">: Dict[str, str]</span> =
|
||||
<span class="default_value">{}</span>
|
||||
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#RisingWave.INVERSE_FORMAT_MAPPING"></a>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="RisingWave.INVERSE_FORMAT_TRIE" class="classattr">
|
||||
<div class="attr variable">
|
||||
<span class="name">INVERSE_FORMAT_TRIE</span><span class="annotation">: Dict</span> =
|
||||
<span class="default_value">{}</span>
|
||||
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#RisingWave.INVERSE_FORMAT_TRIE"></a>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="RisingWave.ESCAPED_SEQUENCES" class="classattr">
|
||||
<div class="attr variable">
|
||||
|
@ -424,6 +489,7 @@
|
|||
<dd id="RisingWave.STRICT_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd>
|
||||
<dd id="RisingWave.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="dialect.html#Dialect.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
|
||||
<dd id="RisingWave.SUPPORTS_SEMI_ANTI_JOIN" class="variable"><a href="dialect.html#Dialect.SUPPORTS_SEMI_ANTI_JOIN">SUPPORTS_SEMI_ANTI_JOIN</a></dd>
|
||||
<dd id="RisingWave.COPY_PARAMS_ARE_CSV" class="variable"><a href="dialect.html#Dialect.COPY_PARAMS_ARE_CSV">COPY_PARAMS_ARE_CSV</a></dd>
|
||||
<dd id="RisingWave.NORMALIZE_FUNCTIONS" class="variable"><a href="dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd>
|
||||
<dd id="RisingWave.LOG_BASE_FIRST" class="variable"><a href="dialect.html#Dialect.LOG_BASE_FIRST">LOG_BASE_FIRST</a></dd>
|
||||
<dd id="RisingWave.SAFE_DIVISION" class="variable"><a href="dialect.html#Dialect.SAFE_DIVISION">SAFE_DIVISION</a></dd>
|
||||
|
@ -434,9 +500,12 @@
|
|||
<dd id="RisingWave.UNESCAPED_SEQUENCES" class="variable"><a href="dialect.html#Dialect.UNESCAPED_SEQUENCES">UNESCAPED_SEQUENCES</a></dd>
|
||||
<dd id="RisingWave.PSEUDOCOLUMNS" class="variable"><a href="dialect.html#Dialect.PSEUDOCOLUMNS">PSEUDOCOLUMNS</a></dd>
|
||||
<dd id="RisingWave.PREFER_CTE_ALIAS_COLUMN" class="variable"><a href="dialect.html#Dialect.PREFER_CTE_ALIAS_COLUMN">PREFER_CTE_ALIAS_COLUMN</a></dd>
|
||||
<dd id="RisingWave.COPY_PARAMS_ARE_CSV" class="variable"><a href="dialect.html#Dialect.COPY_PARAMS_ARE_CSV">COPY_PARAMS_ARE_CSV</a></dd>
|
||||
<dd id="RisingWave.FORCE_EARLY_ALIAS_REF_EXPANSION" class="variable"><a href="dialect.html#Dialect.FORCE_EARLY_ALIAS_REF_EXPANSION">FORCE_EARLY_ALIAS_REF_EXPANSION</a></dd>
|
||||
<dd id="RisingWave.EXPAND_ALIAS_REFS_EARLY_ONLY_IN_GROUP_BY" class="variable"><a href="dialect.html#Dialect.EXPAND_ALIAS_REFS_EARLY_ONLY_IN_GROUP_BY">EXPAND_ALIAS_REFS_EARLY_ONLY_IN_GROUP_BY</a></dd>
|
||||
<dd id="RisingWave.DATE_PART_MAPPING" class="variable"><a href="dialect.html#Dialect.DATE_PART_MAPPING">DATE_PART_MAPPING</a></dd>
|
||||
<dd id="RisingWave.get_or_raise" class="function"><a href="dialect.html#Dialect.get_or_raise">get_or_raise</a></dd>
|
||||
<dd id="RisingWave.format_time" class="function"><a href="dialect.html#Dialect.format_time">format_time</a></dd>
|
||||
<dd id="RisingWave.settings" class="variable"><a href="dialect.html#Dialect.settings">settings</a></dd>
|
||||
<dd id="RisingWave.normalize_identifier" class="function"><a href="dialect.html#Dialect.normalize_identifier">normalize_identifier</a></dd>
|
||||
<dd id="RisingWave.case_sensitive" class="function"><a href="dialect.html#Dialect.case_sensitive">case_sensitive</a></dd>
|
||||
<dd id="RisingWave.can_identify" class="function"><a href="dialect.html#Dialect.can_identify">can_identify</a></dd>
|
||||
|
@ -448,6 +517,7 @@
|
|||
<dd id="RisingWave.transpile" class="function"><a href="dialect.html#Dialect.transpile">transpile</a></dd>
|
||||
<dd id="RisingWave.tokenize" class="function"><a href="dialect.html#Dialect.tokenize">tokenize</a></dd>
|
||||
<dd id="RisingWave.tokenizer" class="variable"><a href="dialect.html#Dialect.tokenizer">tokenizer</a></dd>
|
||||
<dd id="RisingWave.jsonpath_tokenizer" class="variable"><a href="dialect.html#Dialect.jsonpath_tokenizer">jsonpath_tokenizer</a></dd>
|
||||
<dd id="RisingWave.parser" class="function"><a href="dialect.html#Dialect.parser">parser</a></dd>
|
||||
<dd id="RisingWave.generator" class="function"><a href="dialect.html#Dialect.generator">generator</a></dd>
|
||||
|
||||
|
@ -559,6 +629,18 @@ Default: True</li>
|
|||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="RisingWave.Generator.SUPPORTS_UESCAPE" class="classattr">
|
||||
<div class="attr variable">
|
||||
<span class="name">SUPPORTS_UESCAPE</span> =
|
||||
<span class="default_value">False</span>
|
||||
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#RisingWave.Generator.SUPPORTS_UESCAPE"></a>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="RisingWave.Generator.AFTER_HAVING_MODIFIER_TRANSFORMS" class="classattr">
|
||||
<div class="attr variable">
|
||||
|
@ -579,7 +661,7 @@ Default: True</li>
|
|||
<dd id="RisingWave.Generator.__init__" class="function"><a href="../generator.html#Generator.__init__">Generator</a></dd>
|
||||
<dd id="RisingWave.Generator.NULL_ORDERING_SUPPORTED" class="variable"><a href="../generator.html#Generator.NULL_ORDERING_SUPPORTED">NULL_ORDERING_SUPPORTED</a></dd>
|
||||
<dd id="RisingWave.Generator.IGNORE_NULLS_IN_FUNC" class="variable"><a href="../generator.html#Generator.IGNORE_NULLS_IN_FUNC">IGNORE_NULLS_IN_FUNC</a></dd>
|
||||
<dd id="RisingWave.Generator.EXPLICIT_UNION" class="variable"><a href="../generator.html#Generator.EXPLICIT_UNION">EXPLICIT_UNION</a></dd>
|
||||
<dd id="RisingWave.Generator.EXPLICIT_SET_OP" class="variable"><a href="../generator.html#Generator.EXPLICIT_SET_OP">EXPLICIT_SET_OP</a></dd>
|
||||
<dd id="RisingWave.Generator.WRAP_DERIVED_VALUES" class="variable"><a href="../generator.html#Generator.WRAP_DERIVED_VALUES">WRAP_DERIVED_VALUES</a></dd>
|
||||
<dd id="RisingWave.Generator.CREATE_FUNCTION_RETURN_AS" class="variable"><a href="../generator.html#Generator.CREATE_FUNCTION_RETURN_AS">CREATE_FUNCTION_RETURN_AS</a></dd>
|
||||
<dd id="RisingWave.Generator.MATCHED_BY_SOURCE" class="variable"><a href="../generator.html#Generator.MATCHED_BY_SOURCE">MATCHED_BY_SOURCE</a></dd>
|
||||
|
@ -593,7 +675,6 @@ Default: True</li>
|
|||
<dd id="RisingWave.Generator.DUPLICATE_KEY_UPDATE_WITH_SET" class="variable"><a href="../generator.html#Generator.DUPLICATE_KEY_UPDATE_WITH_SET">DUPLICATE_KEY_UPDATE_WITH_SET</a></dd>
|
||||
<dd id="RisingWave.Generator.LIMIT_IS_TOP" class="variable"><a href="../generator.html#Generator.LIMIT_IS_TOP">LIMIT_IS_TOP</a></dd>
|
||||
<dd id="RisingWave.Generator.RETURNING_END" class="variable"><a href="../generator.html#Generator.RETURNING_END">RETURNING_END</a></dd>
|
||||
<dd id="RisingWave.Generator.COLUMN_JOIN_MARKS_SUPPORTED" class="variable"><a href="../generator.html#Generator.COLUMN_JOIN_MARKS_SUPPORTED">COLUMN_JOIN_MARKS_SUPPORTED</a></dd>
|
||||
<dd id="RisingWave.Generator.EXTRACT_ALLOWS_QUOTES" class="variable"><a href="../generator.html#Generator.EXTRACT_ALLOWS_QUOTES">EXTRACT_ALLOWS_QUOTES</a></dd>
|
||||
<dd id="RisingWave.Generator.TZ_TO_WITH_TIME_ZONE" class="variable"><a href="../generator.html#Generator.TZ_TO_WITH_TIME_ZONE">TZ_TO_WITH_TIME_ZONE</a></dd>
|
||||
<dd id="RisingWave.Generator.VALUES_AS_TABLE" class="variable"><a href="../generator.html#Generator.VALUES_AS_TABLE">VALUES_AS_TABLE</a></dd>
|
||||
|
@ -620,12 +701,14 @@ Default: True</li>
|
|||
<dd id="RisingWave.Generator.JSON_PATH_BRACKETED_KEY_SUPPORTED" class="variable"><a href="../generator.html#Generator.JSON_PATH_BRACKETED_KEY_SUPPORTED">JSON_PATH_BRACKETED_KEY_SUPPORTED</a></dd>
|
||||
<dd id="RisingWave.Generator.JSON_PATH_SINGLE_QUOTE_ESCAPE" class="variable"><a href="../generator.html#Generator.JSON_PATH_SINGLE_QUOTE_ESCAPE">JSON_PATH_SINGLE_QUOTE_ESCAPE</a></dd>
|
||||
<dd id="RisingWave.Generator.SUPPORTS_TO_NUMBER" class="variable"><a href="../generator.html#Generator.SUPPORTS_TO_NUMBER">SUPPORTS_TO_NUMBER</a></dd>
|
||||
<dd id="RisingWave.Generator.OUTER_UNION_MODIFIERS" class="variable"><a href="../generator.html#Generator.OUTER_UNION_MODIFIERS">OUTER_UNION_MODIFIERS</a></dd>
|
||||
<dd id="RisingWave.Generator.SET_OP_MODIFIERS" class="variable"><a href="../generator.html#Generator.SET_OP_MODIFIERS">SET_OP_MODIFIERS</a></dd>
|
||||
<dd id="RisingWave.Generator.COPY_PARAMS_ARE_WRAPPED" class="variable"><a href="../generator.html#Generator.COPY_PARAMS_ARE_WRAPPED">COPY_PARAMS_ARE_WRAPPED</a></dd>
|
||||
<dd id="RisingWave.Generator.COPY_PARAMS_EQ_REQUIRED" class="variable"><a href="../generator.html#Generator.COPY_PARAMS_EQ_REQUIRED">COPY_PARAMS_EQ_REQUIRED</a></dd>
|
||||
<dd id="RisingWave.Generator.STAR_EXCEPT" class="variable"><a href="../generator.html#Generator.STAR_EXCEPT">STAR_EXCEPT</a></dd>
|
||||
<dd id="RisingWave.Generator.HEX_FUNC" class="variable"><a href="../generator.html#Generator.HEX_FUNC">HEX_FUNC</a></dd>
|
||||
<dd id="RisingWave.Generator.WITH_PROPERTIES_PREFIX" class="variable"><a href="../generator.html#Generator.WITH_PROPERTIES_PREFIX">WITH_PROPERTIES_PREFIX</a></dd>
|
||||
<dd id="RisingWave.Generator.QUOTE_JSON_PATH" class="variable"><a href="../generator.html#Generator.QUOTE_JSON_PATH">QUOTE_JSON_PATH</a></dd>
|
||||
<dd id="RisingWave.Generator.PARSE_JSON_NAME" class="variable"><a href="../generator.html#Generator.PARSE_JSON_NAME">PARSE_JSON_NAME</a></dd>
|
||||
<dd id="RisingWave.Generator.TIME_PART_SINGULARS" class="variable"><a href="../generator.html#Generator.TIME_PART_SINGULARS">TIME_PART_SINGULARS</a></dd>
|
||||
<dd id="RisingWave.Generator.TOKEN_MAPPING" class="variable"><a href="../generator.html#Generator.TOKEN_MAPPING">TOKEN_MAPPING</a></dd>
|
||||
<dd id="RisingWave.Generator.STRUCT_DELIMITER" class="variable"><a href="../generator.html#Generator.STRUCT_DELIMITER">STRUCT_DELIMITER</a></dd>
|
||||
|
@ -784,6 +867,7 @@ Default: True</li>
|
|||
<dd id="RisingWave.Generator.matchrecognizemeasure_sql" class="function"><a href="../generator.html#Generator.matchrecognizemeasure_sql">matchrecognizemeasure_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.matchrecognize_sql" class="function"><a href="../generator.html#Generator.matchrecognize_sql">matchrecognize_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.query_modifiers" class="function"><a href="../generator.html#Generator.query_modifiers">query_modifiers</a></dd>
|
||||
<dd id="RisingWave.Generator.options_modifier" class="function"><a href="../generator.html#Generator.options_modifier">options_modifier</a></dd>
|
||||
<dd id="RisingWave.Generator.queryoption_sql" class="function"><a href="../generator.html#Generator.queryoption_sql">queryoption_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.offset_limit_modifiers" class="function"><a href="../generator.html#Generator.offset_limit_modifiers">offset_limit_modifiers</a></dd>
|
||||
<dd id="RisingWave.Generator.after_limit_modifiers" class="function"><a href="../generator.html#Generator.after_limit_modifiers">after_limit_modifiers</a></dd>
|
||||
|
@ -861,7 +945,6 @@ Default: True</li>
|
|||
<dd id="RisingWave.Generator.bitwiseor_sql" class="function"><a href="../generator.html#Generator.bitwiseor_sql">bitwiseor_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.bitwiserightshift_sql" class="function"><a href="../generator.html#Generator.bitwiserightshift_sql">bitwiserightshift_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.bitwisexor_sql" class="function"><a href="../generator.html#Generator.bitwisexor_sql">bitwisexor_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.cast_sql" class="function"><a href="../generator.html#Generator.cast_sql">cast_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.currentdate_sql" class="function"><a href="../generator.html#Generator.currentdate_sql">currentdate_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.currenttimestamp_sql" class="function"><a href="../generator.html#Generator.currenttimestamp_sql">currenttimestamp_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.collate_sql" class="function"><a href="../generator.html#Generator.collate_sql">collate_sql</a></dd>
|
||||
|
@ -972,6 +1055,14 @@ Default: True</li>
|
|||
<dd id="RisingWave.Generator.datadeletionproperty_sql" class="function"><a href="../generator.html#Generator.datadeletionproperty_sql">datadeletionproperty_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.maskingpolicycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.maskingpolicycolumnconstraint_sql">maskingpolicycolumnconstraint_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.gapfill_sql" class="function"><a href="../generator.html#Generator.gapfill_sql">gapfill_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.scope_resolution" class="function"><a href="../generator.html#Generator.scope_resolution">scope_resolution</a></dd>
|
||||
<dd id="RisingWave.Generator.scoperesolution_sql" class="function"><a href="../generator.html#Generator.scoperesolution_sql">scoperesolution_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.parsejson_sql" class="function"><a href="../generator.html#Generator.parsejson_sql">parsejson_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.length_sql" class="function"><a href="../generator.html#Generator.length_sql">length_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.rand_sql" class="function"><a href="../generator.html#Generator.rand_sql">rand_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.strtodate_sql" class="function"><a href="../generator.html#Generator.strtodate_sql">strtodate_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.strtotime_sql" class="function"><a href="../generator.html#Generator.strtotime_sql">strtotime_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.changes_sql" class="function"><a href="../generator.html#Generator.changes_sql">changes_sql</a></dd>
|
||||
|
||||
</div>
|
||||
<div><dt><a href="postgres.html#Postgres.Generator">sqlglot.dialects.postgres.Postgres.Generator</a></dt>
|
||||
|
@ -1002,6 +1093,7 @@ Default: True</li>
|
|||
<dd id="RisingWave.Generator.matchagainst_sql" class="function"><a href="postgres.html#Postgres.Generator.matchagainst_sql">matchagainst_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.alterset_sql" class="function"><a href="postgres.html#Postgres.Generator.alterset_sql">alterset_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.datatype_sql" class="function"><a href="postgres.html#Postgres.Generator.datatype_sql">datatype_sql</a></dd>
|
||||
<dd id="RisingWave.Generator.cast_sql" class="function"><a href="postgres.html#Postgres.Generator.cast_sql">cast_sql</a></dd>
|
||||
|
||||
</div>
|
||||
</dl>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.diff 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.errors 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.executor 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.executor.context 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.executor.env 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>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.executor.table 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>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.helper 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>
|
||||
|
@ -1893,7 +1893,7 @@ belong to some totally-ordered set.</p>
|
|||
<section id="DATE_UNITS">
|
||||
<div class="attr variable">
|
||||
<span class="name">DATE_UNITS</span> =
|
||||
<span class="default_value">{'quarter', 'month', 'year', 'year_month', 'week', 'day'}</span>
|
||||
<span class="default_value">{'day', 'year', 'quarter', 'month', 'week', 'year_month'}</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.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>
|
||||
|
@ -90,193 +90,197 @@
|
|||
</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><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-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="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="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</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-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">R_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">L_BRACKET</span><span class="p">,</span>
|
||||
</span><span id="L-18"><a href="#L-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_BRACKET</span><span class="p">,</span>
|
||||
</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a> <span class="s2">":"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span>
|
||||
</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a> <span class="s2">","</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span>
|
||||
</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a> <span class="s2">"-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">,</span>
|
||||
</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> <span class="s2">"."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span>
|
||||
</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a> <span class="s2">"?"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">,</span>
|
||||
</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> <span class="s2">"@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span>
|
||||
</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a> <span class="s2">"'"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUOTE</span><span class="p">,</span>
|
||||
</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a> <span class="s1">'"'</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUOTE</span><span class="p">,</span>
|
||||
</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOLLAR</span><span class="p">,</span>
|
||||
</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="s2">"*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span>
|
||||
</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> <span class="p">}</span>
|
||||
</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a>
|
||||
</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> <span class="s2">".."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span>
|
||||
</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> <span class="p">}</span>
|
||||
</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a>
|
||||
</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> <span class="n">IDENTIFIER_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-36"><a href="#L-36"><span class="linenos"> 36</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-37"><a href="#L-37"><span class="linenos"> 37</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-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>
|
||||
</span><span id="L-18"><a href="#L-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">L_BRACKET</span><span class="p">,</span>
|
||||
</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a> <span class="s2">"]"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span>
|
||||
</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a> <span class="s2">":"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span>
|
||||
</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a> <span class="s2">","</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span>
|
||||
</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> <span class="s2">"-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">,</span>
|
||||
</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a> <span class="s2">"."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span>
|
||||
</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> <span class="s2">"?"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">,</span>
|
||||
</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a> <span class="s2">"@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span>
|
||||
</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a> <span class="s2">"'"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUOTE</span><span class="p">,</span>
|
||||
</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a> <span class="s1">'"'</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUOTE</span><span class="p">,</span>
|
||||
</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOLLAR</span><span class="p">,</span>
|
||||
</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> <span class="s2">"*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span>
|
||||
</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="p">}</span>
|
||||
</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a>
|
||||
</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> <span class="s2">".."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span>
|
||||
</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a> <span class="p">}</span>
|
||||
</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a>
|
||||
</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="n">IDENTIFIER_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-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 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="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="w"> </span><span class="sd">"""Takes in a JSON path string and parses it into a JSONPath expression."""</span>
|
||||
</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="n">JSONPathTokenizer</span><span class="p">()</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tokens</span><span class="p">)</span>
|
||||
</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-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-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">i</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a>
|
||||
</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</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-47"><a href="#L-47"><span class="linenos"> 47</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-48"><a href="#L-48"><span class="linenos"> 48</span></a>
|
||||
</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</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-50"><a href="#L-50"><span class="linenos"> 50</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-51"><a href="#L-51"><span class="linenos"> 51</span></a>
|
||||
</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</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-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="k">nonlocal</span> <span class="n">i</span>
|
||||
</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="k">return</span> <span class="n">_prev</span><span class="p">()</span>
|
||||
</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a>
|
||||
</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</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-58"><a href="#L-58"><span class="linenos"> 58</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-59"><a href="#L-59"><span class="linenos"> 59</span></a>
|
||||
</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span>
|
||||
</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</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-62"><a href="#L-62"><span class="linenos"> 62</span></a> <span class="k">pass</span>
|
||||
</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>
|
||||
</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a> <span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tokens</span><span class="p">)</span>
|
||||
</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-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-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-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-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">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-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-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="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-69"><a href="#L-69"><span class="linenos"> 69</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-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="k">return</span> <span class="n">_advance</span><span class="p">()</span>
|
||||
</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="k">if</span> <span class="n">raise_unmatched</span><span class="p">:</span>
|
||||
</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</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-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="k">return</span> <span class="kc">None</span>
|
||||
</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a>
|
||||
</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</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-76"><a href="#L-76"><span class="linenos"> 76</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-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="k">if</span> <span class="n">token</span><span class="p">:</span>
|
||||
</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="k">return</span> <span class="n">token</span><span class="o">.</span><span class="n">text</span>
|
||||
</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <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">STAR</span><span class="p">):</span>
|
||||
</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</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">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</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">L_PAREN</span><span class="p">):</span>
|
||||
</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="n">script</span> <span class="o">=</span> <span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span> <span class="o">==</span> <span class="s2">"("</span>
|
||||
</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">i</span>
|
||||
</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a>
|
||||
</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
||||
</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <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">L_BRACKET</span><span class="p">):</span>
|
||||
</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="n">_parse_bracket</span><span class="p">()</span> <span class="c1"># nested call which we can throw away</span>
|
||||
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="k">if</span> <span class="n">_curr</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="k">break</span>
|
||||
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="n">_advance</span><span class="p">()</span>
|
||||
</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a>
|
||||
</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="n">expr_type</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathScript</span> <span class="k">if</span> <span class="n">script</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathFilter</span>
|
||||
</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="k">return</span> <span class="n">expr_type</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">path</span><span class="p">[</span><span class="n">tokens</span><span class="p">[</span><span class="n">start</span><span class="p">]</span><span class="o">.</span><span class="n">start</span> <span class="p">:</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">end</span><span class="p">])</span>
|
||||
</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a>
|
||||
</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="n">number</span> <span class="o">=</span> <span class="s2">"-"</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">DASH</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a>
|
||||
</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</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">NUMBER</span><span class="p">)</span>
|
||||
</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="k">if</span> <span class="n">token</span><span class="p">:</span>
|
||||
</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="n">number</span> <span class="o">+=</span> <span class="n">token</span><span class="o">.</span><span class="n">text</span>
|
||||
</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-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-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-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>
|
||||
</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <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">STAR</span><span class="p">):</span>
|
||||
</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">()</span>
|
||||
</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <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">PLACEHOLDER</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">L_PAREN</span><span class="p">):</span>
|
||||
</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="n">script</span> <span class="o">=</span> <span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span> <span class="o">==</span> <span class="s2">"("</span>
|
||||
</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">i</span>
|
||||
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a>
|
||||
</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
||||
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <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">L_BRACKET</span><span class="p">):</span>
|
||||
</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="n">_parse_bracket</span><span class="p">()</span> <span class="c1"># nested call which we can throw away</span>
|
||||
</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="k">if</span> <span class="n">_curr</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="k">break</span>
|
||||
</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="n">_advance</span><span class="p">()</span>
|
||||
</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a>
|
||||
</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="n">expr_type</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathScript</span> <span class="k">if</span> <span class="n">script</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathFilter</span>
|
||||
</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="k">return</span> <span class="n">expr_type</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">path</span><span class="p">[</span><span class="n">tokens</span><span class="p">[</span><span class="n">start</span><span class="p">]</span><span class="o">.</span><span class="n">start</span> <span class="p">:</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">end</span><span class="p">])</span>
|
||||
</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a>
|
||||
</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="n">number</span> <span class="o">=</span> <span class="s2">"-"</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">DASH</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a>
|
||||
</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="k">if</span> <span class="n">number</span><span class="p">:</span>
|
||||
</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">number</span><span class="p">)</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">return</span> <span class="kc">False</span>
|
||||
</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a>
|
||||
</span><span id="L-106"><a href="#L-106"><span class="linenos">106</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-107"><a href="#L-107"><span class="linenos">107</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-108"><a href="#L-108"><span class="linenos">108</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-109"><a href="#L-109"><span class="linenos">109</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>
|
||||
</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a>
|
||||
</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> <span class="k">if</span> <span class="n">end</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">step</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> <span class="k">return</span> <span class="n">start</span>
|
||||
</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a>
|
||||
</span><span id="L-114"><a href="#L-114"><span class="linenos">114</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-115"><a href="#L-115"><span class="linenos">115</span></a>
|
||||
</span><span id="L-116"><a href="#L-116"><span class="linenos">116</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-117"><a href="#L-117"><span class="linenos">117</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-118"><a href="#L-118"><span class="linenos">118</span></a>
|
||||
</span><span id="L-119"><a href="#L-119"><span class="linenos">119</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>
|
||||
</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="p">[</span><span class="n">literal</span><span class="p">]</span>
|
||||
</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="k">while</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span>
|
||||
</span><span id="L-122"><a href="#L-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="L-123"><a href="#L-123"><span class="linenos">123</span></a>
|
||||
</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="k">if</span> <span class="n">literal</span><span class="p">:</span>
|
||||
</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="n">indexes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">literal</span><span class="p">)</span>
|
||||
</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a>
|
||||
</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">indexes</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="L-128"><a href="#L-128"><span class="linenos">128</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><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">literal</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span>
|
||||
</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="n">literal</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathScript</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathFilter</span><span class="p">)</span>
|
||||
</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="p">):</span>
|
||||
</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSelector</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathUnion</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">indexes</span><span class="p">)</span>
|
||||
</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-139"><a href="#L-139"><span class="linenos">139</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="s2">"Cannot have empty segment"</span><span class="p">))</span>
|
||||
</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a>
|
||||
</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a>
|
||||
</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="k">return</span> <span class="n">node</span>
|
||||
</span><span id="L-101"><a href="#L-101"><span class="linenos">101</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">NUMBER</span><span class="p">)</span>
|
||||
</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="k">if</span> <span class="n">token</span><span class="p">:</span>
|
||||
</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a> <span class="n">number</span> <span class="o">+=</span> <span class="n">token</span><span class="o">.</span><span class="n">text</span>
|
||||
</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a>
|
||||
</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a> <span class="k">if</span> <span class="n">number</span><span class="p">:</span>
|
||||
</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a> <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">number</span><span class="p">)</span>
|
||||
</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-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>
|
||||
</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a>
|
||||
</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> <span class="k">if</span> <span class="n">end</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">step</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="k">return</span> <span class="n">start</span>
|
||||
</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-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>
|
||||
</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="p">[</span><span class="n">literal</span><span class="p">]</span>
|
||||
</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="k">while</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span>
|
||||
</span><span id="L-126"><a href="#L-126"><span class="linenos">126</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-127"><a href="#L-127"><span class="linenos">127</span></a>
|
||||
</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="k">if</span> <span class="n">literal</span><span class="p">:</span>
|
||||
</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="n">indexes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">literal</span><span class="p">)</span>
|
||||
</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a>
|
||||
</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">indexes</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="L-132"><a href="#L-132"><span class="linenos">132</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><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">literal</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span>
|
||||
</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="n">literal</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathScript</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathFilter</span><span class="p">)</span>
|
||||
</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="p">):</span>
|
||||
</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSelector</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathUnion</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">indexes</span><span class="p">)</span>
|
||||
</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-143"><a href="#L-143"><span class="linenos">143</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="s2">"Cannot have empty segment"</span><span class="p">))</span>
|
||||
</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a>
|
||||
</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="c1"># We canonicalize the JSON path AST so that it always starts with a</span>
|
||||
</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="c1"># "root" element, so paths like "field" will be generated as "$.field"</span>
|
||||
</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOLLAR</span><span class="p">)</span>
|
||||
</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="n">expressions</span><span class="p">:</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">JSONPathPart</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">()]</span>
|
||||
</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a>
|
||||
</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="k">while</span> <span class="n">_curr</span><span class="p">():</span>
|
||||
</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <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">DOT</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">COLON</span><span class="p">):</span>
|
||||
</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span> <span class="o">==</span> <span class="s2">".."</span>
|
||||
</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</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="c1"># We canonicalize the JSON path AST so that it always starts with a</span>
|
||||
</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="c1"># "root" element, so paths like "field" will be generated as "$.field"</span>
|
||||
</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOLLAR</span><span class="p">)</span>
|
||||
</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="n">expressions</span><span class="p">:</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">JSONPathPart</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">()]</span>
|
||||
</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a>
|
||||
</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <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">VAR</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-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">]</span> <span class="o">=</span> <span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span>
|
||||
</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span>
|
||||
</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">()</span>
|
||||
</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="n">value</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a>
|
||||
</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="k">if</span> <span class="n">recursive</span><span class="p">:</span>
|
||||
</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRecursive</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">))</span>
|
||||
</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="k">elif</span> <span class="n">value</span><span class="p">:</span>
|
||||
</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">))</span>
|
||||
</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-166"><a href="#L-166"><span class="linenos">166</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="s2">"Expected key name or * after DOT"</span><span class="p">))</span>
|
||||
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">):</span>
|
||||
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_parse_bracket</span><span class="p">())</span>
|
||||
</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</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-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
|
||||
</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span>
|
||||
</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">())</span>
|
||||
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-174"><a href="#L-174"><span class="linenos">174</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">"Unexpected </span><span class="si">{</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="si">}</span><span class="s2">"</span><span class="p">))</span>
|
||||
</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a>
|
||||
</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span>
|
||||
</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a>
|
||||
</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a>
|
||||
</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a><span class="n">JSON_PATH_PART_TRANSFORMS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Type</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="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[</span><span class="o">...</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathFilter</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">_</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"?</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
||||
</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_jsonpathkey_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
|
||||
</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRecursive</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">_</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"..</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
||||
</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"$"</span><span class="p">,</span>
|
||||
</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathScript</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">_</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
||||
</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSelector</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span><span class="p">,</span>
|
||||
</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSlice</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">":"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="s2">""</span> <span class="k">if</span> <span class="n">p</span> <span class="ow">is</span> <span class="kc">False</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
|
||||
</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="p">[</span><span class="n">e</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">"start"</span><span class="p">),</span> <span class="n">e</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">"end"</span><span class="p">),</span> <span class="n">e</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">"step"</span><span class="p">)]</span>
|
||||
</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> <span class="k">if</span> <span class="n">p</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
|
||||
</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a> <span class="p">),</span>
|
||||
</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_jsonpathsubscript_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
|
||||
</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathUnion</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="s1">','</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">p</span><span class="p">)</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span><span class="p">,</span>
|
||||
</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"*"</span><span class="p">,</span>
|
||||
</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a><span class="p">}</span>
|
||||
</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a>
|
||||
</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a><span class="n">ALL_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">JSON_PATH_PART_TRANSFORMS</span><span class="p">)</span>
|
||||
</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="k">while</span> <span class="n">_curr</span><span class="p">():</span>
|
||||
</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <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">DOT</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">COLON</span><span class="p">):</span>
|
||||
</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span> <span class="o">==</span> <span class="s2">".."</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">if</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</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-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">]</span> <span class="o">=</span> <span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span>
|
||||
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span>
|
||||
</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">()</span>
|
||||
</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="n">value</span> <span class="o">=</span> <span class="kc">None</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">if</span> <span class="n">recursive</span><span class="p">:</span>
|
||||
</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRecursive</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">))</span>
|
||||
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="k">elif</span> <span class="n">value</span><span class="p">:</span>
|
||||
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">))</span>
|
||||
</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-170"><a href="#L-170"><span class="linenos">170</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="s2">"Expected key name or * after DOT"</span><span class="p">))</span>
|
||||
</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">):</span>
|
||||
</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_parse_bracket</span><span class="p">())</span>
|
||||
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</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-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
|
||||
</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span>
|
||||
</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">())</span>
|
||||
</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-178"><a href="#L-178"><span class="linenos">178</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">"Unexpected </span><span class="si">{</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="si">}</span><span class="s2">"</span><span class="p">))</span>
|
||||
</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a>
|
||||
</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span>
|
||||
</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a>
|
||||
</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a>
|
||||
</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a><span class="n">JSON_PATH_PART_TRANSFORMS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Type</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="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[</span><span class="o">...</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathFilter</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">_</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"?</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
||||
</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_jsonpathkey_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
|
||||
</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRecursive</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">_</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"..</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
||||
</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"$"</span><span class="p">,</span>
|
||||
</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathScript</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">_</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
||||
</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSelector</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span><span class="p">,</span>
|
||||
</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSlice</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">":"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="s2">""</span> <span class="k">if</span> <span class="n">p</span> <span class="ow">is</span> <span class="kc">False</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
|
||||
</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="p">[</span><span class="n">e</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">"start"</span><span class="p">),</span> <span class="n">e</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">"end"</span><span class="p">),</span> <span class="n">e</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">"step"</span><span class="p">)]</span>
|
||||
</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="k">if</span> <span class="n">p</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
|
||||
</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> <span class="p">),</span>
|
||||
</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_jsonpathsubscript_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
|
||||
</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathUnion</span><span class="p">:</span> <span class="k">lambda</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="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="s1">','</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">json_path_part</span><span class="p">(</span><span class="n">p</span><span class="p">)</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span><span class="si">}</span><span class="s2">]"</span><span class="p">,</span>
|
||||
</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">"*"</span><span class="p">,</span>
|
||||
</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a><span class="p">}</span>
|
||||
</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a>
|
||||
</span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a><span class="n">ALL_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">JSON_PATH_PART_TRANSFORMS</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -292,30 +296,30 @@
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#JSONPathTokenizer"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="JSONPathTokenizer-14"><a href="#JSONPathTokenizer-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="JSONPathTokenizer-15"><a href="#JSONPathTokenizer-15"><span class="linenos">15</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="JSONPathTokenizer-16"><a href="#JSONPathTokenizer-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="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">R_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">L_BRACKET</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-19"><a href="#JSONPathTokenizer-19"><span class="linenos">19</span></a> <span class="s2">"]"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-20"><a href="#JSONPathTokenizer-20"><span class="linenos">20</span></a> <span class="s2">":"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-21"><a href="#JSONPathTokenizer-21"><span class="linenos">21</span></a> <span class="s2">","</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-22"><a href="#JSONPathTokenizer-22"><span class="linenos">22</span></a> <span class="s2">"-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-23"><a href="#JSONPathTokenizer-23"><span class="linenos">23</span></a> <span class="s2">"."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-24"><a href="#JSONPathTokenizer-24"><span class="linenos">24</span></a> <span class="s2">"?"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-25"><a href="#JSONPathTokenizer-25"><span class="linenos">25</span></a> <span class="s2">"@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-26"><a href="#JSONPathTokenizer-26"><span class="linenos">26</span></a> <span class="s2">"'"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUOTE</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-27"><a href="#JSONPathTokenizer-27"><span class="linenos">27</span></a> <span class="s1">'"'</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUOTE</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-28"><a href="#JSONPathTokenizer-28"><span class="linenos">28</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOLLAR</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-29"><a href="#JSONPathTokenizer-29"><span class="linenos">29</span></a> <span class="s2">"*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-30"><a href="#JSONPathTokenizer-30"><span class="linenos">30</span></a> <span class="p">}</span>
|
||||
</span><span id="JSONPathTokenizer-31"><a href="#JSONPathTokenizer-31"><span class="linenos">31</span></a>
|
||||
</span><span id="JSONPathTokenizer-32"><a href="#JSONPathTokenizer-32"><span class="linenos">32</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="JSONPathTokenizer-33"><a href="#JSONPathTokenizer-33"><span class="linenos">33</span></a> <span class="s2">".."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-34"><a href="#JSONPathTokenizer-34"><span class="linenos">34</span></a> <span class="p">}</span>
|
||||
</span><span id="JSONPathTokenizer-35"><a href="#JSONPathTokenizer-35"><span class="linenos">35</span></a>
|
||||
</span><span id="JSONPathTokenizer-36"><a href="#JSONPathTokenizer-36"><span class="linenos">36</span></a> <span class="n">IDENTIFIER_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="JSONPathTokenizer-37"><a href="#JSONPathTokenizer-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>
|
||||
<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>
|
||||
</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>
|
||||
</span><span id="JSONPathTokenizer-19"><a href="#JSONPathTokenizer-19"><span class="linenos">19</span></a> <span class="s2">"["</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-20"><a href="#JSONPathTokenizer-20"><span class="linenos">20</span></a> <span class="s2">"]"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-21"><a href="#JSONPathTokenizer-21"><span class="linenos">21</span></a> <span class="s2">":"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-22"><a href="#JSONPathTokenizer-22"><span class="linenos">22</span></a> <span class="s2">","</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-23"><a href="#JSONPathTokenizer-23"><span class="linenos">23</span></a> <span class="s2">"-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-24"><a href="#JSONPathTokenizer-24"><span class="linenos">24</span></a> <span class="s2">"."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-25"><a href="#JSONPathTokenizer-25"><span class="linenos">25</span></a> <span class="s2">"?"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-26"><a href="#JSONPathTokenizer-26"><span class="linenos">26</span></a> <span class="s2">"@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-27"><a href="#JSONPathTokenizer-27"><span class="linenos">27</span></a> <span class="s2">"'"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUOTE</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-28"><a href="#JSONPathTokenizer-28"><span class="linenos">28</span></a> <span class="s1">'"'</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUOTE</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-29"><a href="#JSONPathTokenizer-29"><span class="linenos">29</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOLLAR</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-30"><a href="#JSONPathTokenizer-30"><span class="linenos">30</span></a> <span class="s2">"*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-31"><a href="#JSONPathTokenizer-31"><span class="linenos">31</span></a> <span class="p">}</span>
|
||||
</span><span id="JSONPathTokenizer-32"><a href="#JSONPathTokenizer-32"><span class="linenos">32</span></a>
|
||||
</span><span id="JSONPathTokenizer-33"><a href="#JSONPathTokenizer-33"><span class="linenos">33</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="JSONPathTokenizer-34"><a href="#JSONPathTokenizer-34"><span class="linenos">34</span></a> <span class="s2">".."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span>
|
||||
</span><span id="JSONPathTokenizer-35"><a href="#JSONPathTokenizer-35"><span class="linenos">35</span></a> <span class="p">}</span>
|
||||
</span><span id="JSONPathTokenizer-36"><a href="#JSONPathTokenizer-36"><span class="linenos">36</span></a>
|
||||
</span><span id="JSONPathTokenizer-37"><a href="#JSONPathTokenizer-37"><span class="linenos">37</span></a> <span class="n">IDENTIFIER_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="JSONPathTokenizer-38"><a href="#JSONPathTokenizer-38"><span class="linenos">38</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></pre></div>
|
||||
|
||||
|
||||
|
@ -386,6 +390,7 @@
|
|||
<dd id="JSONPathTokenizer.VAR_SINGLE_TOKENS" class="variable"><a href="tokens.html#Tokenizer.VAR_SINGLE_TOKENS">VAR_SINGLE_TOKENS</a></dd>
|
||||
<dd id="JSONPathTokenizer.HEREDOC_TAG_IS_IDENTIFIER" class="variable"><a href="tokens.html#Tokenizer.HEREDOC_TAG_IS_IDENTIFIER">HEREDOC_TAG_IS_IDENTIFIER</a></dd>
|
||||
<dd id="JSONPathTokenizer.HEREDOC_STRING_ALTERNATIVE" class="variable"><a href="tokens.html#Tokenizer.HEREDOC_STRING_ALTERNATIVE">HEREDOC_STRING_ALTERNATIVE</a></dd>
|
||||
<dd id="JSONPathTokenizer.STRING_ESCAPES_ALLOWED_IN_RAW_STRINGS" class="variable"><a href="tokens.html#Tokenizer.STRING_ESCAPES_ALLOWED_IN_RAW_STRINGS">STRING_ESCAPES_ALLOWED_IN_RAW_STRINGS</a></dd>
|
||||
<dd id="JSONPathTokenizer.WHITE_SPACE" class="variable"><a href="tokens.html#Tokenizer.WHITE_SPACE">WHITE_SPACE</a></dd>
|
||||
<dd id="JSONPathTokenizer.COMMANDS" class="variable"><a href="tokens.html#Tokenizer.COMMANDS">COMMANDS</a></dd>
|
||||
<dd id="JSONPathTokenizer.COMMAND_PREFIX_TOKENS" class="variable"><a href="tokens.html#Tokenizer.COMMAND_PREFIX_TOKENS">COMMAND_PREFIX_TOKENS</a></dd>
|
||||
|
@ -408,150 +413,153 @@
|
|||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">parse</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">path</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">) -> <span class="n"><a href="expressions.html#JSONPath">sqlglot.expressions.JSONPath</a></span>:</span></span>
|
||||
<span class="name">parse</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="n">dialect</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n"><a href="dialects/dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></span><span class="p">,</span> <span class="n">Type</span><span class="p">[</span><span class="n"><a href="dialects/dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></span><span class="p">],</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="expressions.html#JSONPath">sqlglot.expressions.JSONPath</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="parse-view-source"><span>View Source</span></label>
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#parse"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="parse-40"><a href="#parse-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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">:</span>
|
||||
</span><span id="parse-41"><a href="#parse-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="parse-42"><a href="#parse-42"><span class="linenos"> 42</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="n">JSONPathTokenizer</span><span class="p">()</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</span><span id="parse-43"><a href="#parse-43"><span class="linenos"> 43</span></a> <span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tokens</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="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-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">i</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
</span><span id="parse-46"><a href="#parse-46"><span class="linenos"> 46</span></a>
|
||||
</span><span id="parse-47"><a href="#parse-47"><span class="linenos"> 47</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-48"><a href="#parse-48"><span class="linenos"> 48</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-49"><a href="#parse-49"><span class="linenos"> 49</span></a>
|
||||
</span><span id="parse-50"><a href="#parse-50"><span class="linenos"> 50</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-51"><a href="#parse-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="o">-</span> <span class="mi">1</span><span class="p">]</span>
|
||||
</span><span id="parse-52"><a href="#parse-52"><span class="linenos"> 52</span></a>
|
||||
</span><span id="parse-53"><a href="#parse-53"><span class="linenos"> 53</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-54"><a href="#parse-54"><span class="linenos"> 54</span></a> <span class="k">nonlocal</span> <span class="n">i</span>
|
||||
</span><span id="parse-55"><a href="#parse-55"><span class="linenos"> 55</span></a> <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
</span><span id="parse-56"><a href="#parse-56"><span class="linenos"> 56</span></a> <span class="k">return</span> <span class="n">_prev</span><span class="p">()</span>
|
||||
</span><span id="parse-57"><a href="#parse-57"><span class="linenos"> 57</span></a>
|
||||
</span><span id="parse-58"><a href="#parse-58"><span class="linenos"> 58</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-59"><a href="#parse-59"><span class="linenos"> 59</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-60"><a href="#parse-60"><span class="linenos"> 60</span></a>
|
||||
</span><span id="parse-61"><a href="#parse-61"><span class="linenos"> 61</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span>
|
||||
</span><span id="parse-62"><a href="#parse-62"><span class="linenos"> 62</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-63"><a href="#parse-63"><span class="linenos"> 63</span></a> <span class="k">pass</span>
|
||||
</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>
|
||||
</span><span id="parse-47"><a href="#parse-47"><span class="linenos"> 47</span></a> <span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tokens</span><span class="p">)</span>
|
||||
</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-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-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-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-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">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-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-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="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-70"><a href="#parse-70"><span class="linenos"> 70</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-71"><a href="#parse-71"><span class="linenos"> 71</span></a> <span class="k">return</span> <span class="n">_advance</span><span class="p">()</span>
|
||||
</span><span id="parse-72"><a href="#parse-72"><span class="linenos"> 72</span></a> <span class="k">if</span> <span class="n">raise_unmatched</span><span class="p">:</span>
|
||||
</span><span id="parse-73"><a href="#parse-73"><span class="linenos"> 73</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-74"><a href="#parse-74"><span class="linenos"> 74</span></a> <span class="k">return</span> <span class="kc">None</span>
|
||||
</span><span id="parse-75"><a href="#parse-75"><span class="linenos"> 75</span></a>
|
||||
</span><span id="parse-76"><a href="#parse-76"><span class="linenos"> 76</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-77"><a href="#parse-77"><span class="linenos"> 77</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-78"><a href="#parse-78"><span class="linenos"> 78</span></a> <span class="k">if</span> <span class="n">token</span><span class="p">:</span>
|
||||
</span><span id="parse-79"><a href="#parse-79"><span class="linenos"> 79</span></a> <span class="k">return</span> <span class="n">token</span><span class="o">.</span><span class="n">text</span>
|
||||
</span><span id="parse-80"><a href="#parse-80"><span class="linenos"> 80</span></a> <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">STAR</span><span class="p">):</span>
|
||||
</span><span id="parse-81"><a href="#parse-81"><span class="linenos"> 81</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</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">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</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">L_PAREN</span><span class="p">):</span>
|
||||
</span><span id="parse-83"><a href="#parse-83"><span class="linenos"> 83</span></a> <span class="n">script</span> <span class="o">=</span> <span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span> <span class="o">==</span> <span class="s2">"("</span>
|
||||
</span><span id="parse-84"><a href="#parse-84"><span class="linenos"> 84</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">i</span>
|
||||
</span><span id="parse-85"><a href="#parse-85"><span class="linenos"> 85</span></a>
|
||||
</span><span id="parse-86"><a href="#parse-86"><span class="linenos"> 86</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
||||
</span><span id="parse-87"><a href="#parse-87"><span class="linenos"> 87</span></a> <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">L_BRACKET</span><span class="p">):</span>
|
||||
</span><span id="parse-88"><a href="#parse-88"><span class="linenos"> 88</span></a> <span class="n">_parse_bracket</span><span class="p">()</span> <span class="c1"># nested call which we can throw away</span>
|
||||
</span><span id="parse-89"><a href="#parse-89"><span class="linenos"> 89</span></a> <span class="k">if</span> <span class="n">_curr</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="parse-90"><a href="#parse-90"><span class="linenos"> 90</span></a> <span class="k">break</span>
|
||||
</span><span id="parse-91"><a href="#parse-91"><span class="linenos"> 91</span></a> <span class="n">_advance</span><span class="p">()</span>
|
||||
</span><span id="parse-92"><a href="#parse-92"><span class="linenos"> 92</span></a>
|
||||
</span><span id="parse-93"><a href="#parse-93"><span class="linenos"> 93</span></a> <span class="n">expr_type</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathScript</span> <span class="k">if</span> <span class="n">script</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathFilter</span>
|
||||
</span><span id="parse-94"><a href="#parse-94"><span class="linenos"> 94</span></a> <span class="k">return</span> <span class="n">expr_type</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">path</span><span class="p">[</span><span class="n">tokens</span><span class="p">[</span><span class="n">start</span><span class="p">]</span><span class="o">.</span><span class="n">start</span> <span class="p">:</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">end</span><span class="p">])</span>
|
||||
</span><span id="parse-95"><a href="#parse-95"><span class="linenos"> 95</span></a>
|
||||
</span><span id="parse-96"><a href="#parse-96"><span class="linenos"> 96</span></a> <span class="n">number</span> <span class="o">=</span> <span class="s2">"-"</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">DASH</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="parse-97"><a href="#parse-97"><span class="linenos"> 97</span></a>
|
||||
</span><span id="parse-98"><a href="#parse-98"><span class="linenos"> 98</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">NUMBER</span><span class="p">)</span>
|
||||
</span><span id="parse-99"><a href="#parse-99"><span class="linenos"> 99</span></a> <span class="k">if</span> <span class="n">token</span><span class="p">:</span>
|
||||
</span><span id="parse-100"><a href="#parse-100"><span class="linenos">100</span></a> <span class="n">number</span> <span class="o">+=</span> <span class="n">token</span><span class="o">.</span><span class="n">text</span>
|
||||
</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-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-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-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>
|
||||
</span><span id="parse-84"><a href="#parse-84"><span class="linenos"> 84</span></a> <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">STAR</span><span class="p">):</span>
|
||||
</span><span id="parse-85"><a href="#parse-85"><span class="linenos"> 85</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">()</span>
|
||||
</span><span id="parse-86"><a href="#parse-86"><span class="linenos"> 86</span></a> <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">PLACEHOLDER</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">L_PAREN</span><span class="p">):</span>
|
||||
</span><span id="parse-87"><a href="#parse-87"><span class="linenos"> 87</span></a> <span class="n">script</span> <span class="o">=</span> <span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span> <span class="o">==</span> <span class="s2">"("</span>
|
||||
</span><span id="parse-88"><a href="#parse-88"><span class="linenos"> 88</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">i</span>
|
||||
</span><span id="parse-89"><a href="#parse-89"><span class="linenos"> 89</span></a>
|
||||
</span><span id="parse-90"><a href="#parse-90"><span class="linenos"> 90</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
||||
</span><span id="parse-91"><a href="#parse-91"><span class="linenos"> 91</span></a> <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">L_BRACKET</span><span class="p">):</span>
|
||||
</span><span id="parse-92"><a href="#parse-92"><span class="linenos"> 92</span></a> <span class="n">_parse_bracket</span><span class="p">()</span> <span class="c1"># nested call which we can throw away</span>
|
||||
</span><span id="parse-93"><a href="#parse-93"><span class="linenos"> 93</span></a> <span class="k">if</span> <span class="n">_curr</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="parse-94"><a href="#parse-94"><span class="linenos"> 94</span></a> <span class="k">break</span>
|
||||
</span><span id="parse-95"><a href="#parse-95"><span class="linenos"> 95</span></a> <span class="n">_advance</span><span class="p">()</span>
|
||||
</span><span id="parse-96"><a href="#parse-96"><span class="linenos"> 96</span></a>
|
||||
</span><span id="parse-97"><a href="#parse-97"><span class="linenos"> 97</span></a> <span class="n">expr_type</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathScript</span> <span class="k">if</span> <span class="n">script</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathFilter</span>
|
||||
</span><span id="parse-98"><a href="#parse-98"><span class="linenos"> 98</span></a> <span class="k">return</span> <span class="n">expr_type</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">path</span><span class="p">[</span><span class="n">tokens</span><span class="p">[</span><span class="n">start</span><span class="p">]</span><span class="o">.</span><span class="n">start</span> <span class="p">:</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">end</span><span class="p">])</span>
|
||||
</span><span id="parse-99"><a href="#parse-99"><span class="linenos"> 99</span></a>
|
||||
</span><span id="parse-100"><a href="#parse-100"><span class="linenos">100</span></a> <span class="n">number</span> <span class="o">=</span> <span class="s2">"-"</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">DASH</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="parse-101"><a href="#parse-101"><span class="linenos">101</span></a>
|
||||
</span><span id="parse-102"><a href="#parse-102"><span class="linenos">102</span></a> <span class="k">if</span> <span class="n">number</span><span class="p">:</span>
|
||||
</span><span id="parse-103"><a href="#parse-103"><span class="linenos">103</span></a> <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">number</span><span class="p">)</span>
|
||||
</span><span id="parse-104"><a href="#parse-104"><span class="linenos">104</span></a>
|
||||
</span><span id="parse-105"><a href="#parse-105"><span class="linenos">105</span></a> <span class="k">return</span> <span class="kc">False</span>
|
||||
</span><span id="parse-106"><a href="#parse-106"><span class="linenos">106</span></a>
|
||||
</span><span id="parse-107"><a href="#parse-107"><span class="linenos">107</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-108"><a href="#parse-108"><span class="linenos">108</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-109"><a href="#parse-109"><span class="linenos">109</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-110"><a href="#parse-110"><span class="linenos">110</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>
|
||||
</span><span id="parse-111"><a href="#parse-111"><span class="linenos">111</span></a>
|
||||
</span><span id="parse-112"><a href="#parse-112"><span class="linenos">112</span></a> <span class="k">if</span> <span class="n">end</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">step</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="parse-113"><a href="#parse-113"><span class="linenos">113</span></a> <span class="k">return</span> <span class="n">start</span>
|
||||
</span><span id="parse-114"><a href="#parse-114"><span class="linenos">114</span></a>
|
||||
</span><span id="parse-115"><a href="#parse-115"><span class="linenos">115</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-116"><a href="#parse-116"><span class="linenos">116</span></a>
|
||||
</span><span id="parse-117"><a href="#parse-117"><span class="linenos">117</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-118"><a href="#parse-118"><span class="linenos">118</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-119"><a href="#parse-119"><span class="linenos">119</span></a>
|
||||
</span><span id="parse-120"><a href="#parse-120"><span class="linenos">120</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>
|
||||
</span><span id="parse-121"><a href="#parse-121"><span class="linenos">121</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="p">[</span><span class="n">literal</span><span class="p">]</span>
|
||||
</span><span id="parse-122"><a href="#parse-122"><span class="linenos">122</span></a> <span class="k">while</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span>
|
||||
</span><span id="parse-123"><a href="#parse-123"><span class="linenos">123</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-124"><a href="#parse-124"><span class="linenos">124</span></a>
|
||||
</span><span id="parse-125"><a href="#parse-125"><span class="linenos">125</span></a> <span class="k">if</span> <span class="n">literal</span><span class="p">:</span>
|
||||
</span><span id="parse-126"><a href="#parse-126"><span class="linenos">126</span></a> <span class="n">indexes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">literal</span><span class="p">)</span>
|
||||
</span><span id="parse-127"><a href="#parse-127"><span class="linenos">127</span></a>
|
||||
</span><span id="parse-128"><a href="#parse-128"><span class="linenos">128</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">indexes</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="parse-129"><a href="#parse-129"><span class="linenos">129</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><span id="parse-130"><a href="#parse-130"><span class="linenos">130</span></a> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="parse-131"><a href="#parse-131"><span class="linenos">131</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">literal</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span>
|
||||
</span><span id="parse-132"><a href="#parse-132"><span class="linenos">132</span></a> <span class="n">literal</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathScript</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathFilter</span><span class="p">)</span>
|
||||
</span><span id="parse-133"><a href="#parse-133"><span class="linenos">133</span></a> <span class="p">):</span>
|
||||
</span><span id="parse-134"><a href="#parse-134"><span class="linenos">134</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSelector</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="parse-135"><a href="#parse-135"><span class="linenos">135</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="parse-136"><a href="#parse-136"><span class="linenos">136</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="parse-137"><a href="#parse-137"><span class="linenos">137</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="parse-138"><a href="#parse-138"><span class="linenos">138</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathUnion</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">indexes</span><span class="p">)</span>
|
||||
</span><span id="parse-139"><a href="#parse-139"><span class="linenos">139</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="parse-140"><a href="#parse-140"><span class="linenos">140</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="s2">"Cannot have empty segment"</span><span class="p">))</span>
|
||||
</span><span id="parse-141"><a href="#parse-141"><span class="linenos">141</span></a>
|
||||
</span><span id="parse-142"><a href="#parse-142"><span class="linenos">142</span></a> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</span><span id="parse-143"><a href="#parse-143"><span class="linenos">143</span></a>
|
||||
</span><span id="parse-144"><a href="#parse-144"><span class="linenos">144</span></a> <span class="k">return</span> <span class="n">node</span>
|
||||
</span><span id="parse-102"><a href="#parse-102"><span class="linenos">102</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">NUMBER</span><span class="p">)</span>
|
||||
</span><span id="parse-103"><a href="#parse-103"><span class="linenos">103</span></a> <span class="k">if</span> <span class="n">token</span><span class="p">:</span>
|
||||
</span><span id="parse-104"><a href="#parse-104"><span class="linenos">104</span></a> <span class="n">number</span> <span class="o">+=</span> <span class="n">token</span><span class="o">.</span><span class="n">text</span>
|
||||
</span><span id="parse-105"><a href="#parse-105"><span class="linenos">105</span></a>
|
||||
</span><span id="parse-106"><a href="#parse-106"><span class="linenos">106</span></a> <span class="k">if</span> <span class="n">number</span><span class="p">:</span>
|
||||
</span><span id="parse-107"><a href="#parse-107"><span class="linenos">107</span></a> <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">number</span><span class="p">)</span>
|
||||
</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-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>
|
||||
</span><span id="parse-115"><a href="#parse-115"><span class="linenos">115</span></a>
|
||||
</span><span id="parse-116"><a href="#parse-116"><span class="linenos">116</span></a> <span class="k">if</span> <span class="n">end</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">step</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="parse-117"><a href="#parse-117"><span class="linenos">117</span></a> <span class="k">return</span> <span class="n">start</span>
|
||||
</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-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>
|
||||
</span><span id="parse-125"><a href="#parse-125"><span class="linenos">125</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="p">[</span><span class="n">literal</span><span class="p">]</span>
|
||||
</span><span id="parse-126"><a href="#parse-126"><span class="linenos">126</span></a> <span class="k">while</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span>
|
||||
</span><span id="parse-127"><a href="#parse-127"><span class="linenos">127</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-128"><a href="#parse-128"><span class="linenos">128</span></a>
|
||||
</span><span id="parse-129"><a href="#parse-129"><span class="linenos">129</span></a> <span class="k">if</span> <span class="n">literal</span><span class="p">:</span>
|
||||
</span><span id="parse-130"><a href="#parse-130"><span class="linenos">130</span></a> <span class="n">indexes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">literal</span><span class="p">)</span>
|
||||
</span><span id="parse-131"><a href="#parse-131"><span class="linenos">131</span></a>
|
||||
</span><span id="parse-132"><a href="#parse-132"><span class="linenos">132</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">indexes</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="parse-133"><a href="#parse-133"><span class="linenos">133</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><span id="parse-134"><a href="#parse-134"><span class="linenos">134</span></a> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="parse-135"><a href="#parse-135"><span class="linenos">135</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">literal</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathPart</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span>
|
||||
</span><span id="parse-136"><a href="#parse-136"><span class="linenos">136</span></a> <span class="n">literal</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathScript</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathFilter</span><span class="p">)</span>
|
||||
</span><span id="parse-137"><a href="#parse-137"><span class="linenos">137</span></a> <span class="p">):</span>
|
||||
</span><span id="parse-138"><a href="#parse-138"><span class="linenos">138</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSelector</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="parse-139"><a href="#parse-139"><span class="linenos">139</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="parse-140"><a href="#parse-140"><span class="linenos">140</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="parse-141"><a href="#parse-141"><span class="linenos">141</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="parse-142"><a href="#parse-142"><span class="linenos">142</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathUnion</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">indexes</span><span class="p">)</span>
|
||||
</span><span id="parse-143"><a href="#parse-143"><span class="linenos">143</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="parse-144"><a href="#parse-144"><span class="linenos">144</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="s2">"Cannot have empty segment"</span><span class="p">))</span>
|
||||
</span><span id="parse-145"><a href="#parse-145"><span class="linenos">145</span></a>
|
||||
</span><span id="parse-146"><a href="#parse-146"><span class="linenos">146</span></a> <span class="c1"># We canonicalize the JSON path AST so that it always starts with a</span>
|
||||
</span><span id="parse-147"><a href="#parse-147"><span class="linenos">147</span></a> <span class="c1"># "root" element, so paths like "field" will be generated as "$.field"</span>
|
||||
</span><span id="parse-148"><a href="#parse-148"><span class="linenos">148</span></a> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOLLAR</span><span class="p">)</span>
|
||||
</span><span id="parse-149"><a href="#parse-149"><span class="linenos">149</span></a> <span class="n">expressions</span><span class="p">:</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">JSONPathPart</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">()]</span>
|
||||
</span><span id="parse-150"><a href="#parse-150"><span class="linenos">150</span></a>
|
||||
</span><span id="parse-151"><a href="#parse-151"><span class="linenos">151</span></a> <span class="k">while</span> <span class="n">_curr</span><span class="p">():</span>
|
||||
</span><span id="parse-152"><a href="#parse-152"><span class="linenos">152</span></a> <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">DOT</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">COLON</span><span class="p">):</span>
|
||||
</span><span id="parse-153"><a href="#parse-153"><span class="linenos">153</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span> <span class="o">==</span> <span class="s2">".."</span>
|
||||
</span><span id="parse-146"><a href="#parse-146"><span class="linenos">146</span></a> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">raise_unmatched</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</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="c1"># We canonicalize the JSON path AST so that it always starts with a</span>
|
||||
</span><span id="parse-151"><a href="#parse-151"><span class="linenos">151</span></a> <span class="c1"># "root" element, so paths like "field" will be generated as "$.field"</span>
|
||||
</span><span id="parse-152"><a href="#parse-152"><span class="linenos">152</span></a> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOLLAR</span><span class="p">)</span>
|
||||
</span><span id="parse-153"><a href="#parse-153"><span class="linenos">153</span></a> <span class="n">expressions</span><span class="p">:</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">JSONPathPart</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">()]</span>
|
||||
</span><span id="parse-154"><a href="#parse-154"><span class="linenos">154</span></a>
|
||||
</span><span id="parse-155"><a href="#parse-155"><span class="linenos">155</span></a> <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">VAR</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-156"><a href="#parse-156"><span class="linenos">156</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">]</span> <span class="o">=</span> <span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span>
|
||||
</span><span id="parse-157"><a href="#parse-157"><span class="linenos">157</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span>
|
||||
</span><span id="parse-158"><a href="#parse-158"><span class="linenos">158</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">()</span>
|
||||
</span><span id="parse-159"><a href="#parse-159"><span class="linenos">159</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="parse-160"><a href="#parse-160"><span class="linenos">160</span></a> <span class="n">value</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="parse-161"><a href="#parse-161"><span class="linenos">161</span></a>
|
||||
</span><span id="parse-162"><a href="#parse-162"><span class="linenos">162</span></a> <span class="k">if</span> <span class="n">recursive</span><span class="p">:</span>
|
||||
</span><span id="parse-163"><a href="#parse-163"><span class="linenos">163</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRecursive</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">))</span>
|
||||
</span><span id="parse-164"><a href="#parse-164"><span class="linenos">164</span></a> <span class="k">elif</span> <span class="n">value</span><span class="p">:</span>
|
||||
</span><span id="parse-165"><a href="#parse-165"><span class="linenos">165</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">))</span>
|
||||
</span><span id="parse-166"><a href="#parse-166"><span class="linenos">166</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="parse-167"><a href="#parse-167"><span class="linenos">167</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="s2">"Expected key name or * after DOT"</span><span class="p">))</span>
|
||||
</span><span id="parse-168"><a href="#parse-168"><span class="linenos">168</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">):</span>
|
||||
</span><span id="parse-169"><a href="#parse-169"><span class="linenos">169</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_parse_bracket</span><span class="p">())</span>
|
||||
</span><span id="parse-170"><a href="#parse-170"><span class="linenos">170</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</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-171"><a href="#parse-171"><span class="linenos">171</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
|
||||
</span><span id="parse-172"><a href="#parse-172"><span class="linenos">172</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span>
|
||||
</span><span id="parse-173"><a href="#parse-173"><span class="linenos">173</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">())</span>
|
||||
</span><span id="parse-174"><a href="#parse-174"><span class="linenos">174</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="parse-175"><a href="#parse-175"><span class="linenos">175</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">"Unexpected </span><span class="si">{</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="si">}</span><span class="s2">"</span><span class="p">))</span>
|
||||
</span><span id="parse-176"><a href="#parse-176"><span class="linenos">176</span></a>
|
||||
</span><span id="parse-177"><a href="#parse-177"><span class="linenos">177</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span>
|
||||
</span><span id="parse-155"><a href="#parse-155"><span class="linenos">155</span></a> <span class="k">while</span> <span class="n">_curr</span><span class="p">():</span>
|
||||
</span><span id="parse-156"><a href="#parse-156"><span class="linenos">156</span></a> <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">DOT</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">COLON</span><span class="p">):</span>
|
||||
</span><span id="parse-157"><a href="#parse-157"><span class="linenos">157</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span> <span class="o">==</span> <span class="s2">".."</span>
|
||||
</span><span id="parse-158"><a href="#parse-158"><span class="linenos">158</span></a>
|
||||
</span><span id="parse-159"><a href="#parse-159"><span class="linenos">159</span></a> <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">VAR</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-160"><a href="#parse-160"><span class="linenos">160</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">]</span> <span class="o">=</span> <span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span>
|
||||
</span><span id="parse-161"><a href="#parse-161"><span class="linenos">161</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span>
|
||||
</span><span id="parse-162"><a href="#parse-162"><span class="linenos">162</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">()</span>
|
||||
</span><span id="parse-163"><a href="#parse-163"><span class="linenos">163</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="parse-164"><a href="#parse-164"><span class="linenos">164</span></a> <span class="n">value</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="parse-165"><a href="#parse-165"><span class="linenos">165</span></a>
|
||||
</span><span id="parse-166"><a href="#parse-166"><span class="linenos">166</span></a> <span class="k">if</span> <span class="n">recursive</span><span class="p">:</span>
|
||||
</span><span id="parse-167"><a href="#parse-167"><span class="linenos">167</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRecursive</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">))</span>
|
||||
</span><span id="parse-168"><a href="#parse-168"><span class="linenos">168</span></a> <span class="k">elif</span> <span class="n">value</span><span class="p">:</span>
|
||||
</span><span id="parse-169"><a href="#parse-169"><span class="linenos">169</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">))</span>
|
||||
</span><span id="parse-170"><a href="#parse-170"><span class="linenos">170</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="parse-171"><a href="#parse-171"><span class="linenos">171</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="s2">"Expected key name or * after DOT"</span><span class="p">))</span>
|
||||
</span><span id="parse-172"><a href="#parse-172"><span class="linenos">172</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">):</span>
|
||||
</span><span id="parse-173"><a href="#parse-173"><span class="linenos">173</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_parse_bracket</span><span class="p">())</span>
|
||||
</span><span id="parse-174"><a href="#parse-174"><span class="linenos">174</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</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-175"><a href="#parse-175"><span class="linenos">175</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">_prev</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
|
||||
</span><span id="parse-176"><a href="#parse-176"><span class="linenos">176</span></a> <span class="k">elif</span> <span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span>
|
||||
</span><span id="parse-177"><a href="#parse-177"><span class="linenos">177</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">())</span>
|
||||
</span><span id="parse-178"><a href="#parse-178"><span class="linenos">178</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="parse-179"><a href="#parse-179"><span class="linenos">179</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">"Unexpected </span><span class="si">{</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="si">}</span><span class="s2">"</span><span class="p">))</span>
|
||||
</span><span id="parse-180"><a href="#parse-180"><span class="linenos">180</span></a>
|
||||
</span><span id="parse-181"><a href="#parse-181"><span class="linenos">181</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPath</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -577,7 +585,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#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>, <class '<a href="expressions.html#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>'>, <class '<a href="expressions.html#JSONPathUnion">sqlglot.expressions.JSONPathUnion</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>'>, <class '<a href="expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</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#JSONPathFilter">sqlglot.expressions.JSONPathFilter</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#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>'>, <class '<a href="expressions.html#JSONPathSlice">sqlglot.expressions.JSONPathSlice</a>'>, <class '<a href="expressions.html#JSONPathUnion">sqlglot.expressions.JSONPathUnion</a>'>, <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#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>}</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.lineage 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>
|
||||
|
@ -270,217 +270,218 @@
|
|||
</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="n">reference_node_name</span><span class="o">=</span><span class="n">reference_node_name</span><span class="p">,</span>
|
||||
</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="n">trim_selects</span><span class="o">=</span><span class="n">trim_selects</span><span class="p">,</span>
|
||||
</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="p">)</span>
|
||||
</span><span id="L-155"><a href="#L-155"><span class="linenos">155</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">Union</span><span class="p">):</span>
|
||||
</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="n">upstream</span> <span class="o">=</span> <span class="n">upstream</span> <span class="ow">or</span> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s2">"UNION"</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">select</span><span class="p">)</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="n">index</span> <span class="o">=</span> <span class="p">(</span>
|
||||
</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="n">column</span>
|
||||
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span>
|
||||
</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="k">else</span> <span class="nb">next</span><span class="p">(</span>
|
||||
</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="p">(</span>
|
||||
</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="n">i</span>
|
||||
</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">select</span> <span class="ow">in</span> <span class="nb">enumerate</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">selects</span><span class="p">)</span>
|
||||
</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="k">if</span> <span class="n">select</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="o">==</span> <span class="n">column</span> <span class="ow">or</span> <span class="n">select</span><span class="o">.</span><span class="n">is_star</span>
|
||||
</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="p">),</span>
|
||||
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="c1"># mypy will not allow a None here, but a negative index should never be returned</span>
|
||||
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="p">)</span>
|
||||
</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <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">if</span> <span class="n">index</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Could not find </span><span class="si">{</span><span class="n">column</span><span class="si">}</span><span class="s2"> in </span><span class="si">{</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a>
|
||||
</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">union_scopes</span><span class="p">:</span>
|
||||
</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="n">index</span><span class="p">,</span>
|
||||
</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="n">scope</span><span class="o">=</span><span class="n">s</span><span class="p">,</span>
|
||||
</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> <span class="n">upstream</span><span class="o">=</span><span class="n">upstream</span><span class="p">,</span>
|
||||
</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="n">source_name</span><span class="o">=</span><span class="n">source_name</span><span class="p">,</span>
|
||||
</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="n">reference_node_name</span><span class="o">=</span><span class="n">reference_node_name</span><span class="p">,</span>
|
||||
</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="n">trim_selects</span><span class="o">=</span><span class="n">trim_selects</span><span class="p">,</span>
|
||||
</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="p">)</span>
|
||||
</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a>
|
||||
</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="k">return</span> <span class="n">upstream</span>
|
||||
</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a>
|
||||
</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="k">if</span> <span class="n">trim_selects</span> <span class="ow">and</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">Select</span><span class="p">):</span>
|
||||
</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="c1"># For better ergonomics in our node labels, replace the full select with</span>
|
||||
</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> <span class="c1"># a version that has only the column we care about.</span>
|
||||
</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a> <span class="c1"># "x", SELECT x, y FROM foo</span>
|
||||
</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="c1"># => "x", SELECT x FROM foo</span>
|
||||
</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</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="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
|
||||
</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a>
|
||||
</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="c1"># Create the node for this step in the lineage chain, and attach it to the previous one.</span>
|
||||
</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span>
|
||||
</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">scope_name</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">column</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">scope_name</span> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">column</span><span class="p">),</span>
|
||||
</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span>
|
||||
</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">select</span><span class="p">,</span>
|
||||
</span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a> <span class="n">source_name</span><span class="o">=</span><span class="n">source_name</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
||||
</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="n">reference_node_name</span><span class="o">=</span><span class="n">reference_node_name</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
||||
</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="p">)</span>
|
||||
</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a>
|
||||
</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a> <span class="k">if</span> <span class="n">upstream</span><span class="p">:</span>
|
||||
</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="n">upstream</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a>
|
||||
</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a> <span class="n">subquery_scopes</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">subquery_scope</span><span class="o">.</span><span class="n">expression</span><span class="p">):</span> <span class="n">subquery_scope</span> <span class="k">for</span> <span class="n">subquery_scope</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">subquery_scopes</span>
|
||||
</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="p">}</span>
|
||||
</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a>
|
||||
</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="k">for</span> <span class="n">subquery</span> <span class="ow">in</span> <span class="n">find_all_in_scope</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UNWRAPPED_QUERIES</span><span class="p">):</span>
|
||||
</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="n">subquery_scope</span> <span class="o">=</span> <span class="n">subquery_scopes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="n">subquery</span><span class="p">))</span>
|
||||
</span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">subquery_scope</span><span class="p">:</span>
|
||||
</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown subquery scope: </span><span class="si">{</span><span class="n">subquery</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a>
|
||||
</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">subquery</span><span class="o">.</span><span class="n">named_selects</span><span class="p">:</span>
|
||||
</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="n">name</span><span class="p">,</span>
|
||||
</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> <span class="n">scope</span><span class="o">=</span><span class="n">subquery_scope</span><span class="p">,</span>
|
||||
</span><span id="L-222"><a href="#L-222"><span class="linenos">222</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a> <span class="n">upstream</span><span class="o">=</span><span class="n">node</span><span class="p">,</span>
|
||||
</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="n">trim_selects</span><span class="o">=</span><span class="n">trim_selects</span><span class="p">,</span>
|
||||
</span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a> <span class="p">)</span>
|
||||
</span><span id="L-226"><a href="#L-226"><span class="linenos">226</span></a>
|
||||
</span><span id="L-227"><a href="#L-227"><span class="linenos">227</span></a> <span class="c1"># if the select is a star add all scope sources as downstreams</span>
|
||||
</span><span id="L-228"><a href="#L-228"><span class="linenos">228</span></a> <span class="k">if</span> <span class="n">select</span><span class="o">.</span><span class="n">is_star</span><span class="p">:</span>
|
||||
</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a> <span class="k">for</span> <span class="n">source</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
||||
</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">):</span>
|
||||
</span><span id="L-231"><a href="#L-231"><span class="linenos">231</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">select</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">comments</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">)</span>
|
||||
</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="p">)</span>
|
||||
</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a>
|
||||
</span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a> <span class="c1"># Find all columns that went into creating this one to list their lineage nodes.</span>
|
||||
</span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a> <span class="n">source_columns</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">find_all_in_scope</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">))</span>
|
||||
</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a>
|
||||
</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> <span class="c1"># If the source is a UDTF find columns used in the UTDF to generate the table</span>
|
||||
</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UDTF</span><span class="p">):</span>
|
||||
</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="n">source_columns</span> <span class="o">|=</span> <span class="nb">set</span><span class="p">(</span><span class="n">source</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">))</span>
|
||||
</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="n">derived_tables</span> <span class="o">=</span> <span class="p">[</span>
|
||||
</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span>
|
||||
</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a> <span class="k">for</span> <span class="n">source</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">values</span><span class="p">()</span>
|
||||
</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">)</span> <span class="ow">and</span> <span class="n">source</span><span class="o">.</span><span class="n">is_derived_table</span>
|
||||
</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="p">]</span>
|
||||
</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> <span class="n">derived_tables</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">derived_tables</span>
|
||||
</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a>
|
||||
</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a> <span class="n">source_names</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a> <span class="n">dt</span><span class="o">.</span><span class="n">alias</span><span class="p">:</span> <span class="n">dt</span><span class="o">.</span><span class="n">comments</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="mi">1</span><span class="p">]</span>
|
||||
</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a> <span class="k">for</span> <span class="n">dt</span> <span class="ow">in</span> <span class="n">derived_tables</span>
|
||||
</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="k">if</span> <span class="n">dt</span><span class="o">.</span><span class="n">comments</span> <span class="ow">and</span> <span class="n">dt</span><span class="o">.</span><span class="n">comments</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"source: "</span><span class="p">)</span>
|
||||
</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a> <span class="p">}</span>
|
||||
</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a>
|
||||
</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">source_columns</span><span class="p">:</span>
|
||||
</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">table</span>
|
||||
</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
||||
</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a>
|
||||
</span><span id="L-260"><a href="#L-260"><span class="linenos">260</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">):</span>
|
||||
</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a> <span class="n">reference_node_name</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a> <span class="k">if</span> <span class="n">source</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 class="ow">and</span> <span class="n">table</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">source_names</span><span class="p">:</span>
|
||||
</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a> <span class="n">reference_node_name</span> <span class="o">=</span> <span class="n">table</span>
|
||||
</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a> <span class="k">elif</span> <span class="n">source</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 class="p">:</span>
|
||||
</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a> <span class="n">selected_node</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">selected_sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
|
||||
</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a> <span class="n">reference_node_name</span> <span class="o">=</span> <span class="n">selected_node</span><span class="o">.</span><span class="n">name</span> <span class="k">if</span> <span class="n">selected_node</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a> <span class="c1"># The table itself came from a more specific scope. Recurse into that one using the unaliased column name.</span>
|
||||
</span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a> <span class="n">c</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
|
||||
</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a> <span class="n">scope</span><span class="o">=</span><span class="n">source</span><span class="p">,</span>
|
||||
</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a> <span class="n">scope_name</span><span class="o">=</span><span class="n">table</span><span class="p">,</span>
|
||||
</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a> <span class="n">upstream</span><span class="o">=</span><span class="n">node</span><span class="p">,</span>
|
||||
</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a> <span class="n">source_name</span><span class="o">=</span><span class="n">source_names</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span> <span class="ow">or</span> <span class="n">source_name</span><span class="p">,</span>
|
||||
</span><span id="L-275"><a href="#L-275"><span class="linenos">275</span></a> <span class="n">reference_node_name</span><span class="o">=</span><span class="n">reference_node_name</span><span class="p">,</span>
|
||||
</span><span id="L-276"><a href="#L-276"><span class="linenos">276</span></a> <span class="n">trim_selects</span><span class="o">=</span><span class="n">trim_selects</span><span class="p">,</span>
|
||||
</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a> <span class="p">)</span>
|
||||
</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a> <span class="c1"># The source is not a scope - we've reached the end of the line. At this point, if a source is not found</span>
|
||||
</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a> <span class="c1"># it means this column's lineage is unknown. This can happen if the definition of a source used in a query</span>
|
||||
</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a> <span class="c1"># is not passed into the `sources` map.</span>
|
||||
</span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">source</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">()</span>
|
||||
</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
</span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">comments</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">)</span>
|
||||
</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a> <span class="p">)</span>
|
||||
</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a>
|
||||
</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a> <span class="k">return</span> <span class="n">node</span>
|
||||
</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a>
|
||||
</span><span id="L-155"><a href="#L-155"><span class="linenos">155</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">SetOperation</span><span class="p">):</span>
|
||||
</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="n">name</span> <span class="o">=</span> <span class="nb">type</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="o">.</span><span class="vm">__name__</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
|
||||
</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="n">upstream</span> <span class="o">=</span> <span class="n">upstream</span> <span class="ow">or</span> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">select</span><span class="p">)</span>
|
||||
</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a>
|
||||
</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="n">index</span> <span class="o">=</span> <span class="p">(</span>
|
||||
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="n">column</span>
|
||||
</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span>
|
||||
</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="k">else</span> <span class="nb">next</span><span class="p">(</span>
|
||||
</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="p">(</span>
|
||||
</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="n">i</span>
|
||||
</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">select</span> <span class="ow">in</span> <span class="nb">enumerate</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">selects</span><span class="p">)</span>
|
||||
</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="k">if</span> <span class="n">select</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="o">==</span> <span class="n">column</span> <span class="ow">or</span> <span class="n">select</span><span class="o">.</span><span class="n">is_star</span>
|
||||
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="p">),</span>
|
||||
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="c1"># mypy will not allow a None here, but a negative index should never be returned</span>
|
||||
</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="p">)</span>
|
||||
</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="p">)</span>
|
||||
</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a>
|
||||
</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="k">if</span> <span class="n">index</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Could not find </span><span class="si">{</span><span class="n">column</span><span class="si">}</span><span class="s2"> in </span><span class="si">{</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a>
|
||||
</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">union_scopes</span><span class="p">:</span>
|
||||
</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="n">index</span><span class="p">,</span>
|
||||
</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="n">scope</span><span class="o">=</span><span class="n">s</span><span class="p">,</span>
|
||||
</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="n">upstream</span><span class="o">=</span><span class="n">upstream</span><span class="p">,</span>
|
||||
</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="n">source_name</span><span class="o">=</span><span class="n">source_name</span><span class="p">,</span>
|
||||
</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="n">reference_node_name</span><span class="o">=</span><span class="n">reference_node_name</span><span class="p">,</span>
|
||||
</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="n">trim_selects</span><span class="o">=</span><span class="n">trim_selects</span><span class="p">,</span>
|
||||
</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="p">)</span>
|
||||
</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a>
|
||||
</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="k">return</span> <span class="n">upstream</span>
|
||||
</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a>
|
||||
</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="k">if</span> <span class="n">trim_selects</span> <span class="ow">and</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">Select</span><span class="p">):</span>
|
||||
</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> <span class="c1"># For better ergonomics in our node labels, replace the full select with</span>
|
||||
</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a> <span class="c1"># a version that has only the column we care about.</span>
|
||||
</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="c1"># "x", SELECT x, y FROM foo</span>
|
||||
</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="c1"># => "x", SELECT x FROM foo</span>
|
||||
</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</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="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
|
||||
</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a>
|
||||
</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a> <span class="c1"># Create the node for this step in the lineage chain, and attach it to the previous one.</span>
|
||||
</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span>
|
||||
</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a> <span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">scope_name</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">column</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">scope_name</span> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">column</span><span class="p">),</span>
|
||||
</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span>
|
||||
</span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">select</span><span class="p">,</span>
|
||||
</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="n">source_name</span><span class="o">=</span><span class="n">source_name</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
||||
</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="n">reference_node_name</span><span class="o">=</span><span class="n">reference_node_name</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
||||
</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="p">)</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="k">if</span> <span class="n">upstream</span><span class="p">:</span>
|
||||
</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a> <span class="n">upstream</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a>
|
||||
</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="n">subquery_scopes</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">subquery_scope</span><span class="o">.</span><span class="n">expression</span><span class="p">):</span> <span class="n">subquery_scope</span> <span class="k">for</span> <span class="n">subquery_scope</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">subquery_scopes</span>
|
||||
</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="p">}</span>
|
||||
</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a>
|
||||
</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="k">for</span> <span class="n">subquery</span> <span class="ow">in</span> <span class="n">find_all_in_scope</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UNWRAPPED_QUERIES</span><span class="p">):</span>
|
||||
</span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="n">subquery_scope</span> <span class="o">=</span> <span class="n">subquery_scopes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="n">subquery</span><span class="p">))</span>
|
||||
</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">subquery_scope</span><span class="p">:</span>
|
||||
</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown subquery scope: </span><span class="si">{</span><span class="n">subquery</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a>
|
||||
</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">subquery</span><span class="o">.</span><span class="n">named_selects</span><span class="p">:</span>
|
||||
</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> <span class="n">name</span><span class="p">,</span>
|
||||
</span><span id="L-222"><a href="#L-222"><span class="linenos">222</span></a> <span class="n">scope</span><span class="o">=</span><span class="n">subquery_scope</span><span class="p">,</span>
|
||||
</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="n">upstream</span><span class="o">=</span><span class="n">node</span><span class="p">,</span>
|
||||
</span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a> <span class="n">trim_selects</span><span class="o">=</span><span class="n">trim_selects</span><span class="p">,</span>
|
||||
</span><span id="L-226"><a href="#L-226"><span class="linenos">226</span></a> <span class="p">)</span>
|
||||
</span><span id="L-227"><a href="#L-227"><span class="linenos">227</span></a>
|
||||
</span><span id="L-228"><a href="#L-228"><span class="linenos">228</span></a> <span class="c1"># if the select is a star add all scope sources as downstreams</span>
|
||||
</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a> <span class="k">if</span> <span class="n">select</span><span class="o">.</span><span class="n">is_star</span><span class="p">:</span>
|
||||
</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a> <span class="k">for</span> <span class="n">source</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
||||
</span><span id="L-231"><a href="#L-231"><span class="linenos">231</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">):</span>
|
||||
</span><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">select</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">comments</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">)</span>
|
||||
</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a> <span class="p">)</span>
|
||||
</span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a>
|
||||
</span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a> <span class="c1"># Find all columns that went into creating this one to list their lineage nodes.</span>
|
||||
</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a> <span class="n">source_columns</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">find_all_in_scope</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">))</span>
|
||||
</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a>
|
||||
</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a> <span class="c1"># If the source is a UDTF find columns used in the UTDF to generate the table</span>
|
||||
</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UDTF</span><span class="p">):</span>
|
||||
</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="n">source_columns</span> <span class="o">|=</span> <span class="nb">set</span><span class="p">(</span><span class="n">source</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">))</span>
|
||||
</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a> <span class="n">derived_tables</span> <span class="o">=</span> <span class="p">[</span>
|
||||
</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span>
|
||||
</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a> <span class="k">for</span> <span class="n">source</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">values</span><span class="p">()</span>
|
||||
</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">)</span> <span class="ow">and</span> <span class="n">source</span><span class="o">.</span><span class="n">is_derived_table</span>
|
||||
</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a> <span class="p">]</span>
|
||||
</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a> <span class="n">derived_tables</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">derived_tables</span>
|
||||
</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a>
|
||||
</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a> <span class="n">source_names</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a> <span class="n">dt</span><span class="o">.</span><span class="n">alias</span><span class="p">:</span> <span class="n">dt</span><span class="o">.</span><span class="n">comments</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="mi">1</span><span class="p">]</span>
|
||||
</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="k">for</span> <span class="n">dt</span> <span class="ow">in</span> <span class="n">derived_tables</span>
|
||||
</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a> <span class="k">if</span> <span class="n">dt</span><span class="o">.</span><span class="n">comments</span> <span class="ow">and</span> <span class="n">dt</span><span class="o">.</span><span class="n">comments</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"source: "</span><span class="p">)</span>
|
||||
</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a> <span class="p">}</span>
|
||||
</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a>
|
||||
</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">source_columns</span><span class="p">:</span>
|
||||
</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">table</span>
|
||||
</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
||||
</span><span id="L-260"><a href="#L-260"><span class="linenos">260</span></a>
|
||||
</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">):</span>
|
||||
</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a> <span class="n">reference_node_name</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a> <span class="k">if</span> <span class="n">source</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 class="ow">and</span> <span class="n">table</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">source_names</span><span class="p">:</span>
|
||||
</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a> <span class="n">reference_node_name</span> <span class="o">=</span> <span class="n">table</span>
|
||||
</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a> <span class="k">elif</span> <span class="n">source</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 class="p">:</span>
|
||||
</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a> <span class="n">selected_node</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">selected_sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
|
||||
</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a> <span class="n">reference_node_name</span> <span class="o">=</span> <span class="n">selected_node</span><span class="o">.</span><span class="n">name</span> <span class="k">if</span> <span class="n">selected_node</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a> <span class="c1"># The table itself came from a more specific scope. Recurse into that one using the unaliased column name.</span>
|
||||
</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a> <span class="n">c</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
|
||||
</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a> <span class="n">scope</span><span class="o">=</span><span class="n">source</span><span class="p">,</span>
|
||||
</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a> <span class="n">scope_name</span><span class="o">=</span><span class="n">table</span><span class="p">,</span>
|
||||
</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a> <span class="n">upstream</span><span class="o">=</span><span class="n">node</span><span class="p">,</span>
|
||||
</span><span id="L-275"><a href="#L-275"><span class="linenos">275</span></a> <span class="n">source_name</span><span class="o">=</span><span class="n">source_names</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span> <span class="ow">or</span> <span class="n">source_name</span><span class="p">,</span>
|
||||
</span><span id="L-276"><a href="#L-276"><span class="linenos">276</span></a> <span class="n">reference_node_name</span><span class="o">=</span><span class="n">reference_node_name</span><span class="p">,</span>
|
||||
</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a> <span class="n">trim_selects</span><span class="o">=</span><span class="n">trim_selects</span><span class="p">,</span>
|
||||
</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a> <span class="p">)</span>
|
||||
</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a> <span class="c1"># The source is not a scope - we've reached the end of the line. At this point, if a source is not found</span>
|
||||
</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a> <span class="c1"># it means this column's lineage is unknown. This can happen if the definition of a source used in a query</span>
|
||||
</span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a> <span class="c1"># is not passed into the `sources` map.</span>
|
||||
</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">source</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">()</span>
|
||||
</span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">comments</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">)</span>
|
||||
</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a> <span class="p">)</span>
|
||||
</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a>
|
||||
</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a> <span class="k">return</span> <span class="n">node</span>
|
||||
</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a>
|
||||
</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a><span class="k">class</span> <span class="nc">GraphHTML</span><span class="p">:</span>
|
||||
</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a><span class="w"> </span><span class="sd">"""Node to HTML generator using vis.js.</span>
|
||||
</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a>
|
||||
</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a><span class="sd"> https://visjs.github.io/vis-network/docs/network/</span>
|
||||
</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a>
|
||||
</span><span id="L-296"><a href="#L-296"><span class="linenos">296</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="L-297"><a href="#L-297"><span class="linenos">297</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">nodes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">edges</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> <span class="n">imports</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">options</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a> <span class="p">):</span>
|
||||
</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span> <span class="o">=</span> <span class="n">imports</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="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a> <span class="s2">"height"</span><span class="p">:</span> <span class="s2">"500px"</span><span class="p">,</span>
|
||||
</span><span id="L-303"><a href="#L-303"><span class="linenos">303</span></a> <span class="s2">"width"</span><span class="p">:</span> <span class="s2">"100%"</span><span class="p">,</span>
|
||||
</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a> <span class="s2">"layout"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a> <span class="s2">"hierarchical"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-306"><a href="#L-306"><span class="linenos">306</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="L-307"><a href="#L-307"><span class="linenos">307</span></a> <span class="s2">"nodeSpacing"</span><span class="p">:</span> <span class="mi">200</span><span class="p">,</span>
|
||||
</span><span id="L-308"><a href="#L-308"><span class="linenos">308</span></a> <span class="s2">"sortMethod"</span><span class="p">:</span> <span class="s2">"directed"</span><span class="p">,</span>
|
||||
</span><span id="L-309"><a href="#L-309"><span class="linenos">309</span></a> <span class="p">},</span>
|
||||
</span><span id="L-310"><a href="#L-310"><span class="linenos">310</span></a> <span class="p">},</span>
|
||||
</span><span id="L-311"><a href="#L-311"><span class="linenos">311</span></a> <span class="s2">"interaction"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-312"><a href="#L-312"><span class="linenos">312</span></a> <span class="s2">"dragNodes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-313"><a href="#L-313"><span class="linenos">313</span></a> <span class="s2">"selectable"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-314"><a href="#L-314"><span class="linenos">314</span></a> <span class="p">},</span>
|
||||
</span><span id="L-315"><a href="#L-315"><span class="linenos">315</span></a> <span class="s2">"physics"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-316"><a href="#L-316"><span class="linenos">316</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-317"><a href="#L-317"><span class="linenos">317</span></a> <span class="p">},</span>
|
||||
</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a> <span class="s2">"edges"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a> <span class="s2">"arrows"</span><span class="p">:</span> <span class="s2">"to"</span><span class="p">,</span>
|
||||
</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a> <span class="p">},</span>
|
||||
</span><span id="L-321"><a href="#L-321"><span class="linenos">321</span></a> <span class="s2">"nodes"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-322"><a href="#L-322"><span class="linenos">322</span></a> <span class="s2">"font"</span><span class="p">:</span> <span class="s2">"20px monaco"</span><span class="p">,</span>
|
||||
</span><span id="L-323"><a href="#L-323"><span class="linenos">323</span></a> <span class="s2">"shape"</span><span class="p">:</span> <span class="s2">"box"</span><span class="p">,</span>
|
||||
</span><span id="L-324"><a href="#L-324"><span class="linenos">324</span></a> <span class="s2">"widthConstraint"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-325"><a href="#L-325"><span class="linenos">325</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="mi">300</span><span class="p">,</span>
|
||||
</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a> <span class="p">},</span>
|
||||
</span><span id="L-327"><a href="#L-327"><span class="linenos">327</span></a> <span class="p">},</span>
|
||||
</span><span id="L-328"><a href="#L-328"><span class="linenos">328</span></a> <span class="o">**</span><span class="p">(</span><span class="n">options</span> <span class="ow">or</span> <span class="p">{}),</span>
|
||||
</span><span id="L-329"><a href="#L-329"><span class="linenos">329</span></a> <span class="p">}</span>
|
||||
</span><span id="L-330"><a href="#L-330"><span class="linenos">330</span></a>
|
||||
</span><span id="L-331"><a href="#L-331"><span class="linenos">331</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span> <span class="o">=</span> <span class="n">nodes</span>
|
||||
</span><span id="L-332"><a href="#L-332"><span class="linenos">332</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span> <span class="o">=</span> <span class="n">edges</span>
|
||||
</span><span id="L-333"><a href="#L-333"><span class="linenos">333</span></a>
|
||||
</span><span id="L-334"><a href="#L-334"><span class="linenos">334</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-335"><a href="#L-335"><span class="linenos">335</span></a> <span class="n">nodes</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span>
|
||||
</span><span id="L-336"><a href="#L-336"><span class="linenos">336</span></a> <span class="n">edges</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">edges</span><span class="p">)</span>
|
||||
</span><span id="L-337"><a href="#L-337"><span class="linenos">337</span></a> <span class="n">options</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">)</span>
|
||||
</span><span id="L-338"><a href="#L-338"><span class="linenos">338</span></a> <span class="n">imports</span> <span class="o">=</span> <span class="p">(</span>
|
||||
</span><span id="L-339"><a href="#L-339"><span class="linenos">339</span></a><span class="w"> </span><span class="sd">"""<script type="text/javascript" src="https://unpkg.com/vis-data@latest/peer/umd/vis-data.min.js"></script></span>
|
||||
</span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a><span class="sd"> <script type="text/javascript" src="https://unpkg.com/vis-network@latest/peer/umd/vis-network.min.js"></script></span>
|
||||
</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a><span class="sd"> <link rel="stylesheet" type="text/css" href="https://unpkg.com/vis-network/styles/vis-network.min.css" />"""</span>
|
||||
</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span>
|
||||
</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a> <span class="p">)</span>
|
||||
</span><span id="L-345"><a href="#L-345"><span class="linenos">345</span></a>
|
||||
</span><span id="L-346"><a href="#L-346"><span class="linenos">346</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"""<div></span>
|
||||
</span><span id="L-347"><a href="#L-347"><span class="linenos">347</span></a><span class="s2"> <div id="sqlglot-lineage"></div></span>
|
||||
</span><span id="L-348"><a href="#L-348"><span class="linenos">348</span></a><span class="s2"> </span><span class="si">{</span><span class="n">imports</span><span class="si">}</span>
|
||||
</span><span id="L-349"><a href="#L-349"><span class="linenos">349</span></a><span class="s2"> <script type="text/javascript"></span>
|
||||
</span><span id="L-350"><a href="#L-350"><span class="linenos">350</span></a><span class="s2"> var nodes = new vis.DataSet(</span><span class="si">{</span><span class="n">nodes</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="L-351"><a href="#L-351"><span class="linenos">351</span></a><span class="s2"> nodes.forEach(row => row["title"] = new DOMParser().parseFromString(row["title"], "text/html").body.childNodes[0])</span>
|
||||
</span><span id="L-352"><a href="#L-352"><span class="linenos">352</span></a>
|
||||
</span><span id="L-353"><a href="#L-353"><span class="linenos">353</span></a><span class="s2"> new vis.Network(</span>
|
||||
</span><span id="L-354"><a href="#L-354"><span class="linenos">354</span></a><span class="s2"> document.getElementById("sqlglot-lineage"),</span>
|
||||
</span><span id="L-355"><a href="#L-355"><span class="linenos">355</span></a><span class="s2"> </span><span class="se">{{</span>
|
||||
</span><span id="L-356"><a href="#L-356"><span class="linenos">356</span></a><span class="s2"> nodes: nodes,</span>
|
||||
</span><span id="L-357"><a href="#L-357"><span class="linenos">357</span></a><span class="s2"> edges: new vis.DataSet(</span><span class="si">{</span><span class="n">edges</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="L-358"><a href="#L-358"><span class="linenos">358</span></a><span class="s2"> </span><span class="se">}}</span><span class="s2">,</span>
|
||||
</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a><span class="s2"> </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">,</span>
|
||||
</span><span id="L-360"><a href="#L-360"><span class="linenos">360</span></a><span class="s2"> )</span>
|
||||
</span><span id="L-361"><a href="#L-361"><span class="linenos">361</span></a><span class="s2"> </script></span>
|
||||
</span><span id="L-362"><a href="#L-362"><span class="linenos">362</span></a><span class="s2"></div>"""</span>
|
||||
</span><span id="L-363"><a href="#L-363"><span class="linenos">363</span></a>
|
||||
</span><span id="L-364"><a href="#L-364"><span class="linenos">364</span></a> <span class="k">def</span> <span class="nf">_repr_html_</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-365"><a href="#L-365"><span class="linenos">365</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__str__</span><span class="p">()</span>
|
||||
</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a>
|
||||
</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a><span class="k">class</span> <span class="nc">GraphHTML</span><span class="p">:</span>
|
||||
</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a><span class="w"> </span><span class="sd">"""Node to HTML generator using vis.js.</span>
|
||||
</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a>
|
||||
</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a><span class="sd"> https://visjs.github.io/vis-network/docs/network/</span>
|
||||
</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-296"><a href="#L-296"><span class="linenos">296</span></a>
|
||||
</span><span id="L-297"><a href="#L-297"><span class="linenos">297</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">nodes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">edges</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> <span class="n">imports</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">options</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a> <span class="p">):</span>
|
||||
</span><span id="L-300"><a href="#L-300"><span class="linenos">300</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span> <span class="o">=</span> <span class="n">imports</span>
|
||||
</span><span id="L-301"><a href="#L-301"><span class="linenos">301</span></a>
|
||||
</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-303"><a href="#L-303"><span class="linenos">303</span></a> <span class="s2">"height"</span><span class="p">:</span> <span class="s2">"500px"</span><span class="p">,</span>
|
||||
</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a> <span class="s2">"width"</span><span class="p">:</span> <span class="s2">"100%"</span><span class="p">,</span>
|
||||
</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a> <span class="s2">"layout"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-306"><a href="#L-306"><span class="linenos">306</span></a> <span class="s2">"hierarchical"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-307"><a href="#L-307"><span class="linenos">307</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="L-308"><a href="#L-308"><span class="linenos">308</span></a> <span class="s2">"nodeSpacing"</span><span class="p">:</span> <span class="mi">200</span><span class="p">,</span>
|
||||
</span><span id="L-309"><a href="#L-309"><span class="linenos">309</span></a> <span class="s2">"sortMethod"</span><span class="p">:</span> <span class="s2">"directed"</span><span class="p">,</span>
|
||||
</span><span id="L-310"><a href="#L-310"><span class="linenos">310</span></a> <span class="p">},</span>
|
||||
</span><span id="L-311"><a href="#L-311"><span class="linenos">311</span></a> <span class="p">},</span>
|
||||
</span><span id="L-312"><a href="#L-312"><span class="linenos">312</span></a> <span class="s2">"interaction"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-313"><a href="#L-313"><span class="linenos">313</span></a> <span class="s2">"dragNodes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-314"><a href="#L-314"><span class="linenos">314</span></a> <span class="s2">"selectable"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-315"><a href="#L-315"><span class="linenos">315</span></a> <span class="p">},</span>
|
||||
</span><span id="L-316"><a href="#L-316"><span class="linenos">316</span></a> <span class="s2">"physics"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-317"><a href="#L-317"><span class="linenos">317</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a> <span class="p">},</span>
|
||||
</span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a> <span class="s2">"edges"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a> <span class="s2">"arrows"</span><span class="p">:</span> <span class="s2">"to"</span><span class="p">,</span>
|
||||
</span><span id="L-321"><a href="#L-321"><span class="linenos">321</span></a> <span class="p">},</span>
|
||||
</span><span id="L-322"><a href="#L-322"><span class="linenos">322</span></a> <span class="s2">"nodes"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-323"><a href="#L-323"><span class="linenos">323</span></a> <span class="s2">"font"</span><span class="p">:</span> <span class="s2">"20px monaco"</span><span class="p">,</span>
|
||||
</span><span id="L-324"><a href="#L-324"><span class="linenos">324</span></a> <span class="s2">"shape"</span><span class="p">:</span> <span class="s2">"box"</span><span class="p">,</span>
|
||||
</span><span id="L-325"><a href="#L-325"><span class="linenos">325</span></a> <span class="s2">"widthConstraint"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="mi">300</span><span class="p">,</span>
|
||||
</span><span id="L-327"><a href="#L-327"><span class="linenos">327</span></a> <span class="p">},</span>
|
||||
</span><span id="L-328"><a href="#L-328"><span class="linenos">328</span></a> <span class="p">},</span>
|
||||
</span><span id="L-329"><a href="#L-329"><span class="linenos">329</span></a> <span class="o">**</span><span class="p">(</span><span class="n">options</span> <span class="ow">or</span> <span class="p">{}),</span>
|
||||
</span><span id="L-330"><a href="#L-330"><span class="linenos">330</span></a> <span class="p">}</span>
|
||||
</span><span id="L-331"><a href="#L-331"><span class="linenos">331</span></a>
|
||||
</span><span id="L-332"><a href="#L-332"><span class="linenos">332</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span> <span class="o">=</span> <span class="n">nodes</span>
|
||||
</span><span id="L-333"><a href="#L-333"><span class="linenos">333</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span> <span class="o">=</span> <span class="n">edges</span>
|
||||
</span><span id="L-334"><a href="#L-334"><span class="linenos">334</span></a>
|
||||
</span><span id="L-335"><a href="#L-335"><span class="linenos">335</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-336"><a href="#L-336"><span class="linenos">336</span></a> <span class="n">nodes</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span>
|
||||
</span><span id="L-337"><a href="#L-337"><span class="linenos">337</span></a> <span class="n">edges</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">edges</span><span class="p">)</span>
|
||||
</span><span id="L-338"><a href="#L-338"><span class="linenos">338</span></a> <span class="n">options</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">)</span>
|
||||
</span><span id="L-339"><a href="#L-339"><span class="linenos">339</span></a> <span class="n">imports</span> <span class="o">=</span> <span class="p">(</span>
|
||||
</span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a><span class="w"> </span><span class="sd">"""<script type="text/javascript" src="https://unpkg.com/vis-data@latest/peer/umd/vis-data.min.js"></script></span>
|
||||
</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a><span class="sd"> <script type="text/javascript" src="https://unpkg.com/vis-network@latest/peer/umd/vis-network.min.js"></script></span>
|
||||
</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a><span class="sd"> <link rel="stylesheet" type="text/css" href="https://unpkg.com/vis-network/styles/vis-network.min.css" />"""</span>
|
||||
</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span>
|
||||
</span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-345"><a href="#L-345"><span class="linenos">345</span></a> <span class="p">)</span>
|
||||
</span><span id="L-346"><a href="#L-346"><span class="linenos">346</span></a>
|
||||
</span><span id="L-347"><a href="#L-347"><span class="linenos">347</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"""<div></span>
|
||||
</span><span id="L-348"><a href="#L-348"><span class="linenos">348</span></a><span class="s2"> <div id="sqlglot-lineage"></div></span>
|
||||
</span><span id="L-349"><a href="#L-349"><span class="linenos">349</span></a><span class="s2"> </span><span class="si">{</span><span class="n">imports</span><span class="si">}</span>
|
||||
</span><span id="L-350"><a href="#L-350"><span class="linenos">350</span></a><span class="s2"> <script type="text/javascript"></span>
|
||||
</span><span id="L-351"><a href="#L-351"><span class="linenos">351</span></a><span class="s2"> var nodes = new vis.DataSet(</span><span class="si">{</span><span class="n">nodes</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="L-352"><a href="#L-352"><span class="linenos">352</span></a><span class="s2"> nodes.forEach(row => row["title"] = new DOMParser().parseFromString(row["title"], "text/html").body.childNodes[0])</span>
|
||||
</span><span id="L-353"><a href="#L-353"><span class="linenos">353</span></a>
|
||||
</span><span id="L-354"><a href="#L-354"><span class="linenos">354</span></a><span class="s2"> new vis.Network(</span>
|
||||
</span><span id="L-355"><a href="#L-355"><span class="linenos">355</span></a><span class="s2"> document.getElementById("sqlglot-lineage"),</span>
|
||||
</span><span id="L-356"><a href="#L-356"><span class="linenos">356</span></a><span class="s2"> </span><span class="se">{{</span>
|
||||
</span><span id="L-357"><a href="#L-357"><span class="linenos">357</span></a><span class="s2"> nodes: nodes,</span>
|
||||
</span><span id="L-358"><a href="#L-358"><span class="linenos">358</span></a><span class="s2"> edges: new vis.DataSet(</span><span class="si">{</span><span class="n">edges</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a><span class="s2"> </span><span class="se">}}</span><span class="s2">,</span>
|
||||
</span><span id="L-360"><a href="#L-360"><span class="linenos">360</span></a><span class="s2"> </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">,</span>
|
||||
</span><span id="L-361"><a href="#L-361"><span class="linenos">361</span></a><span class="s2"> )</span>
|
||||
</span><span id="L-362"><a href="#L-362"><span class="linenos">362</span></a><span class="s2"> </script></span>
|
||||
</span><span id="L-363"><a href="#L-363"><span class="linenos">363</span></a><span class="s2"></div>"""</span>
|
||||
</span><span id="L-364"><a href="#L-364"><span class="linenos">364</span></a>
|
||||
</span><span id="L-365"><a href="#L-365"><span class="linenos">365</span></a> <span class="k">def</span> <span class="nf">_repr_html_</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-366"><a href="#L-366"><span class="linenos">366</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__str__</span><span class="p">()</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -847,139 +848,140 @@
|
|||
</span><span id="to_node-153"><a href="#to_node-153"><span class="linenos">153</span></a> <span class="n">reference_node_name</span><span class="o">=</span><span class="n">reference_node_name</span><span class="p">,</span>
|
||||
</span><span id="to_node-154"><a href="#to_node-154"><span class="linenos">154</span></a> <span class="n">trim_selects</span><span class="o">=</span><span class="n">trim_selects</span><span class="p">,</span>
|
||||
</span><span id="to_node-155"><a href="#to_node-155"><span class="linenos">155</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-156"><a href="#to_node-156"><span class="linenos">156</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">Union</span><span class="p">):</span>
|
||||
</span><span id="to_node-157"><a href="#to_node-157"><span class="linenos">157</span></a> <span class="n">upstream</span> <span class="o">=</span> <span class="n">upstream</span> <span class="ow">or</span> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s2">"UNION"</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">select</span><span class="p">)</span>
|
||||
</span><span id="to_node-158"><a href="#to_node-158"><span class="linenos">158</span></a>
|
||||
</span><span id="to_node-159"><a href="#to_node-159"><span class="linenos">159</span></a> <span class="n">index</span> <span class="o">=</span> <span class="p">(</span>
|
||||
</span><span id="to_node-160"><a href="#to_node-160"><span class="linenos">160</span></a> <span class="n">column</span>
|
||||
</span><span id="to_node-161"><a href="#to_node-161"><span class="linenos">161</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span>
|
||||
</span><span id="to_node-162"><a href="#to_node-162"><span class="linenos">162</span></a> <span class="k">else</span> <span class="nb">next</span><span class="p">(</span>
|
||||
</span><span id="to_node-163"><a href="#to_node-163"><span class="linenos">163</span></a> <span class="p">(</span>
|
||||
</span><span id="to_node-164"><a href="#to_node-164"><span class="linenos">164</span></a> <span class="n">i</span>
|
||||
</span><span id="to_node-165"><a href="#to_node-165"><span class="linenos">165</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">select</span> <span class="ow">in</span> <span class="nb">enumerate</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">selects</span><span class="p">)</span>
|
||||
</span><span id="to_node-166"><a href="#to_node-166"><span class="linenos">166</span></a> <span class="k">if</span> <span class="n">select</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="o">==</span> <span class="n">column</span> <span class="ow">or</span> <span class="n">select</span><span class="o">.</span><span class="n">is_star</span>
|
||||
</span><span id="to_node-167"><a href="#to_node-167"><span class="linenos">167</span></a> <span class="p">),</span>
|
||||
</span><span id="to_node-168"><a href="#to_node-168"><span class="linenos">168</span></a> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="c1"># mypy will not allow a None here, but a negative index should never be returned</span>
|
||||
</span><span id="to_node-169"><a href="#to_node-169"><span class="linenos">169</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-170"><a href="#to_node-170"><span class="linenos">170</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-171"><a href="#to_node-171"><span class="linenos">171</span></a>
|
||||
</span><span id="to_node-172"><a href="#to_node-172"><span class="linenos">172</span></a> <span class="k">if</span> <span class="n">index</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="to_node-173"><a href="#to_node-173"><span class="linenos">173</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Could not find </span><span class="si">{</span><span class="n">column</span><span class="si">}</span><span class="s2"> in </span><span class="si">{</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="to_node-174"><a href="#to_node-174"><span class="linenos">174</span></a>
|
||||
</span><span id="to_node-175"><a href="#to_node-175"><span class="linenos">175</span></a> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">union_scopes</span><span class="p">:</span>
|
||||
</span><span id="to_node-176"><a href="#to_node-176"><span class="linenos">176</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="to_node-177"><a href="#to_node-177"><span class="linenos">177</span></a> <span class="n">index</span><span class="p">,</span>
|
||||
</span><span id="to_node-178"><a href="#to_node-178"><span class="linenos">178</span></a> <span class="n">scope</span><span class="o">=</span><span class="n">s</span><span class="p">,</span>
|
||||
</span><span id="to_node-179"><a href="#to_node-179"><span class="linenos">179</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="to_node-180"><a href="#to_node-180"><span class="linenos">180</span></a> <span class="n">upstream</span><span class="o">=</span><span class="n">upstream</span><span class="p">,</span>
|
||||
</span><span id="to_node-181"><a href="#to_node-181"><span class="linenos">181</span></a> <span class="n">source_name</span><span class="o">=</span><span class="n">source_name</span><span class="p">,</span>
|
||||
</span><span id="to_node-182"><a href="#to_node-182"><span class="linenos">182</span></a> <span class="n">reference_node_name</span><span class="o">=</span><span class="n">reference_node_name</span><span class="p">,</span>
|
||||
</span><span id="to_node-183"><a href="#to_node-183"><span class="linenos">183</span></a> <span class="n">trim_selects</span><span class="o">=</span><span class="n">trim_selects</span><span class="p">,</span>
|
||||
</span><span id="to_node-184"><a href="#to_node-184"><span class="linenos">184</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-185"><a href="#to_node-185"><span class="linenos">185</span></a>
|
||||
</span><span id="to_node-186"><a href="#to_node-186"><span class="linenos">186</span></a> <span class="k">return</span> <span class="n">upstream</span>
|
||||
</span><span id="to_node-187"><a href="#to_node-187"><span class="linenos">187</span></a>
|
||||
</span><span id="to_node-188"><a href="#to_node-188"><span class="linenos">188</span></a> <span class="k">if</span> <span class="n">trim_selects</span> <span class="ow">and</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">Select</span><span class="p">):</span>
|
||||
</span><span id="to_node-189"><a href="#to_node-189"><span class="linenos">189</span></a> <span class="c1"># For better ergonomics in our node labels, replace the full select with</span>
|
||||
</span><span id="to_node-190"><a href="#to_node-190"><span class="linenos">190</span></a> <span class="c1"># a version that has only the column we care about.</span>
|
||||
</span><span id="to_node-191"><a href="#to_node-191"><span class="linenos">191</span></a> <span class="c1"># "x", SELECT x, y FROM foo</span>
|
||||
</span><span id="to_node-192"><a href="#to_node-192"><span class="linenos">192</span></a> <span class="c1"># => "x", SELECT x FROM foo</span>
|
||||
</span><span id="to_node-193"><a href="#to_node-193"><span class="linenos">193</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</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="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
|
||||
</span><span id="to_node-194"><a href="#to_node-194"><span class="linenos">194</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="to_node-195"><a href="#to_node-195"><span class="linenos">195</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="to_node-196"><a href="#to_node-196"><span class="linenos">196</span></a>
|
||||
</span><span id="to_node-197"><a href="#to_node-197"><span class="linenos">197</span></a> <span class="c1"># Create the node for this step in the lineage chain, and attach it to the previous one.</span>
|
||||
</span><span id="to_node-198"><a href="#to_node-198"><span class="linenos">198</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span>
|
||||
</span><span id="to_node-199"><a href="#to_node-199"><span class="linenos">199</span></a> <span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">scope_name</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">column</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">scope_name</span> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">column</span><span class="p">),</span>
|
||||
</span><span id="to_node-200"><a href="#to_node-200"><span class="linenos">200</span></a> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span>
|
||||
</span><span id="to_node-201"><a href="#to_node-201"><span class="linenos">201</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">select</span><span class="p">,</span>
|
||||
</span><span id="to_node-202"><a href="#to_node-202"><span class="linenos">202</span></a> <span class="n">source_name</span><span class="o">=</span><span class="n">source_name</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
||||
</span><span id="to_node-203"><a href="#to_node-203"><span class="linenos">203</span></a> <span class="n">reference_node_name</span><span class="o">=</span><span class="n">reference_node_name</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
||||
</span><span id="to_node-204"><a href="#to_node-204"><span class="linenos">204</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-205"><a href="#to_node-205"><span class="linenos">205</span></a>
|
||||
</span><span id="to_node-206"><a href="#to_node-206"><span class="linenos">206</span></a> <span class="k">if</span> <span class="n">upstream</span><span class="p">:</span>
|
||||
</span><span id="to_node-207"><a href="#to_node-207"><span class="linenos">207</span></a> <span class="n">upstream</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="to_node-208"><a href="#to_node-208"><span class="linenos">208</span></a>
|
||||
</span><span id="to_node-209"><a href="#to_node-209"><span class="linenos">209</span></a> <span class="n">subquery_scopes</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="to_node-210"><a href="#to_node-210"><span class="linenos">210</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">subquery_scope</span><span class="o">.</span><span class="n">expression</span><span class="p">):</span> <span class="n">subquery_scope</span> <span class="k">for</span> <span class="n">subquery_scope</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">subquery_scopes</span>
|
||||
</span><span id="to_node-211"><a href="#to_node-211"><span class="linenos">211</span></a> <span class="p">}</span>
|
||||
</span><span id="to_node-212"><a href="#to_node-212"><span class="linenos">212</span></a>
|
||||
</span><span id="to_node-213"><a href="#to_node-213"><span class="linenos">213</span></a> <span class="k">for</span> <span class="n">subquery</span> <span class="ow">in</span> <span class="n">find_all_in_scope</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UNWRAPPED_QUERIES</span><span class="p">):</span>
|
||||
</span><span id="to_node-214"><a href="#to_node-214"><span class="linenos">214</span></a> <span class="n">subquery_scope</span> <span class="o">=</span> <span class="n">subquery_scopes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="n">subquery</span><span class="p">))</span>
|
||||
</span><span id="to_node-215"><a href="#to_node-215"><span class="linenos">215</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">subquery_scope</span><span class="p">:</span>
|
||||
</span><span id="to_node-216"><a href="#to_node-216"><span class="linenos">216</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown subquery scope: </span><span class="si">{</span><span class="n">subquery</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="to_node-217"><a href="#to_node-217"><span class="linenos">217</span></a> <span class="k">continue</span>
|
||||
</span><span id="to_node-218"><a href="#to_node-218"><span class="linenos">218</span></a>
|
||||
</span><span id="to_node-219"><a href="#to_node-219"><span class="linenos">219</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">subquery</span><span class="o">.</span><span class="n">named_selects</span><span class="p">:</span>
|
||||
</span><span id="to_node-220"><a href="#to_node-220"><span class="linenos">220</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="to_node-221"><a href="#to_node-221"><span class="linenos">221</span></a> <span class="n">name</span><span class="p">,</span>
|
||||
</span><span id="to_node-222"><a href="#to_node-222"><span class="linenos">222</span></a> <span class="n">scope</span><span class="o">=</span><span class="n">subquery_scope</span><span class="p">,</span>
|
||||
</span><span id="to_node-223"><a href="#to_node-223"><span class="linenos">223</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="to_node-224"><a href="#to_node-224"><span class="linenos">224</span></a> <span class="n">upstream</span><span class="o">=</span><span class="n">node</span><span class="p">,</span>
|
||||
</span><span id="to_node-225"><a href="#to_node-225"><span class="linenos">225</span></a> <span class="n">trim_selects</span><span class="o">=</span><span class="n">trim_selects</span><span class="p">,</span>
|
||||
</span><span id="to_node-226"><a href="#to_node-226"><span class="linenos">226</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-227"><a href="#to_node-227"><span class="linenos">227</span></a>
|
||||
</span><span id="to_node-228"><a href="#to_node-228"><span class="linenos">228</span></a> <span class="c1"># if the select is a star add all scope sources as downstreams</span>
|
||||
</span><span id="to_node-229"><a href="#to_node-229"><span class="linenos">229</span></a> <span class="k">if</span> <span class="n">select</span><span class="o">.</span><span class="n">is_star</span><span class="p">:</span>
|
||||
</span><span id="to_node-230"><a href="#to_node-230"><span class="linenos">230</span></a> <span class="k">for</span> <span class="n">source</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
||||
</span><span id="to_node-231"><a href="#to_node-231"><span class="linenos">231</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">):</span>
|
||||
</span><span id="to_node-232"><a href="#to_node-232"><span class="linenos">232</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="to_node-233"><a href="#to_node-233"><span class="linenos">233</span></a> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
</span><span id="to_node-234"><a href="#to_node-234"><span class="linenos">234</span></a> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">select</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">comments</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">)</span>
|
||||
</span><span id="to_node-235"><a href="#to_node-235"><span class="linenos">235</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-236"><a href="#to_node-236"><span class="linenos">236</span></a>
|
||||
</span><span id="to_node-237"><a href="#to_node-237"><span class="linenos">237</span></a> <span class="c1"># Find all columns that went into creating this one to list their lineage nodes.</span>
|
||||
</span><span id="to_node-238"><a href="#to_node-238"><span class="linenos">238</span></a> <span class="n">source_columns</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">find_all_in_scope</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">))</span>
|
||||
</span><span id="to_node-239"><a href="#to_node-239"><span class="linenos">239</span></a>
|
||||
</span><span id="to_node-240"><a href="#to_node-240"><span class="linenos">240</span></a> <span class="c1"># If the source is a UDTF find columns used in the UTDF to generate the table</span>
|
||||
</span><span id="to_node-241"><a href="#to_node-241"><span class="linenos">241</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UDTF</span><span class="p">):</span>
|
||||
</span><span id="to_node-242"><a href="#to_node-242"><span class="linenos">242</span></a> <span class="n">source_columns</span> <span class="o">|=</span> <span class="nb">set</span><span class="p">(</span><span class="n">source</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">))</span>
|
||||
</span><span id="to_node-243"><a href="#to_node-243"><span class="linenos">243</span></a> <span class="n">derived_tables</span> <span class="o">=</span> <span class="p">[</span>
|
||||
</span><span id="to_node-244"><a href="#to_node-244"><span class="linenos">244</span></a> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span>
|
||||
</span><span id="to_node-245"><a href="#to_node-245"><span class="linenos">245</span></a> <span class="k">for</span> <span class="n">source</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">values</span><span class="p">()</span>
|
||||
</span><span id="to_node-246"><a href="#to_node-246"><span class="linenos">246</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">)</span> <span class="ow">and</span> <span class="n">source</span><span class="o">.</span><span class="n">is_derived_table</span>
|
||||
</span><span id="to_node-247"><a href="#to_node-247"><span class="linenos">247</span></a> <span class="p">]</span>
|
||||
</span><span id="to_node-248"><a href="#to_node-248"><span class="linenos">248</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="to_node-249"><a href="#to_node-249"><span class="linenos">249</span></a> <span class="n">derived_tables</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">derived_tables</span>
|
||||
</span><span id="to_node-250"><a href="#to_node-250"><span class="linenos">250</span></a>
|
||||
</span><span id="to_node-251"><a href="#to_node-251"><span class="linenos">251</span></a> <span class="n">source_names</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="to_node-252"><a href="#to_node-252"><span class="linenos">252</span></a> <span class="n">dt</span><span class="o">.</span><span class="n">alias</span><span class="p">:</span> <span class="n">dt</span><span class="o">.</span><span class="n">comments</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="mi">1</span><span class="p">]</span>
|
||||
</span><span id="to_node-253"><a href="#to_node-253"><span class="linenos">253</span></a> <span class="k">for</span> <span class="n">dt</span> <span class="ow">in</span> <span class="n">derived_tables</span>
|
||||
</span><span id="to_node-254"><a href="#to_node-254"><span class="linenos">254</span></a> <span class="k">if</span> <span class="n">dt</span><span class="o">.</span><span class="n">comments</span> <span class="ow">and</span> <span class="n">dt</span><span class="o">.</span><span class="n">comments</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"source: "</span><span class="p">)</span>
|
||||
</span><span id="to_node-255"><a href="#to_node-255"><span class="linenos">255</span></a> <span class="p">}</span>
|
||||
</span><span id="to_node-256"><a href="#to_node-256"><span class="linenos">256</span></a>
|
||||
</span><span id="to_node-257"><a href="#to_node-257"><span class="linenos">257</span></a> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">source_columns</span><span class="p">:</span>
|
||||
</span><span id="to_node-258"><a href="#to_node-258"><span class="linenos">258</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">table</span>
|
||||
</span><span id="to_node-259"><a href="#to_node-259"><span class="linenos">259</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
||||
</span><span id="to_node-260"><a href="#to_node-260"><span class="linenos">260</span></a>
|
||||
</span><span id="to_node-261"><a href="#to_node-261"><span class="linenos">261</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">):</span>
|
||||
</span><span id="to_node-262"><a href="#to_node-262"><span class="linenos">262</span></a> <span class="n">reference_node_name</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="to_node-263"><a href="#to_node-263"><span class="linenos">263</span></a> <span class="k">if</span> <span class="n">source</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 class="ow">and</span> <span class="n">table</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">source_names</span><span class="p">:</span>
|
||||
</span><span id="to_node-264"><a href="#to_node-264"><span class="linenos">264</span></a> <span class="n">reference_node_name</span> <span class="o">=</span> <span class="n">table</span>
|
||||
</span><span id="to_node-265"><a href="#to_node-265"><span class="linenos">265</span></a> <span class="k">elif</span> <span class="n">source</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 class="p">:</span>
|
||||
</span><span id="to_node-266"><a href="#to_node-266"><span class="linenos">266</span></a> <span class="n">selected_node</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">selected_sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
|
||||
</span><span id="to_node-267"><a href="#to_node-267"><span class="linenos">267</span></a> <span class="n">reference_node_name</span> <span class="o">=</span> <span class="n">selected_node</span><span class="o">.</span><span class="n">name</span> <span class="k">if</span> <span class="n">selected_node</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="to_node-268"><a href="#to_node-268"><span class="linenos">268</span></a> <span class="c1"># The table itself came from a more specific scope. Recurse into that one using the unaliased column name.</span>
|
||||
</span><span id="to_node-269"><a href="#to_node-269"><span class="linenos">269</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="to_node-270"><a href="#to_node-270"><span class="linenos">270</span></a> <span class="n">c</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
|
||||
</span><span id="to_node-271"><a href="#to_node-271"><span class="linenos">271</span></a> <span class="n">scope</span><span class="o">=</span><span class="n">source</span><span class="p">,</span>
|
||||
</span><span id="to_node-272"><a href="#to_node-272"><span class="linenos">272</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="to_node-273"><a href="#to_node-273"><span class="linenos">273</span></a> <span class="n">scope_name</span><span class="o">=</span><span class="n">table</span><span class="p">,</span>
|
||||
</span><span id="to_node-274"><a href="#to_node-274"><span class="linenos">274</span></a> <span class="n">upstream</span><span class="o">=</span><span class="n">node</span><span class="p">,</span>
|
||||
</span><span id="to_node-275"><a href="#to_node-275"><span class="linenos">275</span></a> <span class="n">source_name</span><span class="o">=</span><span class="n">source_names</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span> <span class="ow">or</span> <span class="n">source_name</span><span class="p">,</span>
|
||||
</span><span id="to_node-276"><a href="#to_node-276"><span class="linenos">276</span></a> <span class="n">reference_node_name</span><span class="o">=</span><span class="n">reference_node_name</span><span class="p">,</span>
|
||||
</span><span id="to_node-277"><a href="#to_node-277"><span class="linenos">277</span></a> <span class="n">trim_selects</span><span class="o">=</span><span class="n">trim_selects</span><span class="p">,</span>
|
||||
</span><span id="to_node-278"><a href="#to_node-278"><span class="linenos">278</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-279"><a href="#to_node-279"><span class="linenos">279</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="to_node-280"><a href="#to_node-280"><span class="linenos">280</span></a> <span class="c1"># The source is not a scope - we've reached the end of the line. At this point, if a source is not found</span>
|
||||
</span><span id="to_node-281"><a href="#to_node-281"><span class="linenos">281</span></a> <span class="c1"># it means this column's lineage is unknown. This can happen if the definition of a source used in a query</span>
|
||||
</span><span id="to_node-282"><a href="#to_node-282"><span class="linenos">282</span></a> <span class="c1"># is not passed into the `sources` map.</span>
|
||||
</span><span id="to_node-283"><a href="#to_node-283"><span class="linenos">283</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">source</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">()</span>
|
||||
</span><span id="to_node-284"><a href="#to_node-284"><span class="linenos">284</span></a> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
</span><span id="to_node-285"><a href="#to_node-285"><span class="linenos">285</span></a> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">comments</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">)</span>
|
||||
</span><span id="to_node-286"><a href="#to_node-286"><span class="linenos">286</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-287"><a href="#to_node-287"><span class="linenos">287</span></a>
|
||||
</span><span id="to_node-288"><a href="#to_node-288"><span class="linenos">288</span></a> <span class="k">return</span> <span class="n">node</span>
|
||||
</span><span id="to_node-156"><a href="#to_node-156"><span class="linenos">156</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">SetOperation</span><span class="p">):</span>
|
||||
</span><span id="to_node-157"><a href="#to_node-157"><span class="linenos">157</span></a> <span class="n">name</span> <span class="o">=</span> <span class="nb">type</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="o">.</span><span class="vm">__name__</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
|
||||
</span><span id="to_node-158"><a href="#to_node-158"><span class="linenos">158</span></a> <span class="n">upstream</span> <span class="o">=</span> <span class="n">upstream</span> <span class="ow">or</span> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">select</span><span class="p">)</span>
|
||||
</span><span id="to_node-159"><a href="#to_node-159"><span class="linenos">159</span></a>
|
||||
</span><span id="to_node-160"><a href="#to_node-160"><span class="linenos">160</span></a> <span class="n">index</span> <span class="o">=</span> <span class="p">(</span>
|
||||
</span><span id="to_node-161"><a href="#to_node-161"><span class="linenos">161</span></a> <span class="n">column</span>
|
||||
</span><span id="to_node-162"><a href="#to_node-162"><span class="linenos">162</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span>
|
||||
</span><span id="to_node-163"><a href="#to_node-163"><span class="linenos">163</span></a> <span class="k">else</span> <span class="nb">next</span><span class="p">(</span>
|
||||
</span><span id="to_node-164"><a href="#to_node-164"><span class="linenos">164</span></a> <span class="p">(</span>
|
||||
</span><span id="to_node-165"><a href="#to_node-165"><span class="linenos">165</span></a> <span class="n">i</span>
|
||||
</span><span id="to_node-166"><a href="#to_node-166"><span class="linenos">166</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">select</span> <span class="ow">in</span> <span class="nb">enumerate</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">selects</span><span class="p">)</span>
|
||||
</span><span id="to_node-167"><a href="#to_node-167"><span class="linenos">167</span></a> <span class="k">if</span> <span class="n">select</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="o">==</span> <span class="n">column</span> <span class="ow">or</span> <span class="n">select</span><span class="o">.</span><span class="n">is_star</span>
|
||||
</span><span id="to_node-168"><a href="#to_node-168"><span class="linenos">168</span></a> <span class="p">),</span>
|
||||
</span><span id="to_node-169"><a href="#to_node-169"><span class="linenos">169</span></a> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="c1"># mypy will not allow a None here, but a negative index should never be returned</span>
|
||||
</span><span id="to_node-170"><a href="#to_node-170"><span class="linenos">170</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-171"><a href="#to_node-171"><span class="linenos">171</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-172"><a href="#to_node-172"><span class="linenos">172</span></a>
|
||||
</span><span id="to_node-173"><a href="#to_node-173"><span class="linenos">173</span></a> <span class="k">if</span> <span class="n">index</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="to_node-174"><a href="#to_node-174"><span class="linenos">174</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Could not find </span><span class="si">{</span><span class="n">column</span><span class="si">}</span><span class="s2"> in </span><span class="si">{</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="to_node-175"><a href="#to_node-175"><span class="linenos">175</span></a>
|
||||
</span><span id="to_node-176"><a href="#to_node-176"><span class="linenos">176</span></a> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">union_scopes</span><span class="p">:</span>
|
||||
</span><span id="to_node-177"><a href="#to_node-177"><span class="linenos">177</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="to_node-178"><a href="#to_node-178"><span class="linenos">178</span></a> <span class="n">index</span><span class="p">,</span>
|
||||
</span><span id="to_node-179"><a href="#to_node-179"><span class="linenos">179</span></a> <span class="n">scope</span><span class="o">=</span><span class="n">s</span><span class="p">,</span>
|
||||
</span><span id="to_node-180"><a href="#to_node-180"><span class="linenos">180</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="to_node-181"><a href="#to_node-181"><span class="linenos">181</span></a> <span class="n">upstream</span><span class="o">=</span><span class="n">upstream</span><span class="p">,</span>
|
||||
</span><span id="to_node-182"><a href="#to_node-182"><span class="linenos">182</span></a> <span class="n">source_name</span><span class="o">=</span><span class="n">source_name</span><span class="p">,</span>
|
||||
</span><span id="to_node-183"><a href="#to_node-183"><span class="linenos">183</span></a> <span class="n">reference_node_name</span><span class="o">=</span><span class="n">reference_node_name</span><span class="p">,</span>
|
||||
</span><span id="to_node-184"><a href="#to_node-184"><span class="linenos">184</span></a> <span class="n">trim_selects</span><span class="o">=</span><span class="n">trim_selects</span><span class="p">,</span>
|
||||
</span><span id="to_node-185"><a href="#to_node-185"><span class="linenos">185</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-186"><a href="#to_node-186"><span class="linenos">186</span></a>
|
||||
</span><span id="to_node-187"><a href="#to_node-187"><span class="linenos">187</span></a> <span class="k">return</span> <span class="n">upstream</span>
|
||||
</span><span id="to_node-188"><a href="#to_node-188"><span class="linenos">188</span></a>
|
||||
</span><span id="to_node-189"><a href="#to_node-189"><span class="linenos">189</span></a> <span class="k">if</span> <span class="n">trim_selects</span> <span class="ow">and</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">Select</span><span class="p">):</span>
|
||||
</span><span id="to_node-190"><a href="#to_node-190"><span class="linenos">190</span></a> <span class="c1"># For better ergonomics in our node labels, replace the full select with</span>
|
||||
</span><span id="to_node-191"><a href="#to_node-191"><span class="linenos">191</span></a> <span class="c1"># a version that has only the column we care about.</span>
|
||||
</span><span id="to_node-192"><a href="#to_node-192"><span class="linenos">192</span></a> <span class="c1"># "x", SELECT x, y FROM foo</span>
|
||||
</span><span id="to_node-193"><a href="#to_node-193"><span class="linenos">193</span></a> <span class="c1"># => "x", SELECT x FROM foo</span>
|
||||
</span><span id="to_node-194"><a href="#to_node-194"><span class="linenos">194</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</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="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
|
||||
</span><span id="to_node-195"><a href="#to_node-195"><span class="linenos">195</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="to_node-196"><a href="#to_node-196"><span class="linenos">196</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="to_node-197"><a href="#to_node-197"><span class="linenos">197</span></a>
|
||||
</span><span id="to_node-198"><a href="#to_node-198"><span class="linenos">198</span></a> <span class="c1"># Create the node for this step in the lineage chain, and attach it to the previous one.</span>
|
||||
</span><span id="to_node-199"><a href="#to_node-199"><span class="linenos">199</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span>
|
||||
</span><span id="to_node-200"><a href="#to_node-200"><span class="linenos">200</span></a> <span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">scope_name</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">column</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">scope_name</span> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">column</span><span class="p">),</span>
|
||||
</span><span id="to_node-201"><a href="#to_node-201"><span class="linenos">201</span></a> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span>
|
||||
</span><span id="to_node-202"><a href="#to_node-202"><span class="linenos">202</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">select</span><span class="p">,</span>
|
||||
</span><span id="to_node-203"><a href="#to_node-203"><span class="linenos">203</span></a> <span class="n">source_name</span><span class="o">=</span><span class="n">source_name</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
||||
</span><span id="to_node-204"><a href="#to_node-204"><span class="linenos">204</span></a> <span class="n">reference_node_name</span><span class="o">=</span><span class="n">reference_node_name</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
||||
</span><span id="to_node-205"><a href="#to_node-205"><span class="linenos">205</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-206"><a href="#to_node-206"><span class="linenos">206</span></a>
|
||||
</span><span id="to_node-207"><a href="#to_node-207"><span class="linenos">207</span></a> <span class="k">if</span> <span class="n">upstream</span><span class="p">:</span>
|
||||
</span><span id="to_node-208"><a href="#to_node-208"><span class="linenos">208</span></a> <span class="n">upstream</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="to_node-209"><a href="#to_node-209"><span class="linenos">209</span></a>
|
||||
</span><span id="to_node-210"><a href="#to_node-210"><span class="linenos">210</span></a> <span class="n">subquery_scopes</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="to_node-211"><a href="#to_node-211"><span class="linenos">211</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">subquery_scope</span><span class="o">.</span><span class="n">expression</span><span class="p">):</span> <span class="n">subquery_scope</span> <span class="k">for</span> <span class="n">subquery_scope</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">subquery_scopes</span>
|
||||
</span><span id="to_node-212"><a href="#to_node-212"><span class="linenos">212</span></a> <span class="p">}</span>
|
||||
</span><span id="to_node-213"><a href="#to_node-213"><span class="linenos">213</span></a>
|
||||
</span><span id="to_node-214"><a href="#to_node-214"><span class="linenos">214</span></a> <span class="k">for</span> <span class="n">subquery</span> <span class="ow">in</span> <span class="n">find_all_in_scope</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UNWRAPPED_QUERIES</span><span class="p">):</span>
|
||||
</span><span id="to_node-215"><a href="#to_node-215"><span class="linenos">215</span></a> <span class="n">subquery_scope</span> <span class="o">=</span> <span class="n">subquery_scopes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="n">subquery</span><span class="p">))</span>
|
||||
</span><span id="to_node-216"><a href="#to_node-216"><span class="linenos">216</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">subquery_scope</span><span class="p">:</span>
|
||||
</span><span id="to_node-217"><a href="#to_node-217"><span class="linenos">217</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown subquery scope: </span><span class="si">{</span><span class="n">subquery</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="to_node-218"><a href="#to_node-218"><span class="linenos">218</span></a> <span class="k">continue</span>
|
||||
</span><span id="to_node-219"><a href="#to_node-219"><span class="linenos">219</span></a>
|
||||
</span><span id="to_node-220"><a href="#to_node-220"><span class="linenos">220</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">subquery</span><span class="o">.</span><span class="n">named_selects</span><span class="p">:</span>
|
||||
</span><span id="to_node-221"><a href="#to_node-221"><span class="linenos">221</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="to_node-222"><a href="#to_node-222"><span class="linenos">222</span></a> <span class="n">name</span><span class="p">,</span>
|
||||
</span><span id="to_node-223"><a href="#to_node-223"><span class="linenos">223</span></a> <span class="n">scope</span><span class="o">=</span><span class="n">subquery_scope</span><span class="p">,</span>
|
||||
</span><span id="to_node-224"><a href="#to_node-224"><span class="linenos">224</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="to_node-225"><a href="#to_node-225"><span class="linenos">225</span></a> <span class="n">upstream</span><span class="o">=</span><span class="n">node</span><span class="p">,</span>
|
||||
</span><span id="to_node-226"><a href="#to_node-226"><span class="linenos">226</span></a> <span class="n">trim_selects</span><span class="o">=</span><span class="n">trim_selects</span><span class="p">,</span>
|
||||
</span><span id="to_node-227"><a href="#to_node-227"><span class="linenos">227</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-228"><a href="#to_node-228"><span class="linenos">228</span></a>
|
||||
</span><span id="to_node-229"><a href="#to_node-229"><span class="linenos">229</span></a> <span class="c1"># if the select is a star add all scope sources as downstreams</span>
|
||||
</span><span id="to_node-230"><a href="#to_node-230"><span class="linenos">230</span></a> <span class="k">if</span> <span class="n">select</span><span class="o">.</span><span class="n">is_star</span><span class="p">:</span>
|
||||
</span><span id="to_node-231"><a href="#to_node-231"><span class="linenos">231</span></a> <span class="k">for</span> <span class="n">source</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
||||
</span><span id="to_node-232"><a href="#to_node-232"><span class="linenos">232</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">):</span>
|
||||
</span><span id="to_node-233"><a href="#to_node-233"><span class="linenos">233</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="to_node-234"><a href="#to_node-234"><span class="linenos">234</span></a> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
</span><span id="to_node-235"><a href="#to_node-235"><span class="linenos">235</span></a> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">select</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">comments</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">)</span>
|
||||
</span><span id="to_node-236"><a href="#to_node-236"><span class="linenos">236</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-237"><a href="#to_node-237"><span class="linenos">237</span></a>
|
||||
</span><span id="to_node-238"><a href="#to_node-238"><span class="linenos">238</span></a> <span class="c1"># Find all columns that went into creating this one to list their lineage nodes.</span>
|
||||
</span><span id="to_node-239"><a href="#to_node-239"><span class="linenos">239</span></a> <span class="n">source_columns</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">find_all_in_scope</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">))</span>
|
||||
</span><span id="to_node-240"><a href="#to_node-240"><span class="linenos">240</span></a>
|
||||
</span><span id="to_node-241"><a href="#to_node-241"><span class="linenos">241</span></a> <span class="c1"># If the source is a UDTF find columns used in the UTDF to generate the table</span>
|
||||
</span><span id="to_node-242"><a href="#to_node-242"><span class="linenos">242</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UDTF</span><span class="p">):</span>
|
||||
</span><span id="to_node-243"><a href="#to_node-243"><span class="linenos">243</span></a> <span class="n">source_columns</span> <span class="o">|=</span> <span class="nb">set</span><span class="p">(</span><span class="n">source</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">))</span>
|
||||
</span><span id="to_node-244"><a href="#to_node-244"><span class="linenos">244</span></a> <span class="n">derived_tables</span> <span class="o">=</span> <span class="p">[</span>
|
||||
</span><span id="to_node-245"><a href="#to_node-245"><span class="linenos">245</span></a> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span>
|
||||
</span><span id="to_node-246"><a href="#to_node-246"><span class="linenos">246</span></a> <span class="k">for</span> <span class="n">source</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">values</span><span class="p">()</span>
|
||||
</span><span id="to_node-247"><a href="#to_node-247"><span class="linenos">247</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">)</span> <span class="ow">and</span> <span class="n">source</span><span class="o">.</span><span class="n">is_derived_table</span>
|
||||
</span><span id="to_node-248"><a href="#to_node-248"><span class="linenos">248</span></a> <span class="p">]</span>
|
||||
</span><span id="to_node-249"><a href="#to_node-249"><span class="linenos">249</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="to_node-250"><a href="#to_node-250"><span class="linenos">250</span></a> <span class="n">derived_tables</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">derived_tables</span>
|
||||
</span><span id="to_node-251"><a href="#to_node-251"><span class="linenos">251</span></a>
|
||||
</span><span id="to_node-252"><a href="#to_node-252"><span class="linenos">252</span></a> <span class="n">source_names</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="to_node-253"><a href="#to_node-253"><span class="linenos">253</span></a> <span class="n">dt</span><span class="o">.</span><span class="n">alias</span><span class="p">:</span> <span class="n">dt</span><span class="o">.</span><span class="n">comments</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="mi">1</span><span class="p">]</span>
|
||||
</span><span id="to_node-254"><a href="#to_node-254"><span class="linenos">254</span></a> <span class="k">for</span> <span class="n">dt</span> <span class="ow">in</span> <span class="n">derived_tables</span>
|
||||
</span><span id="to_node-255"><a href="#to_node-255"><span class="linenos">255</span></a> <span class="k">if</span> <span class="n">dt</span><span class="o">.</span><span class="n">comments</span> <span class="ow">and</span> <span class="n">dt</span><span class="o">.</span><span class="n">comments</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"source: "</span><span class="p">)</span>
|
||||
</span><span id="to_node-256"><a href="#to_node-256"><span class="linenos">256</span></a> <span class="p">}</span>
|
||||
</span><span id="to_node-257"><a href="#to_node-257"><span class="linenos">257</span></a>
|
||||
</span><span id="to_node-258"><a href="#to_node-258"><span class="linenos">258</span></a> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">source_columns</span><span class="p">:</span>
|
||||
</span><span id="to_node-259"><a href="#to_node-259"><span class="linenos">259</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">table</span>
|
||||
</span><span id="to_node-260"><a href="#to_node-260"><span class="linenos">260</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
||||
</span><span id="to_node-261"><a href="#to_node-261"><span class="linenos">261</span></a>
|
||||
</span><span id="to_node-262"><a href="#to_node-262"><span class="linenos">262</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">):</span>
|
||||
</span><span id="to_node-263"><a href="#to_node-263"><span class="linenos">263</span></a> <span class="n">reference_node_name</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="to_node-264"><a href="#to_node-264"><span class="linenos">264</span></a> <span class="k">if</span> <span class="n">source</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 class="ow">and</span> <span class="n">table</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">source_names</span><span class="p">:</span>
|
||||
</span><span id="to_node-265"><a href="#to_node-265"><span class="linenos">265</span></a> <span class="n">reference_node_name</span> <span class="o">=</span> <span class="n">table</span>
|
||||
</span><span id="to_node-266"><a href="#to_node-266"><span class="linenos">266</span></a> <span class="k">elif</span> <span class="n">source</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 class="p">:</span>
|
||||
</span><span id="to_node-267"><a href="#to_node-267"><span class="linenos">267</span></a> <span class="n">selected_node</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">selected_sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
|
||||
</span><span id="to_node-268"><a href="#to_node-268"><span class="linenos">268</span></a> <span class="n">reference_node_name</span> <span class="o">=</span> <span class="n">selected_node</span><span class="o">.</span><span class="n">name</span> <span class="k">if</span> <span class="n">selected_node</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="to_node-269"><a href="#to_node-269"><span class="linenos">269</span></a> <span class="c1"># The table itself came from a more specific scope. Recurse into that one using the unaliased column name.</span>
|
||||
</span><span id="to_node-270"><a href="#to_node-270"><span class="linenos">270</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="to_node-271"><a href="#to_node-271"><span class="linenos">271</span></a> <span class="n">c</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
|
||||
</span><span id="to_node-272"><a href="#to_node-272"><span class="linenos">272</span></a> <span class="n">scope</span><span class="o">=</span><span class="n">source</span><span class="p">,</span>
|
||||
</span><span id="to_node-273"><a href="#to_node-273"><span class="linenos">273</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="to_node-274"><a href="#to_node-274"><span class="linenos">274</span></a> <span class="n">scope_name</span><span class="o">=</span><span class="n">table</span><span class="p">,</span>
|
||||
</span><span id="to_node-275"><a href="#to_node-275"><span class="linenos">275</span></a> <span class="n">upstream</span><span class="o">=</span><span class="n">node</span><span class="p">,</span>
|
||||
</span><span id="to_node-276"><a href="#to_node-276"><span class="linenos">276</span></a> <span class="n">source_name</span><span class="o">=</span><span class="n">source_names</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span> <span class="ow">or</span> <span class="n">source_name</span><span class="p">,</span>
|
||||
</span><span id="to_node-277"><a href="#to_node-277"><span class="linenos">277</span></a> <span class="n">reference_node_name</span><span class="o">=</span><span class="n">reference_node_name</span><span class="p">,</span>
|
||||
</span><span id="to_node-278"><a href="#to_node-278"><span class="linenos">278</span></a> <span class="n">trim_selects</span><span class="o">=</span><span class="n">trim_selects</span><span class="p">,</span>
|
||||
</span><span id="to_node-279"><a href="#to_node-279"><span class="linenos">279</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-280"><a href="#to_node-280"><span class="linenos">280</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="to_node-281"><a href="#to_node-281"><span class="linenos">281</span></a> <span class="c1"># The source is not a scope - we've reached the end of the line. At this point, if a source is not found</span>
|
||||
</span><span id="to_node-282"><a href="#to_node-282"><span class="linenos">282</span></a> <span class="c1"># it means this column's lineage is unknown. This can happen if the definition of a source used in a query</span>
|
||||
</span><span id="to_node-283"><a href="#to_node-283"><span class="linenos">283</span></a> <span class="c1"># is not passed into the `sources` map.</span>
|
||||
</span><span id="to_node-284"><a href="#to_node-284"><span class="linenos">284</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">source</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">()</span>
|
||||
</span><span id="to_node-285"><a href="#to_node-285"><span class="linenos">285</span></a> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
</span><span id="to_node-286"><a href="#to_node-286"><span class="linenos">286</span></a> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">comments</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">)</span>
|
||||
</span><span id="to_node-287"><a href="#to_node-287"><span class="linenos">287</span></a> <span class="p">)</span>
|
||||
</span><span id="to_node-288"><a href="#to_node-288"><span class="linenos">288</span></a>
|
||||
</span><span id="to_node-289"><a href="#to_node-289"><span class="linenos">289</span></a> <span class="k">return</span> <span class="n">node</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -997,82 +999,82 @@
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#GraphHTML"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="GraphHTML-291"><a href="#GraphHTML-291"><span class="linenos">291</span></a><span class="k">class</span> <span class="nc">GraphHTML</span><span class="p">:</span>
|
||||
</span><span id="GraphHTML-292"><a href="#GraphHTML-292"><span class="linenos">292</span></a><span class="w"> </span><span class="sd">"""Node to HTML generator using vis.js.</span>
|
||||
</span><span id="GraphHTML-293"><a href="#GraphHTML-293"><span class="linenos">293</span></a>
|
||||
</span><span id="GraphHTML-294"><a href="#GraphHTML-294"><span class="linenos">294</span></a><span class="sd"> https://visjs.github.io/vis-network/docs/network/</span>
|
||||
</span><span id="GraphHTML-295"><a href="#GraphHTML-295"><span class="linenos">295</span></a><span class="sd"> """</span>
|
||||
</span><span id="GraphHTML-296"><a href="#GraphHTML-296"><span class="linenos">296</span></a>
|
||||
</span><span id="GraphHTML-297"><a href="#GraphHTML-297"><span class="linenos">297</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="GraphHTML-298"><a href="#GraphHTML-298"><span class="linenos">298</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">nodes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">edges</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> <span class="n">imports</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">options</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="GraphHTML-299"><a href="#GraphHTML-299"><span class="linenos">299</span></a> <span class="p">):</span>
|
||||
</span><span id="GraphHTML-300"><a href="#GraphHTML-300"><span class="linenos">300</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span> <span class="o">=</span> <span class="n">imports</span>
|
||||
</span><span id="GraphHTML-301"><a href="#GraphHTML-301"><span class="linenos">301</span></a>
|
||||
</span><span id="GraphHTML-302"><a href="#GraphHTML-302"><span class="linenos">302</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-303"><a href="#GraphHTML-303"><span class="linenos">303</span></a> <span class="s2">"height"</span><span class="p">:</span> <span class="s2">"500px"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-304"><a href="#GraphHTML-304"><span class="linenos">304</span></a> <span class="s2">"width"</span><span class="p">:</span> <span class="s2">"100%"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-305"><a href="#GraphHTML-305"><span class="linenos">305</span></a> <span class="s2">"layout"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-306"><a href="#GraphHTML-306"><span class="linenos">306</span></a> <span class="s2">"hierarchical"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-307"><a href="#GraphHTML-307"><span class="linenos">307</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-308"><a href="#GraphHTML-308"><span class="linenos">308</span></a> <span class="s2">"nodeSpacing"</span><span class="p">:</span> <span class="mi">200</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-309"><a href="#GraphHTML-309"><span class="linenos">309</span></a> <span class="s2">"sortMethod"</span><span class="p">:</span> <span class="s2">"directed"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-310"><a href="#GraphHTML-310"><span class="linenos">310</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML-311"><a href="#GraphHTML-311"><span class="linenos">311</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML-312"><a href="#GraphHTML-312"><span class="linenos">312</span></a> <span class="s2">"interaction"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-313"><a href="#GraphHTML-313"><span class="linenos">313</span></a> <span class="s2">"dragNodes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-314"><a href="#GraphHTML-314"><span class="linenos">314</span></a> <span class="s2">"selectable"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-315"><a href="#GraphHTML-315"><span class="linenos">315</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML-316"><a href="#GraphHTML-316"><span class="linenos">316</span></a> <span class="s2">"physics"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-317"><a href="#GraphHTML-317"><span class="linenos">317</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-318"><a href="#GraphHTML-318"><span class="linenos">318</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML-319"><a href="#GraphHTML-319"><span class="linenos">319</span></a> <span class="s2">"edges"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-320"><a href="#GraphHTML-320"><span class="linenos">320</span></a> <span class="s2">"arrows"</span><span class="p">:</span> <span class="s2">"to"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-321"><a href="#GraphHTML-321"><span class="linenos">321</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML-322"><a href="#GraphHTML-322"><span class="linenos">322</span></a> <span class="s2">"nodes"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-323"><a href="#GraphHTML-323"><span class="linenos">323</span></a> <span class="s2">"font"</span><span class="p">:</span> <span class="s2">"20px monaco"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-324"><a href="#GraphHTML-324"><span class="linenos">324</span></a> <span class="s2">"shape"</span><span class="p">:</span> <span class="s2">"box"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-325"><a href="#GraphHTML-325"><span class="linenos">325</span></a> <span class="s2">"widthConstraint"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-326"><a href="#GraphHTML-326"><span class="linenos">326</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="mi">300</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-327"><a href="#GraphHTML-327"><span class="linenos">327</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML-328"><a href="#GraphHTML-328"><span class="linenos">328</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML-329"><a href="#GraphHTML-329"><span class="linenos">329</span></a> <span class="o">**</span><span class="p">(</span><span class="n">options</span> <span class="ow">or</span> <span class="p">{}),</span>
|
||||
</span><span id="GraphHTML-330"><a href="#GraphHTML-330"><span class="linenos">330</span></a> <span class="p">}</span>
|
||||
</span><span id="GraphHTML-331"><a href="#GraphHTML-331"><span class="linenos">331</span></a>
|
||||
</span><span id="GraphHTML-332"><a href="#GraphHTML-332"><span class="linenos">332</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span> <span class="o">=</span> <span class="n">nodes</span>
|
||||
</span><span id="GraphHTML-333"><a href="#GraphHTML-333"><span class="linenos">333</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span> <span class="o">=</span> <span class="n">edges</span>
|
||||
</span><span id="GraphHTML-334"><a href="#GraphHTML-334"><span class="linenos">334</span></a>
|
||||
</span><span id="GraphHTML-335"><a href="#GraphHTML-335"><span class="linenos">335</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="GraphHTML-336"><a href="#GraphHTML-336"><span class="linenos">336</span></a> <span class="n">nodes</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span>
|
||||
</span><span id="GraphHTML-337"><a href="#GraphHTML-337"><span class="linenos">337</span></a> <span class="n">edges</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">edges</span><span class="p">)</span>
|
||||
</span><span id="GraphHTML-338"><a href="#GraphHTML-338"><span class="linenos">338</span></a> <span class="n">options</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">)</span>
|
||||
</span><span id="GraphHTML-339"><a href="#GraphHTML-339"><span class="linenos">339</span></a> <span class="n">imports</span> <span class="o">=</span> <span class="p">(</span>
|
||||
</span><span id="GraphHTML-340"><a href="#GraphHTML-340"><span class="linenos">340</span></a><span class="w"> </span><span class="sd">"""<script type="text/javascript" src="https://unpkg.com/vis-data@latest/peer/umd/vis-data.min.js"></script></span>
|
||||
</span><span id="GraphHTML-341"><a href="#GraphHTML-341"><span class="linenos">341</span></a><span class="sd"> <script type="text/javascript" src="https://unpkg.com/vis-network@latest/peer/umd/vis-network.min.js"></script></span>
|
||||
</span><span id="GraphHTML-342"><a href="#GraphHTML-342"><span class="linenos">342</span></a><span class="sd"> <link rel="stylesheet" type="text/css" href="https://unpkg.com/vis-network/styles/vis-network.min.css" />"""</span>
|
||||
</span><span id="GraphHTML-343"><a href="#GraphHTML-343"><span class="linenos">343</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span>
|
||||
</span><span id="GraphHTML-344"><a href="#GraphHTML-344"><span class="linenos">344</span></a> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="GraphHTML-345"><a href="#GraphHTML-345"><span class="linenos">345</span></a> <span class="p">)</span>
|
||||
</span><span id="GraphHTML-346"><a href="#GraphHTML-346"><span class="linenos">346</span></a>
|
||||
</span><span id="GraphHTML-347"><a href="#GraphHTML-347"><span class="linenos">347</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"""<div></span>
|
||||
</span><span id="GraphHTML-348"><a href="#GraphHTML-348"><span class="linenos">348</span></a><span class="s2"> <div id="sqlglot-lineage"></div></span>
|
||||
</span><span id="GraphHTML-349"><a href="#GraphHTML-349"><span class="linenos">349</span></a><span class="s2"> </span><span class="si">{</span><span class="n">imports</span><span class="si">}</span>
|
||||
</span><span id="GraphHTML-350"><a href="#GraphHTML-350"><span class="linenos">350</span></a><span class="s2"> <script type="text/javascript"></span>
|
||||
</span><span id="GraphHTML-351"><a href="#GraphHTML-351"><span class="linenos">351</span></a><span class="s2"> var nodes = new vis.DataSet(</span><span class="si">{</span><span class="n">nodes</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="GraphHTML-352"><a href="#GraphHTML-352"><span class="linenos">352</span></a><span class="s2"> nodes.forEach(row => row["title"] = new DOMParser().parseFromString(row["title"], "text/html").body.childNodes[0])</span>
|
||||
</span><span id="GraphHTML-353"><a href="#GraphHTML-353"><span class="linenos">353</span></a>
|
||||
</span><span id="GraphHTML-354"><a href="#GraphHTML-354"><span class="linenos">354</span></a><span class="s2"> new vis.Network(</span>
|
||||
</span><span id="GraphHTML-355"><a href="#GraphHTML-355"><span class="linenos">355</span></a><span class="s2"> document.getElementById("sqlglot-lineage"),</span>
|
||||
</span><span id="GraphHTML-356"><a href="#GraphHTML-356"><span class="linenos">356</span></a><span class="s2"> </span><span class="se">{{</span>
|
||||
</span><span id="GraphHTML-357"><a href="#GraphHTML-357"><span class="linenos">357</span></a><span class="s2"> nodes: nodes,</span>
|
||||
</span><span id="GraphHTML-358"><a href="#GraphHTML-358"><span class="linenos">358</span></a><span class="s2"> edges: new vis.DataSet(</span><span class="si">{</span><span class="n">edges</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="GraphHTML-359"><a href="#GraphHTML-359"><span class="linenos">359</span></a><span class="s2"> </span><span class="se">}}</span><span class="s2">,</span>
|
||||
</span><span id="GraphHTML-360"><a href="#GraphHTML-360"><span class="linenos">360</span></a><span class="s2"> </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">,</span>
|
||||
</span><span id="GraphHTML-361"><a href="#GraphHTML-361"><span class="linenos">361</span></a><span class="s2"> )</span>
|
||||
</span><span id="GraphHTML-362"><a href="#GraphHTML-362"><span class="linenos">362</span></a><span class="s2"> </script></span>
|
||||
</span><span id="GraphHTML-363"><a href="#GraphHTML-363"><span class="linenos">363</span></a><span class="s2"></div>"""</span>
|
||||
</span><span id="GraphHTML-364"><a href="#GraphHTML-364"><span class="linenos">364</span></a>
|
||||
</span><span id="GraphHTML-365"><a href="#GraphHTML-365"><span class="linenos">365</span></a> <span class="k">def</span> <span class="nf">_repr_html_</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="GraphHTML-366"><a href="#GraphHTML-366"><span class="linenos">366</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__str__</span><span class="p">()</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="GraphHTML-292"><a href="#GraphHTML-292"><span class="linenos">292</span></a><span class="k">class</span> <span class="nc">GraphHTML</span><span class="p">:</span>
|
||||
</span><span id="GraphHTML-293"><a href="#GraphHTML-293"><span class="linenos">293</span></a><span class="w"> </span><span class="sd">"""Node to HTML generator using vis.js.</span>
|
||||
</span><span id="GraphHTML-294"><a href="#GraphHTML-294"><span class="linenos">294</span></a>
|
||||
</span><span id="GraphHTML-295"><a href="#GraphHTML-295"><span class="linenos">295</span></a><span class="sd"> https://visjs.github.io/vis-network/docs/network/</span>
|
||||
</span><span id="GraphHTML-296"><a href="#GraphHTML-296"><span class="linenos">296</span></a><span class="sd"> """</span>
|
||||
</span><span id="GraphHTML-297"><a href="#GraphHTML-297"><span class="linenos">297</span></a>
|
||||
</span><span id="GraphHTML-298"><a href="#GraphHTML-298"><span class="linenos">298</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="GraphHTML-299"><a href="#GraphHTML-299"><span class="linenos">299</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">nodes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">edges</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> <span class="n">imports</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">options</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="GraphHTML-300"><a href="#GraphHTML-300"><span class="linenos">300</span></a> <span class="p">):</span>
|
||||
</span><span id="GraphHTML-301"><a href="#GraphHTML-301"><span class="linenos">301</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span> <span class="o">=</span> <span class="n">imports</span>
|
||||
</span><span id="GraphHTML-302"><a href="#GraphHTML-302"><span class="linenos">302</span></a>
|
||||
</span><span id="GraphHTML-303"><a href="#GraphHTML-303"><span class="linenos">303</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-304"><a href="#GraphHTML-304"><span class="linenos">304</span></a> <span class="s2">"height"</span><span class="p">:</span> <span class="s2">"500px"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-305"><a href="#GraphHTML-305"><span class="linenos">305</span></a> <span class="s2">"width"</span><span class="p">:</span> <span class="s2">"100%"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-306"><a href="#GraphHTML-306"><span class="linenos">306</span></a> <span class="s2">"layout"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-307"><a href="#GraphHTML-307"><span class="linenos">307</span></a> <span class="s2">"hierarchical"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-308"><a href="#GraphHTML-308"><span class="linenos">308</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-309"><a href="#GraphHTML-309"><span class="linenos">309</span></a> <span class="s2">"nodeSpacing"</span><span class="p">:</span> <span class="mi">200</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-310"><a href="#GraphHTML-310"><span class="linenos">310</span></a> <span class="s2">"sortMethod"</span><span class="p">:</span> <span class="s2">"directed"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-311"><a href="#GraphHTML-311"><span class="linenos">311</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML-312"><a href="#GraphHTML-312"><span class="linenos">312</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML-313"><a href="#GraphHTML-313"><span class="linenos">313</span></a> <span class="s2">"interaction"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-314"><a href="#GraphHTML-314"><span class="linenos">314</span></a> <span class="s2">"dragNodes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-315"><a href="#GraphHTML-315"><span class="linenos">315</span></a> <span class="s2">"selectable"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-316"><a href="#GraphHTML-316"><span class="linenos">316</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML-317"><a href="#GraphHTML-317"><span class="linenos">317</span></a> <span class="s2">"physics"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-318"><a href="#GraphHTML-318"><span class="linenos">318</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-319"><a href="#GraphHTML-319"><span class="linenos">319</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML-320"><a href="#GraphHTML-320"><span class="linenos">320</span></a> <span class="s2">"edges"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-321"><a href="#GraphHTML-321"><span class="linenos">321</span></a> <span class="s2">"arrows"</span><span class="p">:</span> <span class="s2">"to"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-322"><a href="#GraphHTML-322"><span class="linenos">322</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML-323"><a href="#GraphHTML-323"><span class="linenos">323</span></a> <span class="s2">"nodes"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-324"><a href="#GraphHTML-324"><span class="linenos">324</span></a> <span class="s2">"font"</span><span class="p">:</span> <span class="s2">"20px monaco"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-325"><a href="#GraphHTML-325"><span class="linenos">325</span></a> <span class="s2">"shape"</span><span class="p">:</span> <span class="s2">"box"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-326"><a href="#GraphHTML-326"><span class="linenos">326</span></a> <span class="s2">"widthConstraint"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML-327"><a href="#GraphHTML-327"><span class="linenos">327</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="mi">300</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML-328"><a href="#GraphHTML-328"><span class="linenos">328</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML-329"><a href="#GraphHTML-329"><span class="linenos">329</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML-330"><a href="#GraphHTML-330"><span class="linenos">330</span></a> <span class="o">**</span><span class="p">(</span><span class="n">options</span> <span class="ow">or</span> <span class="p">{}),</span>
|
||||
</span><span id="GraphHTML-331"><a href="#GraphHTML-331"><span class="linenos">331</span></a> <span class="p">}</span>
|
||||
</span><span id="GraphHTML-332"><a href="#GraphHTML-332"><span class="linenos">332</span></a>
|
||||
</span><span id="GraphHTML-333"><a href="#GraphHTML-333"><span class="linenos">333</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span> <span class="o">=</span> <span class="n">nodes</span>
|
||||
</span><span id="GraphHTML-334"><a href="#GraphHTML-334"><span class="linenos">334</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span> <span class="o">=</span> <span class="n">edges</span>
|
||||
</span><span id="GraphHTML-335"><a href="#GraphHTML-335"><span class="linenos">335</span></a>
|
||||
</span><span id="GraphHTML-336"><a href="#GraphHTML-336"><span class="linenos">336</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="GraphHTML-337"><a href="#GraphHTML-337"><span class="linenos">337</span></a> <span class="n">nodes</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span>
|
||||
</span><span id="GraphHTML-338"><a href="#GraphHTML-338"><span class="linenos">338</span></a> <span class="n">edges</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">edges</span><span class="p">)</span>
|
||||
</span><span id="GraphHTML-339"><a href="#GraphHTML-339"><span class="linenos">339</span></a> <span class="n">options</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">)</span>
|
||||
</span><span id="GraphHTML-340"><a href="#GraphHTML-340"><span class="linenos">340</span></a> <span class="n">imports</span> <span class="o">=</span> <span class="p">(</span>
|
||||
</span><span id="GraphHTML-341"><a href="#GraphHTML-341"><span class="linenos">341</span></a><span class="w"> </span><span class="sd">"""<script type="text/javascript" src="https://unpkg.com/vis-data@latest/peer/umd/vis-data.min.js"></script></span>
|
||||
</span><span id="GraphHTML-342"><a href="#GraphHTML-342"><span class="linenos">342</span></a><span class="sd"> <script type="text/javascript" src="https://unpkg.com/vis-network@latest/peer/umd/vis-network.min.js"></script></span>
|
||||
</span><span id="GraphHTML-343"><a href="#GraphHTML-343"><span class="linenos">343</span></a><span class="sd"> <link rel="stylesheet" type="text/css" href="https://unpkg.com/vis-network/styles/vis-network.min.css" />"""</span>
|
||||
</span><span id="GraphHTML-344"><a href="#GraphHTML-344"><span class="linenos">344</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span>
|
||||
</span><span id="GraphHTML-345"><a href="#GraphHTML-345"><span class="linenos">345</span></a> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="GraphHTML-346"><a href="#GraphHTML-346"><span class="linenos">346</span></a> <span class="p">)</span>
|
||||
</span><span id="GraphHTML-347"><a href="#GraphHTML-347"><span class="linenos">347</span></a>
|
||||
</span><span id="GraphHTML-348"><a href="#GraphHTML-348"><span class="linenos">348</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"""<div></span>
|
||||
</span><span id="GraphHTML-349"><a href="#GraphHTML-349"><span class="linenos">349</span></a><span class="s2"> <div id="sqlglot-lineage"></div></span>
|
||||
</span><span id="GraphHTML-350"><a href="#GraphHTML-350"><span class="linenos">350</span></a><span class="s2"> </span><span class="si">{</span><span class="n">imports</span><span class="si">}</span>
|
||||
</span><span id="GraphHTML-351"><a href="#GraphHTML-351"><span class="linenos">351</span></a><span class="s2"> <script type="text/javascript"></span>
|
||||
</span><span id="GraphHTML-352"><a href="#GraphHTML-352"><span class="linenos">352</span></a><span class="s2"> var nodes = new vis.DataSet(</span><span class="si">{</span><span class="n">nodes</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="GraphHTML-353"><a href="#GraphHTML-353"><span class="linenos">353</span></a><span class="s2"> nodes.forEach(row => row["title"] = new DOMParser().parseFromString(row["title"], "text/html").body.childNodes[0])</span>
|
||||
</span><span id="GraphHTML-354"><a href="#GraphHTML-354"><span class="linenos">354</span></a>
|
||||
</span><span id="GraphHTML-355"><a href="#GraphHTML-355"><span class="linenos">355</span></a><span class="s2"> new vis.Network(</span>
|
||||
</span><span id="GraphHTML-356"><a href="#GraphHTML-356"><span class="linenos">356</span></a><span class="s2"> document.getElementById("sqlglot-lineage"),</span>
|
||||
</span><span id="GraphHTML-357"><a href="#GraphHTML-357"><span class="linenos">357</span></a><span class="s2"> </span><span class="se">{{</span>
|
||||
</span><span id="GraphHTML-358"><a href="#GraphHTML-358"><span class="linenos">358</span></a><span class="s2"> nodes: nodes,</span>
|
||||
</span><span id="GraphHTML-359"><a href="#GraphHTML-359"><span class="linenos">359</span></a><span class="s2"> edges: new vis.DataSet(</span><span class="si">{</span><span class="n">edges</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="GraphHTML-360"><a href="#GraphHTML-360"><span class="linenos">360</span></a><span class="s2"> </span><span class="se">}}</span><span class="s2">,</span>
|
||||
</span><span id="GraphHTML-361"><a href="#GraphHTML-361"><span class="linenos">361</span></a><span class="s2"> </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">,</span>
|
||||
</span><span id="GraphHTML-362"><a href="#GraphHTML-362"><span class="linenos">362</span></a><span class="s2"> )</span>
|
||||
</span><span id="GraphHTML-363"><a href="#GraphHTML-363"><span class="linenos">363</span></a><span class="s2"> </script></span>
|
||||
</span><span id="GraphHTML-364"><a href="#GraphHTML-364"><span class="linenos">364</span></a><span class="s2"></div>"""</span>
|
||||
</span><span id="GraphHTML-365"><a href="#GraphHTML-365"><span class="linenos">365</span></a>
|
||||
</span><span id="GraphHTML-366"><a href="#GraphHTML-366"><span class="linenos">366</span></a> <span class="k">def</span> <span class="nf">_repr_html_</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="GraphHTML-367"><a href="#GraphHTML-367"><span class="linenos">367</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__str__</span><span class="p">()</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -1092,43 +1094,43 @@
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#GraphHTML.__init__"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="GraphHTML.__init__-297"><a href="#GraphHTML.__init__-297"><span class="linenos">297</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="GraphHTML.__init__-298"><a href="#GraphHTML.__init__-298"><span class="linenos">298</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">nodes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">edges</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> <span class="n">imports</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">options</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="GraphHTML.__init__-299"><a href="#GraphHTML.__init__-299"><span class="linenos">299</span></a> <span class="p">):</span>
|
||||
</span><span id="GraphHTML.__init__-300"><a href="#GraphHTML.__init__-300"><span class="linenos">300</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span> <span class="o">=</span> <span class="n">imports</span>
|
||||
</span><span id="GraphHTML.__init__-301"><a href="#GraphHTML.__init__-301"><span class="linenos">301</span></a>
|
||||
</span><span id="GraphHTML.__init__-302"><a href="#GraphHTML.__init__-302"><span class="linenos">302</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-303"><a href="#GraphHTML.__init__-303"><span class="linenos">303</span></a> <span class="s2">"height"</span><span class="p">:</span> <span class="s2">"500px"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-304"><a href="#GraphHTML.__init__-304"><span class="linenos">304</span></a> <span class="s2">"width"</span><span class="p">:</span> <span class="s2">"100%"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-305"><a href="#GraphHTML.__init__-305"><span class="linenos">305</span></a> <span class="s2">"layout"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-306"><a href="#GraphHTML.__init__-306"><span class="linenos">306</span></a> <span class="s2">"hierarchical"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-307"><a href="#GraphHTML.__init__-307"><span class="linenos">307</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-308"><a href="#GraphHTML.__init__-308"><span class="linenos">308</span></a> <span class="s2">"nodeSpacing"</span><span class="p">:</span> <span class="mi">200</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-309"><a href="#GraphHTML.__init__-309"><span class="linenos">309</span></a> <span class="s2">"sortMethod"</span><span class="p">:</span> <span class="s2">"directed"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-310"><a href="#GraphHTML.__init__-310"><span class="linenos">310</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML.__init__-311"><a href="#GraphHTML.__init__-311"><span class="linenos">311</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML.__init__-312"><a href="#GraphHTML.__init__-312"><span class="linenos">312</span></a> <span class="s2">"interaction"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-313"><a href="#GraphHTML.__init__-313"><span class="linenos">313</span></a> <span class="s2">"dragNodes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-314"><a href="#GraphHTML.__init__-314"><span class="linenos">314</span></a> <span class="s2">"selectable"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-315"><a href="#GraphHTML.__init__-315"><span class="linenos">315</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML.__init__-316"><a href="#GraphHTML.__init__-316"><span class="linenos">316</span></a> <span class="s2">"physics"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-317"><a href="#GraphHTML.__init__-317"><span class="linenos">317</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-318"><a href="#GraphHTML.__init__-318"><span class="linenos">318</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML.__init__-319"><a href="#GraphHTML.__init__-319"><span class="linenos">319</span></a> <span class="s2">"edges"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-320"><a href="#GraphHTML.__init__-320"><span class="linenos">320</span></a> <span class="s2">"arrows"</span><span class="p">:</span> <span class="s2">"to"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-321"><a href="#GraphHTML.__init__-321"><span class="linenos">321</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML.__init__-322"><a href="#GraphHTML.__init__-322"><span class="linenos">322</span></a> <span class="s2">"nodes"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-323"><a href="#GraphHTML.__init__-323"><span class="linenos">323</span></a> <span class="s2">"font"</span><span class="p">:</span> <span class="s2">"20px monaco"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-324"><a href="#GraphHTML.__init__-324"><span class="linenos">324</span></a> <span class="s2">"shape"</span><span class="p">:</span> <span class="s2">"box"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-325"><a href="#GraphHTML.__init__-325"><span class="linenos">325</span></a> <span class="s2">"widthConstraint"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-326"><a href="#GraphHTML.__init__-326"><span class="linenos">326</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="mi">300</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-327"><a href="#GraphHTML.__init__-327"><span class="linenos">327</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML.__init__-328"><a href="#GraphHTML.__init__-328"><span class="linenos">328</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML.__init__-329"><a href="#GraphHTML.__init__-329"><span class="linenos">329</span></a> <span class="o">**</span><span class="p">(</span><span class="n">options</span> <span class="ow">or</span> <span class="p">{}),</span>
|
||||
</span><span id="GraphHTML.__init__-330"><a href="#GraphHTML.__init__-330"><span class="linenos">330</span></a> <span class="p">}</span>
|
||||
</span><span id="GraphHTML.__init__-331"><a href="#GraphHTML.__init__-331"><span class="linenos">331</span></a>
|
||||
</span><span id="GraphHTML.__init__-332"><a href="#GraphHTML.__init__-332"><span class="linenos">332</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span> <span class="o">=</span> <span class="n">nodes</span>
|
||||
</span><span id="GraphHTML.__init__-333"><a href="#GraphHTML.__init__-333"><span class="linenos">333</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span> <span class="o">=</span> <span class="n">edges</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="GraphHTML.__init__-298"><a href="#GraphHTML.__init__-298"><span class="linenos">298</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="GraphHTML.__init__-299"><a href="#GraphHTML.__init__-299"><span class="linenos">299</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">nodes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">edges</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> <span class="n">imports</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">options</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="GraphHTML.__init__-300"><a href="#GraphHTML.__init__-300"><span class="linenos">300</span></a> <span class="p">):</span>
|
||||
</span><span id="GraphHTML.__init__-301"><a href="#GraphHTML.__init__-301"><span class="linenos">301</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span> <span class="o">=</span> <span class="n">imports</span>
|
||||
</span><span id="GraphHTML.__init__-302"><a href="#GraphHTML.__init__-302"><span class="linenos">302</span></a>
|
||||
</span><span id="GraphHTML.__init__-303"><a href="#GraphHTML.__init__-303"><span class="linenos">303</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-304"><a href="#GraphHTML.__init__-304"><span class="linenos">304</span></a> <span class="s2">"height"</span><span class="p">:</span> <span class="s2">"500px"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-305"><a href="#GraphHTML.__init__-305"><span class="linenos">305</span></a> <span class="s2">"width"</span><span class="p">:</span> <span class="s2">"100%"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-306"><a href="#GraphHTML.__init__-306"><span class="linenos">306</span></a> <span class="s2">"layout"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-307"><a href="#GraphHTML.__init__-307"><span class="linenos">307</span></a> <span class="s2">"hierarchical"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-308"><a href="#GraphHTML.__init__-308"><span class="linenos">308</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-309"><a href="#GraphHTML.__init__-309"><span class="linenos">309</span></a> <span class="s2">"nodeSpacing"</span><span class="p">:</span> <span class="mi">200</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-310"><a href="#GraphHTML.__init__-310"><span class="linenos">310</span></a> <span class="s2">"sortMethod"</span><span class="p">:</span> <span class="s2">"directed"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-311"><a href="#GraphHTML.__init__-311"><span class="linenos">311</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML.__init__-312"><a href="#GraphHTML.__init__-312"><span class="linenos">312</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML.__init__-313"><a href="#GraphHTML.__init__-313"><span class="linenos">313</span></a> <span class="s2">"interaction"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-314"><a href="#GraphHTML.__init__-314"><span class="linenos">314</span></a> <span class="s2">"dragNodes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-315"><a href="#GraphHTML.__init__-315"><span class="linenos">315</span></a> <span class="s2">"selectable"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-316"><a href="#GraphHTML.__init__-316"><span class="linenos">316</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML.__init__-317"><a href="#GraphHTML.__init__-317"><span class="linenos">317</span></a> <span class="s2">"physics"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-318"><a href="#GraphHTML.__init__-318"><span class="linenos">318</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-319"><a href="#GraphHTML.__init__-319"><span class="linenos">319</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML.__init__-320"><a href="#GraphHTML.__init__-320"><span class="linenos">320</span></a> <span class="s2">"edges"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-321"><a href="#GraphHTML.__init__-321"><span class="linenos">321</span></a> <span class="s2">"arrows"</span><span class="p">:</span> <span class="s2">"to"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-322"><a href="#GraphHTML.__init__-322"><span class="linenos">322</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML.__init__-323"><a href="#GraphHTML.__init__-323"><span class="linenos">323</span></a> <span class="s2">"nodes"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-324"><a href="#GraphHTML.__init__-324"><span class="linenos">324</span></a> <span class="s2">"font"</span><span class="p">:</span> <span class="s2">"20px monaco"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-325"><a href="#GraphHTML.__init__-325"><span class="linenos">325</span></a> <span class="s2">"shape"</span><span class="p">:</span> <span class="s2">"box"</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-326"><a href="#GraphHTML.__init__-326"><span class="linenos">326</span></a> <span class="s2">"widthConstraint"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="GraphHTML.__init__-327"><a href="#GraphHTML.__init__-327"><span class="linenos">327</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="mi">300</span><span class="p">,</span>
|
||||
</span><span id="GraphHTML.__init__-328"><a href="#GraphHTML.__init__-328"><span class="linenos">328</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML.__init__-329"><a href="#GraphHTML.__init__-329"><span class="linenos">329</span></a> <span class="p">},</span>
|
||||
</span><span id="GraphHTML.__init__-330"><a href="#GraphHTML.__init__-330"><span class="linenos">330</span></a> <span class="o">**</span><span class="p">(</span><span class="n">options</span> <span class="ow">or</span> <span class="p">{}),</span>
|
||||
</span><span id="GraphHTML.__init__-331"><a href="#GraphHTML.__init__-331"><span class="linenos">331</span></a> <span class="p">}</span>
|
||||
</span><span id="GraphHTML.__init__-332"><a href="#GraphHTML.__init__-332"><span class="linenos">332</span></a>
|
||||
</span><span id="GraphHTML.__init__-333"><a href="#GraphHTML.__init__-333"><span class="linenos">333</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span> <span class="o">=</span> <span class="n">nodes</span>
|
||||
</span><span id="GraphHTML.__init__-334"><a href="#GraphHTML.__init__-334"><span class="linenos">334</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span> <span class="o">=</span> <span class="n">edges</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer 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>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.canonicalize 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>
|
||||
|
@ -121,7 +121,7 @@
|
|||
</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="ow">and</span> <span class="ow">not</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">"zone"</span><span class="p">)</span>
|
||||
</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a> <span class="p">):</span>
|
||||
</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">)</span>
|
||||
</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="p">:</span>
|
||||
</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</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">"zone"</span><span class="p">):</span>
|
||||
</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">node</span><span class="o">.</span><span class="n">type</span><span class="p">:</span>
|
||||
</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span>
|
||||
</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a>
|
||||
|
@ -344,7 +344,7 @@ conversions rely on type inference.</p>
|
|||
</span><span id="replace_date_funcs-43"><a href="#replace_date_funcs-43"><span class="linenos">43</span></a> <span class="ow">and</span> <span class="ow">not</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">"zone"</span><span class="p">)</span>
|
||||
</span><span id="replace_date_funcs-44"><a href="#replace_date_funcs-44"><span class="linenos">44</span></a> <span class="p">):</span>
|
||||
</span><span id="replace_date_funcs-45"><a href="#replace_date_funcs-45"><span class="linenos">45</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">)</span>
|
||||
</span><span id="replace_date_funcs-46"><a href="#replace_date_funcs-46"><span class="linenos">46</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="p">:</span>
|
||||
</span><span id="replace_date_funcs-46"><a href="#replace_date_funcs-46"><span class="linenos">46</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</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">"zone"</span><span class="p">):</span>
|
||||
</span><span id="replace_date_funcs-47"><a href="#replace_date_funcs-47"><span class="linenos">47</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">node</span><span class="o">.</span><span class="n">type</span><span class="p">:</span>
|
||||
</span><span id="replace_date_funcs-48"><a href="#replace_date_funcs-48"><span class="linenos">48</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span>
|
||||
</span><span id="replace_date_funcs-49"><a href="#replace_date_funcs-49"><span class="linenos">49</span></a>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.eliminate_ctes 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.eliminate_joins 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.eliminate_subqueries 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.isolate_table_selects 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.merge_subqueries 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>
|
||||
|
@ -586,7 +586,7 @@ queries if it would result in multiple table selects in a single query:</p>
|
|||
<div class="attr variable">
|
||||
<span class="name">UNMERGABLE_ARGS</span> =
|
||||
<input id="UNMERGABLE_ARGS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
<label class="view-value-button pdoc-button" for="UNMERGABLE_ARGS-view-value"></label><span class="default_value">{'prewhere', 'locks', 'having', 'distinct', 'into', 'limit', 'match', 'options', 'cluster', 'connect', 'laterals', 'windows', 'qualify', 'offset', 'pivots', 'sort', 'group', 'format', 'with', 'distribute', 'sample', 'kind', 'settings'}</span>
|
||||
<label class="view-value-button pdoc-button" for="UNMERGABLE_ARGS-view-value"></label><span class="default_value">{'kind', 'connect', 'having', 'prewhere', 'cluster', 'locks', 'distribute', 'limit', 'format', 'sort', 'laterals', 'into', 'qualify', 'group', 'offset', 'options', 'match', 'distinct', 'pivots', 'windows', 'sample', 'settings', 'with'}</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.normalize 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.normalize_identifiers 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.optimize_joins 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.optimizer 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.pushdown_predicates 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.pushdown_projections 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>
|
||||
|
@ -111,7 +111,7 @@
|
|||
</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="k">if</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</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">"distinct"</span><span class="p">):</span>
|
||||
</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="n">parent_selections</span> <span class="o">=</span> <span class="p">{</span><span class="n">SELECT_ALL</span><span class="p">}</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">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">Union</span><span class="p">):</span>
|
||||
</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</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">SetOperation</span><span class="p">):</span>
|
||||
</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="n">left</span><span class="p">,</span> <span class="n">right</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">union_scopes</span>
|
||||
</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="n">referenced_columns</span><span class="p">[</span><span class="n">left</span><span class="p">]</span> <span class="o">=</span> <span class="n">parent_selections</span>
|
||||
</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a>
|
||||
|
@ -282,7 +282,7 @@
|
|||
</span><span id="pushdown_projections-48"><a href="#pushdown_projections-48"><span class="linenos">48</span></a> <span class="k">if</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</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">"distinct"</span><span class="p">):</span>
|
||||
</span><span id="pushdown_projections-49"><a href="#pushdown_projections-49"><span class="linenos">49</span></a> <span class="n">parent_selections</span> <span class="o">=</span> <span class="p">{</span><span class="n">SELECT_ALL</span><span class="p">}</span>
|
||||
</span><span id="pushdown_projections-50"><a href="#pushdown_projections-50"><span class="linenos">50</span></a>
|
||||
</span><span id="pushdown_projections-51"><a href="#pushdown_projections-51"><span class="linenos">51</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">Union</span><span class="p">):</span>
|
||||
</span><span id="pushdown_projections-51"><a href="#pushdown_projections-51"><span class="linenos">51</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">SetOperation</span><span class="p">):</span>
|
||||
</span><span id="pushdown_projections-52"><a href="#pushdown_projections-52"><span class="linenos">52</span></a> <span class="n">left</span><span class="p">,</span> <span class="n">right</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">union_scopes</span>
|
||||
</span><span id="pushdown_projections-53"><a href="#pushdown_projections-53"><span class="linenos">53</span></a> <span class="n">referenced_columns</span><span class="p">[</span><span class="n">left</span><span class="p">]</span> <span class="o">=</span> <span class="n">parent_selections</span>
|
||||
</span><span id="pushdown_projections-54"><a href="#pushdown_projections-54"><span class="linenos">54</span></a>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.qualify 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>
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.qualify_tables 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>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.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>
|
||||
|
@ -273,7 +273,7 @@
|
|||
</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>
|
||||
</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a><span class="sd"> Attributes:</span>
|
||||
</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a><span class="sd"> expression (exp.Select|exp.Union): Root expression of this scope</span>
|
||||
</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a><span class="sd"> expression (exp.Select|exp.SetOperation): Root expression of this scope</span>
|
||||
</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a><span class="sd"> sources (dict[str, exp.Table|Scope]): Mapping of source name to either</span>
|
||||
</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a><span class="sd"> a Table expression or another Scope instance. For example:</span>
|
||||
</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a><span class="sd"> SELECT * FROM x {"x": Table(this="x")}</span>
|
||||
|
@ -477,7 +477,7 @@
|
|||
</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a><span class="sd"> SELECT * FROM x WHERE a IN (SELECT ...) <- that's a subquery</span>
|
||||
</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a>
|
||||
</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a><span class="sd"> list[exp.Select | exp.Union]: subqueries</span>
|
||||
</span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a><span class="sd"> list[exp.Select | exp.SetOperation]: subqueries</span>
|
||||
</span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_collected</span><span class="p">()</span>
|
||||
</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_subqueries</span>
|
||||
|
@ -583,7 +583,7 @@
|
|||
</span><span id="L-339"><a href="#L-339"><span class="linenos">339</span></a><span class="sd"> sources in the current scope.</span>
|
||||
</span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_external_columns</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a> <span class="k">if</span> <span class="nb">isinstance</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">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">):</span>
|
||||
</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a> <span class="k">if</span> <span class="nb">isinstance</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">exp</span><span class="o">.</span><span class="n">SetOperation</span><span class="p">):</span>
|
||||
</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a> <span class="n">left</span><span class="p">,</span> <span class="n">right</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">union_scopes</span>
|
||||
</span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_external_columns</span> <span class="o">=</span> <span class="n">left</span><span class="o">.</span><span class="n">external_columns</span> <span class="o">+</span> <span class="n">right</span><span class="o">.</span><span class="n">external_columns</span>
|
||||
</span><span id="L-345"><a href="#L-345"><span class="linenos">345</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
|
@ -779,7 +779,7 @@
|
|||
</span><span id="L-535"><a href="#L-535"><span class="linenos">535</span></a>
|
||||
</span><span id="L-536"><a href="#L-536"><span class="linenos">536</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>
|
||||
</span><span id="L-537"><a href="#L-537"><span class="linenos">537</span></a> <span class="k">yield from</span> <span class="n">_traverse_select</span><span class="p">(</span><span class="n">scope</span><span class="p">)</span>
|
||||
</span><span id="L-538"><a href="#L-538"><span class="linenos">538</span></a> <span class="k">elif</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">Union</span><span class="p">):</span>
|
||||
</span><span id="L-538"><a href="#L-538"><span class="linenos">538</span></a> <span class="k">elif</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">SetOperation</span><span class="p">):</span>
|
||||
</span><span id="L-539"><a href="#L-539"><span class="linenos">539</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-540"><a href="#L-540"><span class="linenos">540</span></a> <span class="k">yield from</span> <span class="n">_traverse_union</span><span class="p">(</span><span class="n">scope</span><span class="p">)</span>
|
||||
</span><span id="L-541"><a href="#L-541"><span class="linenos">541</span></a> <span class="k">return</span>
|
||||
|
@ -832,7 +832,7 @@
|
|||
</span><span id="L-588"><a href="#L-588"><span class="linenos">588</span></a> <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 class="p">,</span>
|
||||
</span><span id="L-589"><a href="#L-589"><span class="linenos">589</span></a> <span class="p">)</span>
|
||||
</span><span id="L-590"><a href="#L-590"><span class="linenos">590</span></a>
|
||||
</span><span id="L-591"><a href="#L-591"><span class="linenos">591</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">Union</span><span class="p">):</span>
|
||||
</span><span id="L-591"><a href="#L-591"><span class="linenos">591</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">SetOperation</span><span class="p">):</span>
|
||||
</span><span id="L-592"><a href="#L-592"><span class="linenos">592</span></a> <span class="k">yield from</span> <span class="n">_traverse_ctes</span><span class="p">(</span><span class="n">new_scope</span><span class="p">)</span>
|
||||
</span><span id="L-593"><a href="#L-593"><span class="linenos">593</span></a>
|
||||
</span><span id="L-594"><a href="#L-594"><span class="linenos">594</span></a> <span class="n">union_scope_stack</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_scope</span><span class="p">)</span>
|
||||
|
@ -864,7 +864,7 @@
|
|||
</span><span id="L-620"><a href="#L-620"><span class="linenos">620</span></a> <span class="k">if</span> <span class="n">with_</span> <span class="ow">and</span> <span class="n">with_</span><span class="o">.</span><span class="n">recursive</span><span class="p">:</span>
|
||||
</span><span id="L-621"><a href="#L-621"><span class="linenos">621</span></a> <span class="n">union</span> <span class="o">=</span> <span class="n">cte</span><span class="o">.</span><span class="n">this</span>
|
||||
</span><span id="L-622"><a href="#L-622"><span class="linenos">622</span></a>
|
||||
</span><span id="L-623"><a href="#L-623"><span class="linenos">623</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">union</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">):</span>
|
||||
</span><span id="L-623"><a href="#L-623"><span class="linenos">623</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">union</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">SetOperation</span><span class="p">):</span>
|
||||
</span><span id="L-624"><a href="#L-624"><span class="linenos">624</span></a> <span class="n">sources</span><span class="p">[</span><span class="n">cte_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">branch</span><span class="p">(</span><span class="n">union</span><span class="o">.</span><span class="n">this</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">CTE</span><span class="p">)</span>
|
||||
</span><span id="L-625"><a href="#L-625"><span class="linenos">625</span></a>
|
||||
</span><span id="L-626"><a href="#L-626"><span class="linenos">626</span></a> <span class="n">child_scope</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
@ -1252,7 +1252,7 @@
|
|||
</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>
|
||||
</span><span id="Scope-32"><a href="#Scope-32"><span class="linenos"> 32</span></a><span class="sd"> Attributes:</span>
|
||||
</span><span id="Scope-33"><a href="#Scope-33"><span class="linenos"> 33</span></a><span class="sd"> expression (exp.Select|exp.Union): Root expression of this scope</span>
|
||||
</span><span id="Scope-33"><a href="#Scope-33"><span class="linenos"> 33</span></a><span class="sd"> expression (exp.Select|exp.SetOperation): Root expression of this scope</span>
|
||||
</span><span id="Scope-34"><a href="#Scope-34"><span class="linenos"> 34</span></a><span class="sd"> sources (dict[str, exp.Table|Scope]): Mapping of source name to either</span>
|
||||
</span><span id="Scope-35"><a href="#Scope-35"><span class="linenos"> 35</span></a><span class="sd"> a Table expression or another Scope instance. For example:</span>
|
||||
</span><span id="Scope-36"><a href="#Scope-36"><span class="linenos"> 36</span></a><span class="sd"> SELECT * FROM x {"x": Table(this="x")}</span>
|
||||
|
@ -1456,7 +1456,7 @@
|
|||
</span><span id="Scope-234"><a href="#Scope-234"><span class="linenos">234</span></a><span class="sd"> SELECT * FROM x WHERE a IN (SELECT ...) <- that's a subquery</span>
|
||||
</span><span id="Scope-235"><a href="#Scope-235"><span class="linenos">235</span></a>
|
||||
</span><span id="Scope-236"><a href="#Scope-236"><span class="linenos">236</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="Scope-237"><a href="#Scope-237"><span class="linenos">237</span></a><span class="sd"> list[exp.Select | exp.Union]: subqueries</span>
|
||||
</span><span id="Scope-237"><a href="#Scope-237"><span class="linenos">237</span></a><span class="sd"> list[exp.Select | exp.SetOperation]: subqueries</span>
|
||||
</span><span id="Scope-238"><a href="#Scope-238"><span class="linenos">238</span></a><span class="sd"> """</span>
|
||||
</span><span id="Scope-239"><a href="#Scope-239"><span class="linenos">239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_collected</span><span class="p">()</span>
|
||||
</span><span id="Scope-240"><a href="#Scope-240"><span class="linenos">240</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_subqueries</span>
|
||||
|
@ -1562,7 +1562,7 @@
|
|||
</span><span id="Scope-340"><a href="#Scope-340"><span class="linenos">340</span></a><span class="sd"> sources in the current scope.</span>
|
||||
</span><span id="Scope-341"><a href="#Scope-341"><span class="linenos">341</span></a><span class="sd"> """</span>
|
||||
</span><span id="Scope-342"><a href="#Scope-342"><span class="linenos">342</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_external_columns</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="Scope-343"><a href="#Scope-343"><span class="linenos">343</span></a> <span class="k">if</span> <span class="nb">isinstance</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">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">):</span>
|
||||
</span><span id="Scope-343"><a href="#Scope-343"><span class="linenos">343</span></a> <span class="k">if</span> <span class="nb">isinstance</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">exp</span><span class="o">.</span><span class="n">SetOperation</span><span class="p">):</span>
|
||||
</span><span id="Scope-344"><a href="#Scope-344"><span class="linenos">344</span></a> <span class="n">left</span><span class="p">,</span> <span class="n">right</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">union_scopes</span>
|
||||
</span><span id="Scope-345"><a href="#Scope-345"><span class="linenos">345</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_external_columns</span> <span class="o">=</span> <span class="n">left</span><span class="o">.</span><span class="n">external_columns</span> <span class="o">+</span> <span class="n">right</span><span class="o">.</span><span class="n">external_columns</span>
|
||||
</span><span id="Scope-346"><a href="#Scope-346"><span class="linenos">346</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
|
@ -1715,7 +1715,7 @@
|
|||
<h6 id="attributes">Attributes:</h6>
|
||||
|
||||
<ul>
|
||||
<li><strong>expression (exp.Select|exp.Union):</strong> Root expression of this scope</li>
|
||||
<li><strong>expression (exp.Select|exp.SetOperation):</strong> Root expression of this scope</li>
|
||||
<li><strong>sources (dict[str, exp.Table|Scope]):</strong> Mapping of source name to either
|
||||
a Table expression or another Scope instance. For example:
|
||||
SELECT * FROM x {"x": Table(this="x")}
|
||||
|
@ -2249,7 +2249,7 @@ a list of the left and right child scopes.</li>
|
|||
</span><span id="Scope.subqueries-234"><a href="#Scope.subqueries-234"><span class="linenos">234</span></a><span class="sd"> SELECT * FROM x WHERE a IN (SELECT ...) <- that's a subquery</span>
|
||||
</span><span id="Scope.subqueries-235"><a href="#Scope.subqueries-235"><span class="linenos">235</span></a>
|
||||
</span><span id="Scope.subqueries-236"><a href="#Scope.subqueries-236"><span class="linenos">236</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="Scope.subqueries-237"><a href="#Scope.subqueries-237"><span class="linenos">237</span></a><span class="sd"> list[exp.Select | exp.Union]: subqueries</span>
|
||||
</span><span id="Scope.subqueries-237"><a href="#Scope.subqueries-237"><span class="linenos">237</span></a><span class="sd"> list[exp.Select | exp.SetOperation]: subqueries</span>
|
||||
</span><span id="Scope.subqueries-238"><a href="#Scope.subqueries-238"><span class="linenos">238</span></a><span class="sd"> """</span>
|
||||
</span><span id="Scope.subqueries-239"><a href="#Scope.subqueries-239"><span class="linenos">239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_collected</span><span class="p">()</span>
|
||||
</span><span id="Scope.subqueries-240"><a href="#Scope.subqueries-240"><span class="linenos">240</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_subqueries</span>
|
||||
|
@ -2267,7 +2267,7 @@ a list of the left and right child scopes.</li>
|
|||
<h6 id="returns">Returns:</h6>
|
||||
|
||||
<blockquote>
|
||||
<p>list[exp.Select | exp.Union]: subqueries</p>
|
||||
<p>list[exp.Select | exp.SetOperation]: subqueries</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
|
||||
|
@ -2461,7 +2461,7 @@ table only becomes a selected source if it's included in a FROM or JOIN clause.<
|
|||
</span><span id="Scope.external_columns-340"><a href="#Scope.external_columns-340"><span class="linenos">340</span></a><span class="sd"> sources in the current scope.</span>
|
||||
</span><span id="Scope.external_columns-341"><a href="#Scope.external_columns-341"><span class="linenos">341</span></a><span class="sd"> """</span>
|
||||
</span><span id="Scope.external_columns-342"><a href="#Scope.external_columns-342"><span class="linenos">342</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_external_columns</span> <span class="ow">is</span> <span class="kc">None</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">if</span> <span class="nb">isinstance</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">exp</span><span class="o">.</span><span class="n">Union</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">if</span> <span class="nb">isinstance</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">exp</span><span class="o">.</span><span class="n">SetOperation</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="n">left</span><span class="p">,</span> <span class="n">right</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">union_scopes</span>
|
||||
</span><span id="Scope.external_columns-345"><a href="#Scope.external_columns-345"><span class="linenos">345</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_external_columns</span> <span class="o">=</span> <span class="n">left</span><span class="o">.</span><span class="n">external_columns</span> <span class="o">+</span> <span class="n">right</span><span class="o">.</span><span class="n">external_columns</span>
|
||||
</span><span id="Scope.external_columns-346"><a href="#Scope.external_columns-346"><span class="linenos">346</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.optimizer.unnest_subqueries 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>
|
||||
|
@ -112,7 +112,7 @@
|
|||
</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="p">):</span>
|
||||
</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a> <span class="k">return</span>
|
||||
</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a>
|
||||
</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">):</span>
|
||||
</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">SetOperation</span><span class="p">):</span>
|
||||
</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="n">select</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">select</span><span class="o">.</span><span class="n">selects</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">select</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">next_alias_name</span><span class="p">()))</span>
|
||||
</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a>
|
||||
</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">next_alias_name</span><span class="p">()</span>
|
||||
|
@ -468,7 +468,7 @@ Convert correlated or vectorized subqueries into a group by so it is not a many
|
|||
</span><span id="unnest-49"><a href="#unnest-49"><span class="linenos"> 49</span></a> <span class="p">):</span>
|
||||
</span><span id="unnest-50"><a href="#unnest-50"><span class="linenos"> 50</span></a> <span class="k">return</span>
|
||||
</span><span id="unnest-51"><a href="#unnest-51"><span class="linenos"> 51</span></a>
|
||||
</span><span id="unnest-52"><a href="#unnest-52"><span class="linenos"> 52</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">):</span>
|
||||
</span><span id="unnest-52"><a href="#unnest-52"><span class="linenos"> 52</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">SetOperation</span><span class="p">):</span>
|
||||
</span><span id="unnest-53"><a href="#unnest-53"><span class="linenos"> 53</span></a> <span class="n">select</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">select</span><span class="o">.</span><span class="n">selects</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">select</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">next_alias_name</span><span class="p">()))</span>
|
||||
</span><span id="unnest-54"><a href="#unnest-54"><span class="linenos"> 54</span></a>
|
||||
</span><span id="unnest-55"><a href="#unnest-55"><span class="linenos"> 55</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">next_alias_name</span><span class="p">()</span>
|
||||
|
|
26228
docs/sqlglot/parser.html
26228
docs/sqlglot/parser.html
File diff suppressed because one or more lines are too long
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.planner 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>
|
||||
|
@ -304,7 +304,7 @@
|
|||
</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a>
|
||||
</span><span id="L-109"><a href="#L-109"><span class="linenos">109</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> <span class="ow">and</span> <span class="n">from_</span><span class="p">:</span>
|
||||
</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="n">step</span> <span class="o">=</span> <span class="n">Scan</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">from_</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
|
||||
</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> <span class="k">elif</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">Union</span><span class="p">):</span>
|
||||
</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> <span class="k">elif</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">SetOperation</span><span class="p">):</span>
|
||||
</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> <span class="n">step</span> <span class="o">=</span> <span class="n">SetOperation</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
|
||||
</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="n">step</span> <span class="o">=</span> <span class="n">Scan</span><span class="p">()</span>
|
||||
|
@ -320,13 +320,13 @@
|
|||
</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a>
|
||||
</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="n">projections</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># final selects in this chain of steps representing a select</span>
|
||||
</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="n">operands</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># intermediate computations of agg funcs eg x + 1 in SUM(x + 1)</span>
|
||||
</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="n">aggregations</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
||||
</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="n">aggregations</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="n">next_operand_name</span> <span class="o">=</span> <span class="n">name_sequence</span><span class="p">(</span><span class="s2">"_a_"</span><span class="p">)</span>
|
||||
</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a>
|
||||
</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="k">def</span> <span class="nf">extract_agg_operands</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span>
|
||||
</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="n">agg_funcs</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AggFunc</span><span class="p">))</span>
|
||||
</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="k">if</span> <span class="n">agg_funcs</span><span class="p">:</span>
|
||||
</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="n">aggregations</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="n">aggregations</span><span class="p">[</span><span class="n">expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a>
|
||||
</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">agg_funcs</span><span class="p">:</span>
|
||||
</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="k">for</span> <span class="n">operand</span> <span class="ow">in</span> <span class="n">agg</span><span class="o">.</span><span class="n">unnest_operands</span><span class="p">():</span>
|
||||
|
@ -622,7 +622,7 @@
|
|||
</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="k">def</span> <span class="nf">from_expression</span><span class="p">(</span>
|
||||
</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a> <span class="bp">cls</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="n">ctes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Step</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">SetOperation</span><span class="p">:</span>
|
||||
</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="k">assert</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">Union</span><span class="p">)</span>
|
||||
</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="k">assert</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">SetOperation</span><span class="p">)</span>
|
||||
</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a>
|
||||
</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
|
||||
</span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a> <span class="c1"># SELECT 1 UNION SELECT 2 <-- these subqueries don't have names</span>
|
||||
|
@ -877,7 +877,7 @@
|
|||
</span><span id="Step-109"><a href="#Step-109"><span class="linenos">109</span></a>
|
||||
</span><span id="Step-110"><a href="#Step-110"><span class="linenos">110</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> <span class="ow">and</span> <span class="n">from_</span><span class="p">:</span>
|
||||
</span><span id="Step-111"><a href="#Step-111"><span class="linenos">111</span></a> <span class="n">step</span> <span class="o">=</span> <span class="n">Scan</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">from_</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
|
||||
</span><span id="Step-112"><a href="#Step-112"><span class="linenos">112</span></a> <span class="k">elif</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">Union</span><span class="p">):</span>
|
||||
</span><span id="Step-112"><a href="#Step-112"><span class="linenos">112</span></a> <span class="k">elif</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">SetOperation</span><span class="p">):</span>
|
||||
</span><span id="Step-113"><a href="#Step-113"><span class="linenos">113</span></a> <span class="n">step</span> <span class="o">=</span> <span class="n">SetOperation</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
|
||||
</span><span id="Step-114"><a href="#Step-114"><span class="linenos">114</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="Step-115"><a href="#Step-115"><span class="linenos">115</span></a> <span class="n">step</span> <span class="o">=</span> <span class="n">Scan</span><span class="p">()</span>
|
||||
|
@ -893,13 +893,13 @@
|
|||
</span><span id="Step-125"><a href="#Step-125"><span class="linenos">125</span></a>
|
||||
</span><span id="Step-126"><a href="#Step-126"><span class="linenos">126</span></a> <span class="n">projections</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># final selects in this chain of steps representing a select</span>
|
||||
</span><span id="Step-127"><a href="#Step-127"><span class="linenos">127</span></a> <span class="n">operands</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># intermediate computations of agg funcs eg x + 1 in SUM(x + 1)</span>
|
||||
</span><span id="Step-128"><a href="#Step-128"><span class="linenos">128</span></a> <span class="n">aggregations</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
||||
</span><span id="Step-128"><a href="#Step-128"><span class="linenos">128</span></a> <span class="n">aggregations</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="Step-129"><a href="#Step-129"><span class="linenos">129</span></a> <span class="n">next_operand_name</span> <span class="o">=</span> <span class="n">name_sequence</span><span class="p">(</span><span class="s2">"_a_"</span><span class="p">)</span>
|
||||
</span><span id="Step-130"><a href="#Step-130"><span class="linenos">130</span></a>
|
||||
</span><span id="Step-131"><a href="#Step-131"><span class="linenos">131</span></a> <span class="k">def</span> <span class="nf">extract_agg_operands</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span>
|
||||
</span><span id="Step-132"><a href="#Step-132"><span class="linenos">132</span></a> <span class="n">agg_funcs</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AggFunc</span><span class="p">))</span>
|
||||
</span><span id="Step-133"><a href="#Step-133"><span class="linenos">133</span></a> <span class="k">if</span> <span class="n">agg_funcs</span><span class="p">:</span>
|
||||
</span><span id="Step-134"><a href="#Step-134"><span class="linenos">134</span></a> <span class="n">aggregations</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="Step-134"><a href="#Step-134"><span class="linenos">134</span></a> <span class="n">aggregations</span><span class="p">[</span><span class="n">expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="Step-135"><a href="#Step-135"><span class="linenos">135</span></a>
|
||||
</span><span id="Step-136"><a href="#Step-136"><span class="linenos">136</span></a> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">agg_funcs</span><span class="p">:</span>
|
||||
</span><span id="Step-137"><a href="#Step-137"><span class="linenos">137</span></a> <span class="k">for</span> <span class="n">operand</span> <span class="ow">in</span> <span class="n">agg</span><span class="o">.</span><span class="n">unnest_operands</span><span class="p">():</span>
|
||||
|
@ -1149,7 +1149,7 @@
|
|||
</span><span id="Step.from_expression-109"><a href="#Step.from_expression-109"><span class="linenos">109</span></a>
|
||||
</span><span id="Step.from_expression-110"><a href="#Step.from_expression-110"><span class="linenos">110</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> <span class="ow">and</span> <span class="n">from_</span><span class="p">:</span>
|
||||
</span><span id="Step.from_expression-111"><a href="#Step.from_expression-111"><span class="linenos">111</span></a> <span class="n">step</span> <span class="o">=</span> <span class="n">Scan</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">from_</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
|
||||
</span><span id="Step.from_expression-112"><a href="#Step.from_expression-112"><span class="linenos">112</span></a> <span class="k">elif</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">Union</span><span class="p">):</span>
|
||||
</span><span id="Step.from_expression-112"><a href="#Step.from_expression-112"><span class="linenos">112</span></a> <span class="k">elif</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">SetOperation</span><span class="p">):</span>
|
||||
</span><span id="Step.from_expression-113"><a href="#Step.from_expression-113"><span class="linenos">113</span></a> <span class="n">step</span> <span class="o">=</span> <span class="n">SetOperation</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
|
||||
</span><span id="Step.from_expression-114"><a href="#Step.from_expression-114"><span class="linenos">114</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="Step.from_expression-115"><a href="#Step.from_expression-115"><span class="linenos">115</span></a> <span class="n">step</span> <span class="o">=</span> <span class="n">Scan</span><span class="p">()</span>
|
||||
|
@ -1165,13 +1165,13 @@
|
|||
</span><span id="Step.from_expression-125"><a href="#Step.from_expression-125"><span class="linenos">125</span></a>
|
||||
</span><span id="Step.from_expression-126"><a href="#Step.from_expression-126"><span class="linenos">126</span></a> <span class="n">projections</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># final selects in this chain of steps representing a select</span>
|
||||
</span><span id="Step.from_expression-127"><a href="#Step.from_expression-127"><span class="linenos">127</span></a> <span class="n">operands</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># intermediate computations of agg funcs eg x + 1 in SUM(x + 1)</span>
|
||||
</span><span id="Step.from_expression-128"><a href="#Step.from_expression-128"><span class="linenos">128</span></a> <span class="n">aggregations</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
||||
</span><span id="Step.from_expression-128"><a href="#Step.from_expression-128"><span class="linenos">128</span></a> <span class="n">aggregations</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="Step.from_expression-129"><a href="#Step.from_expression-129"><span class="linenos">129</span></a> <span class="n">next_operand_name</span> <span class="o">=</span> <span class="n">name_sequence</span><span class="p">(</span><span class="s2">"_a_"</span><span class="p">)</span>
|
||||
</span><span id="Step.from_expression-130"><a href="#Step.from_expression-130"><span class="linenos">130</span></a>
|
||||
</span><span id="Step.from_expression-131"><a href="#Step.from_expression-131"><span class="linenos">131</span></a> <span class="k">def</span> <span class="nf">extract_agg_operands</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span>
|
||||
</span><span id="Step.from_expression-132"><a href="#Step.from_expression-132"><span class="linenos">132</span></a> <span class="n">agg_funcs</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AggFunc</span><span class="p">))</span>
|
||||
</span><span id="Step.from_expression-133"><a href="#Step.from_expression-133"><span class="linenos">133</span></a> <span class="k">if</span> <span class="n">agg_funcs</span><span class="p">:</span>
|
||||
</span><span id="Step.from_expression-134"><a href="#Step.from_expression-134"><span class="linenos">134</span></a> <span class="n">aggregations</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="Step.from_expression-134"><a href="#Step.from_expression-134"><span class="linenos">134</span></a> <span class="n">aggregations</span><span class="p">[</span><span class="n">expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="Step.from_expression-135"><a href="#Step.from_expression-135"><span class="linenos">135</span></a>
|
||||
</span><span id="Step.from_expression-136"><a href="#Step.from_expression-136"><span class="linenos">136</span></a> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">agg_funcs</span><span class="p">:</span>
|
||||
</span><span id="Step.from_expression-137"><a href="#Step.from_expression-137"><span class="linenos">137</span></a> <span class="k">for</span> <span class="n">operand</span> <span class="ow">in</span> <span class="n">agg</span><span class="o">.</span><span class="n">unnest_operands</span><span class="p">():</span>
|
||||
|
@ -2008,7 +2008,7 @@ Projections:</li>
|
|||
</span><span id="SetOperation-427"><a href="#SetOperation-427"><span class="linenos">427</span></a> <span class="k">def</span> <span class="nf">from_expression</span><span class="p">(</span>
|
||||
</span><span id="SetOperation-428"><a href="#SetOperation-428"><span class="linenos">428</span></a> <span class="bp">cls</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="n">ctes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Step</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="SetOperation-429"><a href="#SetOperation-429"><span class="linenos">429</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">SetOperation</span><span class="p">:</span>
|
||||
</span><span id="SetOperation-430"><a href="#SetOperation-430"><span class="linenos">430</span></a> <span class="k">assert</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">Union</span><span class="p">)</span>
|
||||
</span><span id="SetOperation-430"><a href="#SetOperation-430"><span class="linenos">430</span></a> <span class="k">assert</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">SetOperation</span><span class="p">)</span>
|
||||
</span><span id="SetOperation-431"><a href="#SetOperation-431"><span class="linenos">431</span></a>
|
||||
</span><span id="SetOperation-432"><a href="#SetOperation-432"><span class="linenos">432</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
|
||||
</span><span id="SetOperation-433"><a href="#SetOperation-433"><span class="linenos">433</span></a> <span class="c1"># SELECT 1 UNION SELECT 2 <-- these subqueries don't have names</span>
|
||||
|
@ -2134,7 +2134,7 @@ Projections:</li>
|
|||
</span><span id="SetOperation.from_expression-427"><a href="#SetOperation.from_expression-427"><span class="linenos">427</span></a> <span class="k">def</span> <span class="nf">from_expression</span><span class="p">(</span>
|
||||
</span><span id="SetOperation.from_expression-428"><a href="#SetOperation.from_expression-428"><span class="linenos">428</span></a> <span class="bp">cls</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="n">ctes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Step</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="SetOperation.from_expression-429"><a href="#SetOperation.from_expression-429"><span class="linenos">429</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">SetOperation</span><span class="p">:</span>
|
||||
</span><span id="SetOperation.from_expression-430"><a href="#SetOperation.from_expression-430"><span class="linenos">430</span></a> <span class="k">assert</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">Union</span><span class="p">)</span>
|
||||
</span><span id="SetOperation.from_expression-430"><a href="#SetOperation.from_expression-430"><span class="linenos">430</span></a> <span class="k">assert</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">SetOperation</span><span class="p">)</span>
|
||||
</span><span id="SetOperation.from_expression-431"><a href="#SetOperation.from_expression-431"><span class="linenos">431</span></a>
|
||||
</span><span id="SetOperation.from_expression-432"><a href="#SetOperation.from_expression-432"><span class="linenos">432</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
|
||||
</span><span id="SetOperation.from_expression-433"><a href="#SetOperation.from_expression-433"><span class="linenos">433</span></a> <span class="c1"># SELECT 1 UNION SELECT 2 <-- these subqueries don't have names</span>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.schema 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>
|
||||
|
@ -561,208 +561,210 @@
|
|||
</span><span id="L-386"><a href="#L-386"><span class="linenos">386</span></a>
|
||||
</span><span id="L-387"><a href="#L-387"><span class="linenos">387</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
</span><span id="L-388"><a href="#L-388"><span class="linenos">388</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="n">error_msg</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]),</span> <span class="nb">len</span><span class="p">(</span><span class="n">flattened_schema</span><span class="p">[</span><span class="mi">0</span><span class="p">])))</span>
|
||||
</span><span id="L-389"><a href="#L-389"><span class="linenos">389</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">first</span><span class="p">(</span><span class="n">columns</span><span class="o">.</span><span class="n">values</span><span class="p">()),</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
</span><span id="L-390"><a href="#L-390"><span class="linenos">390</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span>
|
||||
</span><span id="L-391"><a href="#L-391"><span class="linenos">391</span></a> <span class="n">error_msg</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
</span><span id="L-392"><a href="#L-392"><span class="linenos">392</span></a> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">keys</span> <span class="o">+</span> <span class="n">flatten_schema</span><span class="p">(</span><span class="n">columns</span><span class="p">)[</span><span class="mi">0</span><span class="p">]),</span> <span class="nb">len</span><span class="p">(</span><span class="n">flattened_schema</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="L-393"><a href="#L-393"><span class="linenos">393</span></a> <span class="p">),</span>
|
||||
</span><span id="L-394"><a href="#L-394"><span class="linenos">394</span></a> <span class="p">)</span>
|
||||
</span><span id="L-395"><a href="#L-395"><span class="linenos">395</span></a>
|
||||
</span><span id="L-396"><a href="#L-396"><span class="linenos">396</span></a> <span class="n">normalized_keys</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">]</span>
|
||||
</span><span id="L-397"><a href="#L-397"><span class="linenos">397</span></a> <span class="k">for</span> <span class="n">column_name</span><span class="p">,</span> <span class="n">column_type</span> <span class="ow">in</span> <span class="n">columns</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a> <span class="n">nested_set</span><span class="p">(</span>
|
||||
</span><span id="L-399"><a href="#L-399"><span class="linenos">399</span></a> <span class="n">normalized_mapping</span><span class="p">,</span>
|
||||
</span><span id="L-400"><a href="#L-400"><span class="linenos">400</span></a> <span class="n">normalized_keys</span> <span class="o">+</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="n">column_name</span><span class="p">)],</span>
|
||||
</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a> <span class="n">column_type</span><span class="p">,</span>
|
||||
</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a> <span class="p">)</span>
|
||||
</span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a>
|
||||
</span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="k">return</span> <span class="n">normalized_mapping</span>
|
||||
</span><span id="L-389"><a href="#L-389"><span class="linenos">389</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">columns</span><span class="p">:</span>
|
||||
</span><span id="L-390"><a href="#L-390"><span class="linenos">390</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Table </span><span class="si">{</span><span class="s1">'.'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span><span class="si">}</span><span class="s2"> must have at least one column"</span><span class="p">)</span>
|
||||
</span><span id="L-391"><a href="#L-391"><span class="linenos">391</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">first</span><span class="p">(</span><span class="n">columns</span><span class="o">.</span><span class="n">values</span><span class="p">()),</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
</span><span id="L-392"><a href="#L-392"><span class="linenos">392</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span>
|
||||
</span><span id="L-393"><a href="#L-393"><span class="linenos">393</span></a> <span class="n">error_msg</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
</span><span id="L-394"><a href="#L-394"><span class="linenos">394</span></a> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">keys</span> <span class="o">+</span> <span class="n">flatten_schema</span><span class="p">(</span><span class="n">columns</span><span class="p">)[</span><span class="mi">0</span><span class="p">]),</span> <span class="nb">len</span><span class="p">(</span><span class="n">flattened_schema</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="L-395"><a href="#L-395"><span class="linenos">395</span></a> <span class="p">),</span>
|
||||
</span><span id="L-396"><a href="#L-396"><span class="linenos">396</span></a> <span class="p">)</span>
|
||||
</span><span id="L-397"><a href="#L-397"><span class="linenos">397</span></a>
|
||||
</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a> <span class="n">normalized_keys</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">]</span>
|
||||
</span><span id="L-399"><a href="#L-399"><span class="linenos">399</span></a> <span class="k">for</span> <span class="n">column_name</span><span class="p">,</span> <span class="n">column_type</span> <span class="ow">in</span> <span class="n">columns</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
</span><span id="L-400"><a href="#L-400"><span class="linenos">400</span></a> <span class="n">nested_set</span><span class="p">(</span>
|
||||
</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a> <span class="n">normalized_mapping</span><span class="p">,</span>
|
||||
</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a> <span class="n">normalized_keys</span> <span class="o">+</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="n">column_name</span><span class="p">)],</span>
|
||||
</span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a> <span class="n">column_type</span><span class="p">,</span>
|
||||
</span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="p">)</span>
|
||||
</span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a>
|
||||
</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="k">def</span> <span class="nf">_normalize_table</span><span class="p">(</span>
|
||||
</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span>
|
||||
</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a> <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><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span>
|
||||
</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span>
|
||||
</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a> <span class="n">normalize</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="k">if</span> <span class="n">normalize</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">normalize</span>
|
||||
</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a>
|
||||
</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a> <span class="n">normalized_table</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">normalize</span><span class="p">)</span>
|
||||
</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="k">return</span> <span class="n">normalized_mapping</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="k">def</span> <span class="nf">_normalize_table</span><span class="p">(</span>
|
||||
</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a> <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="n">table</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span>
|
||||
</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a> <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><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span>
|
||||
</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span>
|
||||
</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a> <span class="n">normalize</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="k">if</span> <span class="n">normalize</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">normalize</span>
|
||||
</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a>
|
||||
</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a> <span class="k">if</span> <span class="n">normalize</span><span class="p">:</span>
|
||||
</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">TABLE_PARTS</span><span class="p">:</span>
|
||||
</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">normalized_table</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="n">arg</span><span class="p">)</span>
|
||||
</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span>
|
||||
</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="n">normalized_table</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
|
||||
</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a> <span class="n">arg</span><span class="p">,</span>
|
||||
</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="n">normalize_name</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">normalize</span><span class="o">=</span><span class="n">normalize</span><span class="p">),</span>
|
||||
</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="p">)</span>
|
||||
</span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a>
|
||||
</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="k">return</span> <span class="n">normalized_table</span>
|
||||
</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a> <span class="n">normalized_table</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">normalize</span><span class="p">)</span>
|
||||
</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a>
|
||||
</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="k">if</span> <span class="n">normalize</span><span class="p">:</span>
|
||||
</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">TABLE_PARTS</span><span class="p">:</span>
|
||||
</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">normalized_table</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="n">arg</span><span class="p">)</span>
|
||||
</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span>
|
||||
</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="n">normalized_table</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
|
||||
</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="n">arg</span><span class="p">,</span>
|
||||
</span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="n">normalize_name</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">normalize</span><span class="o">=</span><span class="n">normalize</span><span class="p">),</span>
|
||||
</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="p">)</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="k">def</span> <span class="nf">_normalize_name</span><span class="p">(</span>
|
||||
</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <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="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span>
|
||||
</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> <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><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a> <span class="n">is_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a> <span class="k">return</span> <span class="n">normalize_name</span><span class="p">(</span>
|
||||
</span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a> <span class="n">name</span><span class="p">,</span>
|
||||
</span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> <span class="n">is_table</span><span class="o">=</span><span class="n">is_table</span><span class="p">,</span>
|
||||
</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a> <span class="n">normalize</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="k">if</span> <span class="n">normalize</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">normalize</span><span class="p">,</span>
|
||||
</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a> <span class="p">)</span><span class="o">.</span><span class="n">name</span>
|
||||
</span><span id="L-441"><a href="#L-441"><span class="linenos">441</span></a>
|
||||
</span><span id="L-442"><a href="#L-442"><span class="linenos">442</span></a> <span class="k">def</span> <span class="nf">depth</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||||
</span><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span><span class="p">:</span>
|
||||
</span><span id="L-444"><a href="#L-444"><span class="linenos">444</span></a> <span class="c1"># The columns themselves are a mapping, but we don't want to include those</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">_depth</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">depth</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
</span><span id="L-446"><a href="#L-446"><span class="linenos">446</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</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">_to_data_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema_type</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">DataType</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">"""</span>
|
||||
</span><span id="L-450"><a href="#L-450"><span class="linenos">450</span></a><span class="sd"> Convert a type represented as a string to the corresponding `sqlglot.exp.DataType` object.</span>
|
||||
</span><span id="L-451"><a href="#L-451"><span class="linenos">451</span></a>
|
||||
</span><span id="L-452"><a href="#L-452"><span class="linenos">452</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-453"><a href="#L-453"><span class="linenos">453</span></a><span class="sd"> schema_type: the type we want to convert.</span>
|
||||
</span><span id="L-454"><a href="#L-454"><span class="linenos">454</span></a><span class="sd"> dialect: the SQL dialect that will be used to parse `schema_type`, if needed.</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="sd"> Returns:</span>
|
||||
</span><span id="L-457"><a href="#L-457"><span class="linenos">457</span></a><span class="sd"> The resulting expression type.</span>
|
||||
</span><span id="L-458"><a href="#L-458"><span class="linenos">458</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-459"><a href="#L-459"><span class="linenos">459</span></a> <span class="k">if</span> <span class="n">schema_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">:</span>
|
||||
</span><span id="L-460"><a href="#L-460"><span class="linenos">460</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span>
|
||||
</span><span id="L-461"><a href="#L-461"><span class="linenos">461</span></a> <span class="n">udt</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">SUPPORTS_USER_DEFINED_TYPES</span>
|
||||
</span><span id="L-462"><a href="#L-462"><span class="linenos">462</span></a>
|
||||
</span><span id="L-463"><a href="#L-463"><span class="linenos">463</span></a> <span class="k">try</span><span class="p">:</span>
|
||||
</span><span id="L-464"><a href="#L-464"><span class="linenos">464</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">schema_type</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="n">udt</span><span class="p">)</span>
|
||||
</span><span id="L-465"><a href="#L-465"><span class="linenos">465</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression</span>
|
||||
</span><span id="L-466"><a href="#L-466"><span class="linenos">466</span></a> <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
</span><span id="L-467"><a href="#L-467"><span class="linenos">467</span></a> <span class="n">in_dialect</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" in dialect </span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">dialect</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-468"><a href="#L-468"><span class="linenos">468</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to build type '</span><span class="si">{</span><span class="n">schema_type</span><span class="si">}</span><span class="s2">'</span><span class="si">{</span><span class="n">in_dialect</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</span><span id="L-469"><a href="#L-469"><span class="linenos">469</span></a>
|
||||
</span><span id="L-470"><a href="#L-470"><span class="linenos">470</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span>
|
||||
</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="k">return</span> <span class="n">normalized_table</span>
|
||||
</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a>
|
||||
</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a> <span class="k">def</span> <span class="nf">_normalize_name</span><span class="p">(</span>
|
||||
</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span>
|
||||
</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> <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><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="n">is_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a> <span class="k">return</span> <span class="n">normalize_name</span><span class="p">(</span>
|
||||
</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> <span class="n">name</span><span class="p">,</span>
|
||||
</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a> <span class="n">is_table</span><span class="o">=</span><span class="n">is_table</span><span class="p">,</span>
|
||||
</span><span id="L-441"><a href="#L-441"><span class="linenos">441</span></a> <span class="n">normalize</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="k">if</span> <span class="n">normalize</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">normalize</span><span class="p">,</span>
|
||||
</span><span id="L-442"><a href="#L-442"><span class="linenos">442</span></a> <span class="p">)</span><span class="o">.</span><span class="n">name</span>
|
||||
</span><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a>
|
||||
</span><span id="L-444"><a href="#L-444"><span class="linenos">444</span></a> <span class="k">def</span> <span class="nf">depth</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||||
</span><span id="L-445"><a href="#L-445"><span class="linenos">445</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span><span class="p">:</span>
|
||||
</span><span id="L-446"><a href="#L-446"><span class="linenos">446</span></a> <span class="c1"># The columns themselves are a mapping, but we don't want to include those</span>
|
||||
</span><span id="L-447"><a href="#L-447"><span class="linenos">447</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">depth</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
</span><span id="L-448"><a href="#L-448"><span class="linenos">448</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span>
|
||||
</span><span id="L-449"><a href="#L-449"><span class="linenos">449</span></a>
|
||||
</span><span id="L-450"><a href="#L-450"><span class="linenos">450</span></a> <span class="k">def</span> <span class="nf">_to_data_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema_type</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">DataType</span><span class="p">:</span>
|
||||
</span><span id="L-451"><a href="#L-451"><span class="linenos">451</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-452"><a href="#L-452"><span class="linenos">452</span></a><span class="sd"> Convert a type represented as a string to the corresponding `sqlglot.exp.DataType` object.</span>
|
||||
</span><span id="L-453"><a href="#L-453"><span class="linenos">453</span></a>
|
||||
</span><span id="L-454"><a href="#L-454"><span class="linenos">454</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-455"><a href="#L-455"><span class="linenos">455</span></a><span class="sd"> schema_type: the type we want to convert.</span>
|
||||
</span><span id="L-456"><a href="#L-456"><span class="linenos">456</span></a><span class="sd"> dialect: the SQL dialect that will be used to parse `schema_type`, if needed.</span>
|
||||
</span><span id="L-457"><a href="#L-457"><span class="linenos">457</span></a>
|
||||
</span><span id="L-458"><a href="#L-458"><span class="linenos">458</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-459"><a href="#L-459"><span class="linenos">459</span></a><span class="sd"> The resulting expression type.</span>
|
||||
</span><span id="L-460"><a href="#L-460"><span class="linenos">460</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-461"><a href="#L-461"><span class="linenos">461</span></a> <span class="k">if</span> <span class="n">schema_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">:</span>
|
||||
</span><span id="L-462"><a href="#L-462"><span class="linenos">462</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span>
|
||||
</span><span id="L-463"><a href="#L-463"><span class="linenos">463</span></a> <span class="n">udt</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">SUPPORTS_USER_DEFINED_TYPES</span>
|
||||
</span><span id="L-464"><a href="#L-464"><span class="linenos">464</span></a>
|
||||
</span><span id="L-465"><a href="#L-465"><span class="linenos">465</span></a> <span class="k">try</span><span class="p">:</span>
|
||||
</span><span id="L-466"><a href="#L-466"><span class="linenos">466</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">schema_type</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="n">udt</span><span class="p">)</span>
|
||||
</span><span id="L-467"><a href="#L-467"><span class="linenos">467</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression</span>
|
||||
</span><span id="L-468"><a href="#L-468"><span class="linenos">468</span></a> <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
</span><span id="L-469"><a href="#L-469"><span class="linenos">469</span></a> <span class="n">in_dialect</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" in dialect </span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">dialect</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-470"><a href="#L-470"><span class="linenos">470</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to build type '</span><span class="si">{</span><span class="n">schema_type</span><span class="si">}</span><span class="s2">'</span><span class="si">{</span><span class="n">in_dialect</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</span><span id="L-471"><a href="#L-471"><span class="linenos">471</span></a>
|
||||
</span><span id="L-472"><a href="#L-472"><span class="linenos">472</span></a>
|
||||
</span><span id="L-473"><a href="#L-473"><span class="linenos">473</span></a><span class="k">def</span> <span class="nf">normalize_name</span><span class="p">(</span>
|
||||
</span><span id="L-474"><a href="#L-474"><span class="linenos">474</span></a> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span>
|
||||
</span><span id="L-475"><a href="#L-475"><span class="linenos">475</span></a> <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><span id="L-476"><a href="#L-476"><span class="linenos">476</span></a> <span class="n">is_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-477"><a href="#L-477"><span class="linenos">477</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="L-478"><a href="#L-478"><span class="linenos">478</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">:</span>
|
||||
</span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
</span><span id="L-480"><a href="#L-480"><span class="linenos">480</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">parse_identifier</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="L-481"><a href="#L-481"><span class="linenos">481</span></a>
|
||||
</span><span id="L-482"><a href="#L-482"><span class="linenos">482</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">normalize</span><span class="p">:</span>
|
||||
</span><span id="L-483"><a href="#L-483"><span class="linenos">483</span></a> <span class="k">return</span> <span class="n">identifier</span>
|
||||
</span><span id="L-484"><a href="#L-484"><span class="linenos">484</span></a>
|
||||
</span><span id="L-485"><a href="#L-485"><span class="linenos">485</span></a> <span class="c1"># this is used for normalize_identifier, bigquery has special rules pertaining tables</span>
|
||||
</span><span id="L-486"><a href="#L-486"><span class="linenos">486</span></a> <span class="n">identifier</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">"is_table"</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_table</span>
|
||||
</span><span id="L-487"><a href="#L-487"><span class="linenos">487</span></a> <span class="k">return</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">normalize_identifier</span><span class="p">(</span><span class="n">identifier</span><span class="p">)</span>
|
||||
</span><span id="L-488"><a href="#L-488"><span class="linenos">488</span></a>
|
||||
</span><span id="L-489"><a href="#L-489"><span class="linenos">489</span></a>
|
||||
</span><span id="L-490"><a href="#L-490"><span class="linenos">490</span></a><span class="k">def</span> <span class="nf">ensure_schema</span><span class="p">(</span><span class="n">schema</span><span class="p">:</span> <span class="n">Schema</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">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-></span> <span class="n">Schema</span><span class="p">:</span>
|
||||
</span><span id="L-491"><a href="#L-491"><span class="linenos">491</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">Schema</span><span class="p">):</span>
|
||||
</span><span id="L-492"><a href="#L-492"><span class="linenos">492</span></a> <span class="k">return</span> <span class="n">schema</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 class="k">return</span> <span class="n">MappingSchema</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
</span><span id="L-472"><a href="#L-472"><span class="linenos">472</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span>
|
||||
</span><span id="L-473"><a href="#L-473"><span class="linenos">473</span></a>
|
||||
</span><span id="L-474"><a href="#L-474"><span class="linenos">474</span></a>
|
||||
</span><span id="L-475"><a href="#L-475"><span class="linenos">475</span></a><span class="k">def</span> <span class="nf">normalize_name</span><span class="p">(</span>
|
||||
</span><span id="L-476"><a href="#L-476"><span class="linenos">476</span></a> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span>
|
||||
</span><span id="L-477"><a href="#L-477"><span class="linenos">477</span></a> <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><span id="L-478"><a href="#L-478"><span class="linenos">478</span></a> <span class="n">is_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="L-480"><a href="#L-480"><span class="linenos">480</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">:</span>
|
||||
</span><span id="L-481"><a href="#L-481"><span class="linenos">481</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
</span><span id="L-482"><a href="#L-482"><span class="linenos">482</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">parse_identifier</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="L-483"><a href="#L-483"><span class="linenos">483</span></a>
|
||||
</span><span id="L-484"><a href="#L-484"><span class="linenos">484</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">normalize</span><span class="p">:</span>
|
||||
</span><span id="L-485"><a href="#L-485"><span class="linenos">485</span></a> <span class="k">return</span> <span class="n">identifier</span>
|
||||
</span><span id="L-486"><a href="#L-486"><span class="linenos">486</span></a>
|
||||
</span><span id="L-487"><a href="#L-487"><span class="linenos">487</span></a> <span class="c1"># this is used for normalize_identifier, bigquery has special rules pertaining tables</span>
|
||||
</span><span id="L-488"><a href="#L-488"><span class="linenos">488</span></a> <span class="n">identifier</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">"is_table"</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_table</span>
|
||||
</span><span id="L-489"><a href="#L-489"><span class="linenos">489</span></a> <span class="k">return</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">normalize_identifier</span><span class="p">(</span><span class="n">identifier</span><span class="p">)</span>
|
||||
</span><span id="L-490"><a href="#L-490"><span class="linenos">490</span></a>
|
||||
</span><span id="L-491"><a href="#L-491"><span class="linenos">491</span></a>
|
||||
</span><span id="L-492"><a href="#L-492"><span class="linenos">492</span></a><span class="k">def</span> <span class="nf">ensure_schema</span><span class="p">(</span><span class="n">schema</span><span class="p">:</span> <span class="n">Schema</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">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-></span> <span class="n">Schema</span><span class="p">:</span>
|
||||
</span><span id="L-493"><a href="#L-493"><span class="linenos">493</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">Schema</span><span class="p">):</span>
|
||||
</span><span id="L-494"><a href="#L-494"><span class="linenos">494</span></a> <span class="k">return</span> <span class="n">schema</span>
|
||||
</span><span id="L-495"><a href="#L-495"><span class="linenos">495</span></a>
|
||||
</span><span id="L-496"><a href="#L-496"><span class="linenos">496</span></a>
|
||||
</span><span id="L-497"><a href="#L-497"><span class="linenos">497</span></a><span class="k">def</span> <span class="nf">ensure_column_mapping</span><span class="p">(</span><span class="n">mapping</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ColumnMapping</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
|
||||
</span><span id="L-498"><a href="#L-498"><span class="linenos">498</span></a> <span class="k">if</span> <span class="n">mapping</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="L-499"><a href="#L-499"><span class="linenos">499</span></a> <span class="k">return</span> <span class="p">{}</span>
|
||||
</span><span id="L-500"><a href="#L-500"><span class="linenos">500</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
</span><span id="L-501"><a href="#L-501"><span class="linenos">501</span></a> <span class="k">return</span> <span class="n">mapping</span>
|
||||
</span><span id="L-502"><a href="#L-502"><span class="linenos">502</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
</span><span id="L-503"><a href="#L-503"><span class="linenos">503</span></a> <span class="n">col_name_type_strs</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)]</span>
|
||||
</span><span id="L-504"><a href="#L-504"><span class="linenos">504</span></a> <span class="k">return</span> <span class="p">{</span>
|
||||
</span><span id="L-505"><a href="#L-505"><span class="linenos">505</span></a> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">":"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">":"</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
</span><span id="L-506"><a href="#L-506"><span class="linenos">506</span></a> <span class="k">for</span> <span class="n">name_type_str</span> <span class="ow">in</span> <span class="n">col_name_type_strs</span>
|
||||
</span><span id="L-507"><a href="#L-507"><span class="linenos">507</span></a> <span class="p">}</span>
|
||||
</span><span id="L-508"><a href="#L-508"><span class="linenos">508</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
||||
</span><span id="L-509"><a href="#L-509"><span class="linenos">509</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span>
|
||||
</span><span id="L-510"><a href="#L-510"><span class="linenos">510</span></a>
|
||||
</span><span id="L-511"><a href="#L-511"><span class="linenos">511</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid mapping provided: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">mapping</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="L-496"><a href="#L-496"><span class="linenos">496</span></a> <span class="k">return</span> <span class="n">MappingSchema</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
</span><span id="L-497"><a href="#L-497"><span class="linenos">497</span></a>
|
||||
</span><span id="L-498"><a href="#L-498"><span class="linenos">498</span></a>
|
||||
</span><span id="L-499"><a href="#L-499"><span class="linenos">499</span></a><span class="k">def</span> <span class="nf">ensure_column_mapping</span><span class="p">(</span><span class="n">mapping</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ColumnMapping</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
|
||||
</span><span id="L-500"><a href="#L-500"><span class="linenos">500</span></a> <span class="k">if</span> <span class="n">mapping</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="L-501"><a href="#L-501"><span class="linenos">501</span></a> <span class="k">return</span> <span class="p">{}</span>
|
||||
</span><span id="L-502"><a href="#L-502"><span class="linenos">502</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
</span><span id="L-503"><a href="#L-503"><span class="linenos">503</span></a> <span class="k">return</span> <span class="n">mapping</span>
|
||||
</span><span id="L-504"><a href="#L-504"><span class="linenos">504</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
</span><span id="L-505"><a href="#L-505"><span class="linenos">505</span></a> <span class="n">col_name_type_strs</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)]</span>
|
||||
</span><span id="L-506"><a href="#L-506"><span class="linenos">506</span></a> <span class="k">return</span> <span class="p">{</span>
|
||||
</span><span id="L-507"><a href="#L-507"><span class="linenos">507</span></a> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">":"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">":"</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
</span><span id="L-508"><a href="#L-508"><span class="linenos">508</span></a> <span class="k">for</span> <span class="n">name_type_str</span> <span class="ow">in</span> <span class="n">col_name_type_strs</span>
|
||||
</span><span id="L-509"><a href="#L-509"><span class="linenos">509</span></a> <span class="p">}</span>
|
||||
</span><span id="L-510"><a href="#L-510"><span class="linenos">510</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
||||
</span><span id="L-511"><a href="#L-511"><span class="linenos">511</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span>
|
||||
</span><span id="L-512"><a href="#L-512"><span class="linenos">512</span></a>
|
||||
</span><span id="L-513"><a href="#L-513"><span class="linenos">513</span></a>
|
||||
</span><span id="L-514"><a href="#L-514"><span class="linenos">514</span></a><span class="k">def</span> <span class="nf">flatten_schema</span><span class="p">(</span>
|
||||
</span><span id="L-515"><a href="#L-515"><span class="linenos">515</span></a> <span class="n">schema</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">depth</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="L-516"><a href="#L-516"><span class="linenos">516</span></a><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">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
|
||||
</span><span id="L-517"><a href="#L-517"><span class="linenos">517</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="L-518"><a href="#L-518"><span class="linenos">518</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">keys</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
</span><span id="L-519"><a href="#L-519"><span class="linenos">519</span></a> <span class="n">depth</span> <span class="o">=</span> <span class="n">dict_depth</span><span class="p">(</span><span class="n">schema</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">depth</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">depth</span>
|
||||
</span><span id="L-520"><a href="#L-520"><span class="linenos">520</span></a>
|
||||
</span><span id="L-521"><a href="#L-521"><span class="linenos">521</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">schema</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
</span><span id="L-522"><a href="#L-522"><span class="linenos">522</span></a> <span class="k">if</span> <span class="n">depth</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
</span><span id="L-523"><a href="#L-523"><span class="linenos">523</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">])</span>
|
||||
</span><span id="L-524"><a href="#L-524"><span class="linenos">524</span></a> <span class="k">elif</span> <span class="n">depth</span> <span class="o">>=</span> <span class="mi">2</span><span class="p">:</span>
|
||||
</span><span id="L-525"><a href="#L-525"><span class="linenos">525</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">flatten_schema</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">depth</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">]))</span>
|
||||
</span><span id="L-526"><a href="#L-526"><span class="linenos">526</span></a>
|
||||
</span><span id="L-527"><a href="#L-527"><span class="linenos">527</span></a> <span class="k">return</span> <span class="n">tables</span>
|
||||
</span><span id="L-513"><a href="#L-513"><span class="linenos">513</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid mapping provided: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">mapping</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="L-514"><a href="#L-514"><span class="linenos">514</span></a>
|
||||
</span><span id="L-515"><a href="#L-515"><span class="linenos">515</span></a>
|
||||
</span><span id="L-516"><a href="#L-516"><span class="linenos">516</span></a><span class="k">def</span> <span class="nf">flatten_schema</span><span class="p">(</span>
|
||||
</span><span id="L-517"><a href="#L-517"><span class="linenos">517</span></a> <span class="n">schema</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">depth</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="L-518"><a href="#L-518"><span class="linenos">518</span></a><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">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
|
||||
</span><span id="L-519"><a href="#L-519"><span class="linenos">519</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="L-520"><a href="#L-520"><span class="linenos">520</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">keys</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
</span><span id="L-521"><a href="#L-521"><span class="linenos">521</span></a> <span class="n">depth</span> <span class="o">=</span> <span class="n">dict_depth</span><span class="p">(</span><span class="n">schema</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">depth</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">depth</span>
|
||||
</span><span id="L-522"><a href="#L-522"><span class="linenos">522</span></a>
|
||||
</span><span id="L-523"><a href="#L-523"><span class="linenos">523</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">schema</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
</span><span id="L-524"><a href="#L-524"><span class="linenos">524</span></a> <span class="k">if</span> <span class="n">depth</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
</span><span id="L-525"><a href="#L-525"><span class="linenos">525</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">])</span>
|
||||
</span><span id="L-526"><a href="#L-526"><span class="linenos">526</span></a> <span class="k">elif</span> <span class="n">depth</span> <span class="o">>=</span> <span class="mi">2</span><span class="p">:</span>
|
||||
</span><span id="L-527"><a href="#L-527"><span class="linenos">527</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">flatten_schema</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">depth</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">]))</span>
|
||||
</span><span id="L-528"><a href="#L-528"><span class="linenos">528</span></a>
|
||||
</span><span id="L-529"><a href="#L-529"><span class="linenos">529</span></a>
|
||||
</span><span id="L-530"><a href="#L-530"><span class="linenos">530</span></a><span class="k">def</span> <span class="nf">nested_get</span><span class="p">(</span>
|
||||
</span><span id="L-531"><a href="#L-531"><span class="linenos">531</span></a> <span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="o">*</span><span class="n">path</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="nb">str</span><span class="p">],</span> <span class="n">raise_on_missing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</span><span id="L-532"><a href="#L-532"><span class="linenos">532</span></a><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">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]:</span>
|
||||
</span><span id="L-533"><a href="#L-533"><span class="linenos">533</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-534"><a href="#L-534"><span class="linenos">534</span></a><span class="sd"> Get a value for a nested dictionary.</span>
|
||||
</span><span id="L-535"><a href="#L-535"><span class="linenos">535</span></a>
|
||||
</span><span id="L-536"><a href="#L-536"><span class="linenos">536</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-537"><a href="#L-537"><span class="linenos">537</span></a><span class="sd"> d: the dictionary to search.</span>
|
||||
</span><span id="L-538"><a href="#L-538"><span class="linenos">538</span></a><span class="sd"> *path: tuples of (name, key), where:</span>
|
||||
</span><span id="L-539"><a href="#L-539"><span class="linenos">539</span></a><span class="sd"> `key` is the key in the dictionary to get.</span>
|
||||
</span><span id="L-540"><a href="#L-540"><span class="linenos">540</span></a><span class="sd"> `name` is a string to use in the error if `key` isn't found.</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="sd"> Returns:</span>
|
||||
</span><span id="L-543"><a href="#L-543"><span class="linenos">543</span></a><span class="sd"> The value or None if it doesn't exist.</span>
|
||||
</span><span id="L-544"><a href="#L-544"><span class="linenos">544</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-545"><a href="#L-545"><span class="linenos">545</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">path</span><span class="p">:</span>
|
||||
</span><span id="L-546"><a href="#L-546"><span class="linenos">546</span></a> <span class="n">d</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="c1"># type: ignore</span>
|
||||
</span><span id="L-547"><a href="#L-547"><span class="linenos">547</span></a> <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="L-548"><a href="#L-548"><span class="linenos">548</span></a> <span class="k">if</span> <span class="n">raise_on_missing</span><span class="p">:</span>
|
||||
</span><span id="L-549"><a href="#L-549"><span class="linenos">549</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"table"</span> <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"this"</span> <span class="k">else</span> <span class="n">name</span>
|
||||
</span><span id="L-550"><a href="#L-550"><span class="linenos">550</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="L-551"><a href="#L-551"><span class="linenos">551</span></a> <span class="k">return</span> <span class="kc">None</span>
|
||||
</span><span id="L-552"><a href="#L-552"><span class="linenos">552</span></a>
|
||||
</span><span id="L-553"><a href="#L-553"><span class="linenos">553</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
</span><span id="L-529"><a href="#L-529"><span class="linenos">529</span></a> <span class="k">return</span> <span class="n">tables</span>
|
||||
</span><span id="L-530"><a href="#L-530"><span class="linenos">530</span></a>
|
||||
</span><span id="L-531"><a href="#L-531"><span class="linenos">531</span></a>
|
||||
</span><span id="L-532"><a href="#L-532"><span class="linenos">532</span></a><span class="k">def</span> <span class="nf">nested_get</span><span class="p">(</span>
|
||||
</span><span id="L-533"><a href="#L-533"><span class="linenos">533</span></a> <span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="o">*</span><span class="n">path</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="nb">str</span><span class="p">],</span> <span class="n">raise_on_missing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</span><span id="L-534"><a href="#L-534"><span class="linenos">534</span></a><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">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]:</span>
|
||||
</span><span id="L-535"><a href="#L-535"><span class="linenos">535</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-536"><a href="#L-536"><span class="linenos">536</span></a><span class="sd"> Get a value for a nested dictionary.</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 class="sd"> Args:</span>
|
||||
</span><span id="L-539"><a href="#L-539"><span class="linenos">539</span></a><span class="sd"> d: the dictionary to search.</span>
|
||||
</span><span id="L-540"><a href="#L-540"><span class="linenos">540</span></a><span class="sd"> *path: tuples of (name, key), where:</span>
|
||||
</span><span id="L-541"><a href="#L-541"><span class="linenos">541</span></a><span class="sd"> `key` is the key in the dictionary to get.</span>
|
||||
</span><span id="L-542"><a href="#L-542"><span class="linenos">542</span></a><span class="sd"> `name` is a string to use in the error if `key` isn't found.</span>
|
||||
</span><span id="L-543"><a href="#L-543"><span class="linenos">543</span></a>
|
||||
</span><span id="L-544"><a href="#L-544"><span class="linenos">544</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-545"><a href="#L-545"><span class="linenos">545</span></a><span class="sd"> The value or None if it doesn't exist.</span>
|
||||
</span><span id="L-546"><a href="#L-546"><span class="linenos">546</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-547"><a href="#L-547"><span class="linenos">547</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">path</span><span class="p">:</span>
|
||||
</span><span id="L-548"><a href="#L-548"><span class="linenos">548</span></a> <span class="n">d</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="c1"># type: ignore</span>
|
||||
</span><span id="L-549"><a href="#L-549"><span class="linenos">549</span></a> <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="L-550"><a href="#L-550"><span class="linenos">550</span></a> <span class="k">if</span> <span class="n">raise_on_missing</span><span class="p">:</span>
|
||||
</span><span id="L-551"><a href="#L-551"><span class="linenos">551</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"table"</span> <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"this"</span> <span class="k">else</span> <span class="n">name</span>
|
||||
</span><span id="L-552"><a href="#L-552"><span class="linenos">552</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="L-553"><a href="#L-553"><span class="linenos">553</span></a> <span class="k">return</span> <span class="kc">None</span>
|
||||
</span><span id="L-554"><a href="#L-554"><span class="linenos">554</span></a>
|
||||
</span><span id="L-555"><a href="#L-555"><span class="linenos">555</span></a>
|
||||
</span><span id="L-556"><a href="#L-556"><span class="linenos">556</span></a><span class="k">def</span> <span class="nf">nested_set</span><span class="p">(</span><span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
|
||||
</span><span id="L-557"><a href="#L-557"><span class="linenos">557</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-558"><a href="#L-558"><span class="linenos">558</span></a><span class="sd"> In-place set a value for a nested dictionary</span>
|
||||
</span><span id="L-559"><a href="#L-559"><span class="linenos">559</span></a>
|
||||
</span><span id="L-560"><a href="#L-560"><span class="linenos">560</span></a><span class="sd"> Example:</span>
|
||||
</span><span id="L-561"><a href="#L-561"><span class="linenos">561</span></a><span class="sd"> >>> nested_set({}, ["top_key", "second_key"], "value")</span>
|
||||
</span><span id="L-562"><a href="#L-562"><span class="linenos">562</span></a><span class="sd"> {'top_key': {'second_key': 'value'}}</span>
|
||||
</span><span id="L-563"><a href="#L-563"><span class="linenos">563</span></a>
|
||||
</span><span id="L-564"><a href="#L-564"><span class="linenos">564</span></a><span class="sd"> >>> nested_set({"top_key": {"third_key": "third_value"}}, ["top_key", "second_key"], "value")</span>
|
||||
</span><span id="L-565"><a href="#L-565"><span class="linenos">565</span></a><span class="sd"> {'top_key': {'third_key': 'third_value', 'second_key': 'value'}}</span>
|
||||
</span><span id="L-566"><a href="#L-566"><span class="linenos">566</span></a>
|
||||
</span><span id="L-567"><a href="#L-567"><span class="linenos">567</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-568"><a href="#L-568"><span class="linenos">568</span></a><span class="sd"> d: dictionary to update.</span>
|
||||
</span><span id="L-569"><a href="#L-569"><span class="linenos">569</span></a><span class="sd"> keys: the keys that makeup the path to `value`.</span>
|
||||
</span><span id="L-570"><a href="#L-570"><span class="linenos">570</span></a><span class="sd"> value: the value to set in the dictionary for the given key path.</span>
|
||||
</span><span id="L-571"><a href="#L-571"><span class="linenos">571</span></a>
|
||||
</span><span id="L-572"><a href="#L-572"><span class="linenos">572</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-573"><a href="#L-573"><span class="linenos">573</span></a><span class="sd"> The (possibly) updated dictionary.</span>
|
||||
</span><span id="L-574"><a href="#L-574"><span class="linenos">574</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-575"><a href="#L-575"><span class="linenos">575</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">keys</span><span class="p">:</span>
|
||||
</span><span id="L-576"><a href="#L-576"><span class="linenos">576</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
</span><span id="L-577"><a href="#L-577"><span class="linenos">577</span></a>
|
||||
</span><span id="L-578"><a href="#L-578"><span class="linenos">578</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="L-579"><a href="#L-579"><span class="linenos">579</span></a> <span class="n">d</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span>
|
||||
</span><span id="L-580"><a href="#L-580"><span class="linenos">580</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
</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="n">subd</span> <span class="o">=</span> <span class="n">d</span>
|
||||
</span><span id="L-583"><a href="#L-583"><span class="linenos">583</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span>
|
||||
</span><span id="L-584"><a href="#L-584"><span class="linenos">584</span></a> <span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">subd</span><span class="p">:</span>
|
||||
</span><span id="L-585"><a href="#L-585"><span class="linenos">585</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="p">{})</span>
|
||||
</span><span id="L-586"><a href="#L-586"><span class="linenos">586</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-587"><a href="#L-587"><span class="linenos">587</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
|
||||
</span><span id="L-588"><a href="#L-588"><span class="linenos">588</span></a>
|
||||
</span><span id="L-589"><a href="#L-589"><span class="linenos">589</span></a> <span class="n">subd</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span>
|
||||
</span><span id="L-590"><a href="#L-590"><span class="linenos">590</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
</span><span id="L-555"><a href="#L-555"><span class="linenos">555</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
</span><span id="L-556"><a href="#L-556"><span class="linenos">556</span></a>
|
||||
</span><span id="L-557"><a href="#L-557"><span class="linenos">557</span></a>
|
||||
</span><span id="L-558"><a href="#L-558"><span class="linenos">558</span></a><span class="k">def</span> <span class="nf">nested_set</span><span class="p">(</span><span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
|
||||
</span><span id="L-559"><a href="#L-559"><span class="linenos">559</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-560"><a href="#L-560"><span class="linenos">560</span></a><span class="sd"> In-place set a value for a nested dictionary</span>
|
||||
</span><span id="L-561"><a href="#L-561"><span class="linenos">561</span></a>
|
||||
</span><span id="L-562"><a href="#L-562"><span class="linenos">562</span></a><span class="sd"> Example:</span>
|
||||
</span><span id="L-563"><a href="#L-563"><span class="linenos">563</span></a><span class="sd"> >>> nested_set({}, ["top_key", "second_key"], "value")</span>
|
||||
</span><span id="L-564"><a href="#L-564"><span class="linenos">564</span></a><span class="sd"> {'top_key': {'second_key': 'value'}}</span>
|
||||
</span><span id="L-565"><a href="#L-565"><span class="linenos">565</span></a>
|
||||
</span><span id="L-566"><a href="#L-566"><span class="linenos">566</span></a><span class="sd"> >>> nested_set({"top_key": {"third_key": "third_value"}}, ["top_key", "second_key"], "value")</span>
|
||||
</span><span id="L-567"><a href="#L-567"><span class="linenos">567</span></a><span class="sd"> {'top_key': {'third_key': 'third_value', 'second_key': 'value'}}</span>
|
||||
</span><span id="L-568"><a href="#L-568"><span class="linenos">568</span></a>
|
||||
</span><span id="L-569"><a href="#L-569"><span class="linenos">569</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-570"><a href="#L-570"><span class="linenos">570</span></a><span class="sd"> d: dictionary to update.</span>
|
||||
</span><span id="L-571"><a href="#L-571"><span class="linenos">571</span></a><span class="sd"> keys: the keys that makeup the path to `value`.</span>
|
||||
</span><span id="L-572"><a href="#L-572"><span class="linenos">572</span></a><span class="sd"> value: the value to set in the dictionary for the given key path.</span>
|
||||
</span><span id="L-573"><a href="#L-573"><span class="linenos">573</span></a>
|
||||
</span><span id="L-574"><a href="#L-574"><span class="linenos">574</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-575"><a href="#L-575"><span class="linenos">575</span></a><span class="sd"> The (possibly) updated dictionary.</span>
|
||||
</span><span id="L-576"><a href="#L-576"><span class="linenos">576</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-577"><a href="#L-577"><span class="linenos">577</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">keys</span><span class="p">:</span>
|
||||
</span><span id="L-578"><a href="#L-578"><span class="linenos">578</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
</span><span id="L-579"><a href="#L-579"><span class="linenos">579</span></a>
|
||||
</span><span id="L-580"><a href="#L-580"><span class="linenos">580</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="L-581"><a href="#L-581"><span class="linenos">581</span></a> <span class="n">d</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span>
|
||||
</span><span id="L-582"><a href="#L-582"><span class="linenos">582</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
</span><span id="L-583"><a href="#L-583"><span class="linenos">583</span></a>
|
||||
</span><span id="L-584"><a href="#L-584"><span class="linenos">584</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">d</span>
|
||||
</span><span id="L-585"><a href="#L-585"><span class="linenos">585</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span>
|
||||
</span><span id="L-586"><a href="#L-586"><span class="linenos">586</span></a> <span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">subd</span><span class="p">:</span>
|
||||
</span><span id="L-587"><a href="#L-587"><span class="linenos">587</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="p">{})</span>
|
||||
</span><span id="L-588"><a href="#L-588"><span class="linenos">588</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-589"><a href="#L-589"><span class="linenos">589</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
|
||||
</span><span id="L-590"><a href="#L-590"><span class="linenos">590</span></a>
|
||||
</span><span id="L-591"><a href="#L-591"><span class="linenos">591</span></a> <span class="n">subd</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span>
|
||||
</span><span id="L-592"><a href="#L-592"><span class="linenos">592</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -1675,88 +1677,90 @@ The added table must have the necessary number of qualifiers in its path to matc
|
|||
</span><span id="MappingSchema-387"><a href="#MappingSchema-387"><span class="linenos">387</span></a>
|
||||
</span><span id="MappingSchema-388"><a href="#MappingSchema-388"><span class="linenos">388</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
</span><span id="MappingSchema-389"><a href="#MappingSchema-389"><span class="linenos">389</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="n">error_msg</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]),</span> <span class="nb">len</span><span class="p">(</span><span class="n">flattened_schema</span><span class="p">[</span><span class="mi">0</span><span class="p">])))</span>
|
||||
</span><span id="MappingSchema-390"><a href="#MappingSchema-390"><span class="linenos">390</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">first</span><span class="p">(</span><span class="n">columns</span><span class="o">.</span><span class="n">values</span><span class="p">()),</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
</span><span id="MappingSchema-391"><a href="#MappingSchema-391"><span class="linenos">391</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span>
|
||||
</span><span id="MappingSchema-392"><a href="#MappingSchema-392"><span class="linenos">392</span></a> <span class="n">error_msg</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
</span><span id="MappingSchema-393"><a href="#MappingSchema-393"><span class="linenos">393</span></a> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">keys</span> <span class="o">+</span> <span class="n">flatten_schema</span><span class="p">(</span><span class="n">columns</span><span class="p">)[</span><span class="mi">0</span><span class="p">]),</span> <span class="nb">len</span><span class="p">(</span><span class="n">flattened_schema</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="MappingSchema-394"><a href="#MappingSchema-394"><span class="linenos">394</span></a> <span class="p">),</span>
|
||||
</span><span id="MappingSchema-395"><a href="#MappingSchema-395"><span class="linenos">395</span></a> <span class="p">)</span>
|
||||
</span><span id="MappingSchema-396"><a href="#MappingSchema-396"><span class="linenos">396</span></a>
|
||||
</span><span id="MappingSchema-397"><a href="#MappingSchema-397"><span class="linenos">397</span></a> <span class="n">normalized_keys</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">]</span>
|
||||
</span><span id="MappingSchema-398"><a href="#MappingSchema-398"><span class="linenos">398</span></a> <span class="k">for</span> <span class="n">column_name</span><span class="p">,</span> <span class="n">column_type</span> <span class="ow">in</span> <span class="n">columns</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
</span><span id="MappingSchema-399"><a href="#MappingSchema-399"><span class="linenos">399</span></a> <span class="n">nested_set</span><span class="p">(</span>
|
||||
</span><span id="MappingSchema-400"><a href="#MappingSchema-400"><span class="linenos">400</span></a> <span class="n">normalized_mapping</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-401"><a href="#MappingSchema-401"><span class="linenos">401</span></a> <span class="n">normalized_keys</span> <span class="o">+</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="n">column_name</span><span class="p">)],</span>
|
||||
</span><span id="MappingSchema-402"><a href="#MappingSchema-402"><span class="linenos">402</span></a> <span class="n">column_type</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-403"><a href="#MappingSchema-403"><span class="linenos">403</span></a> <span class="p">)</span>
|
||||
</span><span id="MappingSchema-404"><a href="#MappingSchema-404"><span class="linenos">404</span></a>
|
||||
</span><span id="MappingSchema-405"><a href="#MappingSchema-405"><span class="linenos">405</span></a> <span class="k">return</span> <span class="n">normalized_mapping</span>
|
||||
</span><span id="MappingSchema-390"><a href="#MappingSchema-390"><span class="linenos">390</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">columns</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-391"><a href="#MappingSchema-391"><span class="linenos">391</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Table </span><span class="si">{</span><span class="s1">'.'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span><span class="si">}</span><span class="s2"> must have at least one column"</span><span class="p">)</span>
|
||||
</span><span id="MappingSchema-392"><a href="#MappingSchema-392"><span class="linenos">392</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">first</span><span class="p">(</span><span class="n">columns</span><span class="o">.</span><span class="n">values</span><span class="p">()),</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
</span><span id="MappingSchema-393"><a href="#MappingSchema-393"><span class="linenos">393</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span>
|
||||
</span><span id="MappingSchema-394"><a href="#MappingSchema-394"><span class="linenos">394</span></a> <span class="n">error_msg</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
</span><span id="MappingSchema-395"><a href="#MappingSchema-395"><span class="linenos">395</span></a> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">keys</span> <span class="o">+</span> <span class="n">flatten_schema</span><span class="p">(</span><span class="n">columns</span><span class="p">)[</span><span class="mi">0</span><span class="p">]),</span> <span class="nb">len</span><span class="p">(</span><span class="n">flattened_schema</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</span><span id="MappingSchema-396"><a href="#MappingSchema-396"><span class="linenos">396</span></a> <span class="p">),</span>
|
||||
</span><span id="MappingSchema-397"><a href="#MappingSchema-397"><span class="linenos">397</span></a> <span class="p">)</span>
|
||||
</span><span id="MappingSchema-398"><a href="#MappingSchema-398"><span class="linenos">398</span></a>
|
||||
</span><span id="MappingSchema-399"><a href="#MappingSchema-399"><span class="linenos">399</span></a> <span class="n">normalized_keys</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">]</span>
|
||||
</span><span id="MappingSchema-400"><a href="#MappingSchema-400"><span class="linenos">400</span></a> <span class="k">for</span> <span class="n">column_name</span><span class="p">,</span> <span class="n">column_type</span> <span class="ow">in</span> <span class="n">columns</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
</span><span id="MappingSchema-401"><a href="#MappingSchema-401"><span class="linenos">401</span></a> <span class="n">nested_set</span><span class="p">(</span>
|
||||
</span><span id="MappingSchema-402"><a href="#MappingSchema-402"><span class="linenos">402</span></a> <span class="n">normalized_mapping</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-403"><a href="#MappingSchema-403"><span class="linenos">403</span></a> <span class="n">normalized_keys</span> <span class="o">+</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_normalize_name</span><span class="p">(</span><span class="n">column_name</span><span class="p">)],</span>
|
||||
</span><span id="MappingSchema-404"><a href="#MappingSchema-404"><span class="linenos">404</span></a> <span class="n">column_type</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-405"><a href="#MappingSchema-405"><span class="linenos">405</span></a> <span class="p">)</span>
|
||||
</span><span id="MappingSchema-406"><a href="#MappingSchema-406"><span class="linenos">406</span></a>
|
||||
</span><span id="MappingSchema-407"><a href="#MappingSchema-407"><span class="linenos">407</span></a> <span class="k">def</span> <span class="nf">_normalize_table</span><span class="p">(</span>
|
||||
</span><span id="MappingSchema-408"><a href="#MappingSchema-408"><span class="linenos">408</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-409"><a href="#MappingSchema-409"><span class="linenos">409</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-410"><a href="#MappingSchema-410"><span class="linenos">410</span></a> <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><span id="MappingSchema-411"><a href="#MappingSchema-411"><span class="linenos">411</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-412"><a href="#MappingSchema-412"><span class="linenos">412</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-413"><a href="#MappingSchema-413"><span class="linenos">413</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span>
|
||||
</span><span id="MappingSchema-414"><a href="#MappingSchema-414"><span class="linenos">414</span></a> <span class="n">normalize</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="k">if</span> <span class="n">normalize</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">normalize</span>
|
||||
</span><span id="MappingSchema-415"><a href="#MappingSchema-415"><span class="linenos">415</span></a>
|
||||
</span><span id="MappingSchema-416"><a href="#MappingSchema-416"><span class="linenos">416</span></a> <span class="n">normalized_table</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">normalize</span><span class="p">)</span>
|
||||
</span><span id="MappingSchema-407"><a href="#MappingSchema-407"><span class="linenos">407</span></a> <span class="k">return</span> <span class="n">normalized_mapping</span>
|
||||
</span><span id="MappingSchema-408"><a href="#MappingSchema-408"><span class="linenos">408</span></a>
|
||||
</span><span id="MappingSchema-409"><a href="#MappingSchema-409"><span class="linenos">409</span></a> <span class="k">def</span> <span class="nf">_normalize_table</span><span class="p">(</span>
|
||||
</span><span id="MappingSchema-410"><a href="#MappingSchema-410"><span class="linenos">410</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-411"><a href="#MappingSchema-411"><span class="linenos">411</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-412"><a href="#MappingSchema-412"><span class="linenos">412</span></a> <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><span id="MappingSchema-413"><a href="#MappingSchema-413"><span class="linenos">413</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-414"><a href="#MappingSchema-414"><span class="linenos">414</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-415"><a href="#MappingSchema-415"><span class="linenos">415</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span>
|
||||
</span><span id="MappingSchema-416"><a href="#MappingSchema-416"><span class="linenos">416</span></a> <span class="n">normalize</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="k">if</span> <span class="n">normalize</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">normalize</span>
|
||||
</span><span id="MappingSchema-417"><a href="#MappingSchema-417"><span class="linenos">417</span></a>
|
||||
</span><span id="MappingSchema-418"><a href="#MappingSchema-418"><span class="linenos">418</span></a> <span class="k">if</span> <span class="n">normalize</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-419"><a href="#MappingSchema-419"><span class="linenos">419</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">TABLE_PARTS</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-420"><a href="#MappingSchema-420"><span class="linenos">420</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">normalized_table</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="n">arg</span><span class="p">)</span>
|
||||
</span><span id="MappingSchema-421"><a href="#MappingSchema-421"><span class="linenos">421</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span>
|
||||
</span><span id="MappingSchema-422"><a href="#MappingSchema-422"><span class="linenos">422</span></a> <span class="n">normalized_table</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
|
||||
</span><span id="MappingSchema-423"><a href="#MappingSchema-423"><span class="linenos">423</span></a> <span class="n">arg</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-424"><a href="#MappingSchema-424"><span class="linenos">424</span></a> <span class="n">normalize_name</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">normalize</span><span class="o">=</span><span class="n">normalize</span><span class="p">),</span>
|
||||
</span><span id="MappingSchema-425"><a href="#MappingSchema-425"><span class="linenos">425</span></a> <span class="p">)</span>
|
||||
</span><span id="MappingSchema-426"><a href="#MappingSchema-426"><span class="linenos">426</span></a>
|
||||
</span><span id="MappingSchema-427"><a href="#MappingSchema-427"><span class="linenos">427</span></a> <span class="k">return</span> <span class="n">normalized_table</span>
|
||||
</span><span id="MappingSchema-418"><a href="#MappingSchema-418"><span class="linenos">418</span></a> <span class="n">normalized_table</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">normalize</span><span class="p">)</span>
|
||||
</span><span id="MappingSchema-419"><a href="#MappingSchema-419"><span class="linenos">419</span></a>
|
||||
</span><span id="MappingSchema-420"><a href="#MappingSchema-420"><span class="linenos">420</span></a> <span class="k">if</span> <span class="n">normalize</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-421"><a href="#MappingSchema-421"><span class="linenos">421</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">TABLE_PARTS</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-422"><a href="#MappingSchema-422"><span class="linenos">422</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">normalized_table</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="n">arg</span><span class="p">)</span>
|
||||
</span><span id="MappingSchema-423"><a href="#MappingSchema-423"><span class="linenos">423</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span>
|
||||
</span><span id="MappingSchema-424"><a href="#MappingSchema-424"><span class="linenos">424</span></a> <span class="n">normalized_table</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
|
||||
</span><span id="MappingSchema-425"><a href="#MappingSchema-425"><span class="linenos">425</span></a> <span class="n">arg</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-426"><a href="#MappingSchema-426"><span class="linenos">426</span></a> <span class="n">normalize_name</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">normalize</span><span class="o">=</span><span class="n">normalize</span><span class="p">),</span>
|
||||
</span><span id="MappingSchema-427"><a href="#MappingSchema-427"><span class="linenos">427</span></a> <span class="p">)</span>
|
||||
</span><span id="MappingSchema-428"><a href="#MappingSchema-428"><span class="linenos">428</span></a>
|
||||
</span><span id="MappingSchema-429"><a href="#MappingSchema-429"><span class="linenos">429</span></a> <span class="k">def</span> <span class="nf">_normalize_name</span><span class="p">(</span>
|
||||
</span><span id="MappingSchema-430"><a href="#MappingSchema-430"><span class="linenos">430</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-431"><a href="#MappingSchema-431"><span class="linenos">431</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-432"><a href="#MappingSchema-432"><span class="linenos">432</span></a> <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><span id="MappingSchema-433"><a href="#MappingSchema-433"><span class="linenos">433</span></a> <span class="n">is_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-434"><a href="#MappingSchema-434"><span class="linenos">434</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-435"><a href="#MappingSchema-435"><span class="linenos">435</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-436"><a href="#MappingSchema-436"><span class="linenos">436</span></a> <span class="k">return</span> <span class="n">normalize_name</span><span class="p">(</span>
|
||||
</span><span id="MappingSchema-437"><a href="#MappingSchema-437"><span class="linenos">437</span></a> <span class="n">name</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-438"><a href="#MappingSchema-438"><span class="linenos">438</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-439"><a href="#MappingSchema-439"><span class="linenos">439</span></a> <span class="n">is_table</span><span class="o">=</span><span class="n">is_table</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-440"><a href="#MappingSchema-440"><span class="linenos">440</span></a> <span class="n">normalize</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="k">if</span> <span class="n">normalize</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">normalize</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-441"><a href="#MappingSchema-441"><span class="linenos">441</span></a> <span class="p">)</span><span class="o">.</span><span class="n">name</span>
|
||||
</span><span id="MappingSchema-442"><a href="#MappingSchema-442"><span class="linenos">442</span></a>
|
||||
</span><span id="MappingSchema-443"><a href="#MappingSchema-443"><span class="linenos">443</span></a> <span class="k">def</span> <span class="nf">depth</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-444"><a href="#MappingSchema-444"><span class="linenos">444</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-445"><a href="#MappingSchema-445"><span class="linenos">445</span></a> <span class="c1"># The columns themselves are a mapping, but we don't want to include those</span>
|
||||
</span><span id="MappingSchema-446"><a href="#MappingSchema-446"><span class="linenos">446</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">depth</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
</span><span id="MappingSchema-447"><a href="#MappingSchema-447"><span class="linenos">447</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span>
|
||||
</span><span id="MappingSchema-448"><a href="#MappingSchema-448"><span class="linenos">448</span></a>
|
||||
</span><span id="MappingSchema-449"><a href="#MappingSchema-449"><span class="linenos">449</span></a> <span class="k">def</span> <span class="nf">_to_data_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema_type</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">DataType</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-450"><a href="#MappingSchema-450"><span class="linenos">450</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="MappingSchema-451"><a href="#MappingSchema-451"><span class="linenos">451</span></a><span class="sd"> Convert a type represented as a string to the corresponding `sqlglot.exp.DataType` object.</span>
|
||||
</span><span id="MappingSchema-452"><a href="#MappingSchema-452"><span class="linenos">452</span></a>
|
||||
</span><span id="MappingSchema-453"><a href="#MappingSchema-453"><span class="linenos">453</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="MappingSchema-454"><a href="#MappingSchema-454"><span class="linenos">454</span></a><span class="sd"> schema_type: the type we want to convert.</span>
|
||||
</span><span id="MappingSchema-455"><a href="#MappingSchema-455"><span class="linenos">455</span></a><span class="sd"> dialect: the SQL dialect that will be used to parse `schema_type`, if needed.</span>
|
||||
</span><span id="MappingSchema-456"><a href="#MappingSchema-456"><span class="linenos">456</span></a>
|
||||
</span><span id="MappingSchema-457"><a href="#MappingSchema-457"><span class="linenos">457</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="MappingSchema-458"><a href="#MappingSchema-458"><span class="linenos">458</span></a><span class="sd"> The resulting expression type.</span>
|
||||
</span><span id="MappingSchema-459"><a href="#MappingSchema-459"><span class="linenos">459</span></a><span class="sd"> """</span>
|
||||
</span><span id="MappingSchema-460"><a href="#MappingSchema-460"><span class="linenos">460</span></a> <span class="k">if</span> <span class="n">schema_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-461"><a href="#MappingSchema-461"><span class="linenos">461</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span>
|
||||
</span><span id="MappingSchema-462"><a href="#MappingSchema-462"><span class="linenos">462</span></a> <span class="n">udt</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">SUPPORTS_USER_DEFINED_TYPES</span>
|
||||
</span><span id="MappingSchema-463"><a href="#MappingSchema-463"><span class="linenos">463</span></a>
|
||||
</span><span id="MappingSchema-464"><a href="#MappingSchema-464"><span class="linenos">464</span></a> <span class="k">try</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-465"><a href="#MappingSchema-465"><span class="linenos">465</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">schema_type</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="n">udt</span><span class="p">)</span>
|
||||
</span><span id="MappingSchema-466"><a href="#MappingSchema-466"><span class="linenos">466</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression</span>
|
||||
</span><span id="MappingSchema-467"><a href="#MappingSchema-467"><span class="linenos">467</span></a> <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-468"><a href="#MappingSchema-468"><span class="linenos">468</span></a> <span class="n">in_dialect</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" in dialect </span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">dialect</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="MappingSchema-469"><a href="#MappingSchema-469"><span class="linenos">469</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to build type '</span><span class="si">{</span><span class="n">schema_type</span><span class="si">}</span><span class="s2">'</span><span class="si">{</span><span class="n">in_dialect</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</span><span id="MappingSchema-470"><a href="#MappingSchema-470"><span class="linenos">470</span></a>
|
||||
</span><span id="MappingSchema-471"><a href="#MappingSchema-471"><span class="linenos">471</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span>
|
||||
</span><span id="MappingSchema-429"><a href="#MappingSchema-429"><span class="linenos">429</span></a> <span class="k">return</span> <span class="n">normalized_table</span>
|
||||
</span><span id="MappingSchema-430"><a href="#MappingSchema-430"><span class="linenos">430</span></a>
|
||||
</span><span id="MappingSchema-431"><a href="#MappingSchema-431"><span class="linenos">431</span></a> <span class="k">def</span> <span class="nf">_normalize_name</span><span class="p">(</span>
|
||||
</span><span id="MappingSchema-432"><a href="#MappingSchema-432"><span class="linenos">432</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-433"><a href="#MappingSchema-433"><span class="linenos">433</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-434"><a href="#MappingSchema-434"><span class="linenos">434</span></a> <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><span id="MappingSchema-435"><a href="#MappingSchema-435"><span class="linenos">435</span></a> <span class="n">is_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-436"><a href="#MappingSchema-436"><span class="linenos">436</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-437"><a href="#MappingSchema-437"><span class="linenos">437</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-438"><a href="#MappingSchema-438"><span class="linenos">438</span></a> <span class="k">return</span> <span class="n">normalize_name</span><span class="p">(</span>
|
||||
</span><span id="MappingSchema-439"><a href="#MappingSchema-439"><span class="linenos">439</span></a> <span class="n">name</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-440"><a href="#MappingSchema-440"><span class="linenos">440</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-441"><a href="#MappingSchema-441"><span class="linenos">441</span></a> <span class="n">is_table</span><span class="o">=</span><span class="n">is_table</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-442"><a href="#MappingSchema-442"><span class="linenos">442</span></a> <span class="n">normalize</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="k">if</span> <span class="n">normalize</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">normalize</span><span class="p">,</span>
|
||||
</span><span id="MappingSchema-443"><a href="#MappingSchema-443"><span class="linenos">443</span></a> <span class="p">)</span><span class="o">.</span><span class="n">name</span>
|
||||
</span><span id="MappingSchema-444"><a href="#MappingSchema-444"><span class="linenos">444</span></a>
|
||||
</span><span id="MappingSchema-445"><a href="#MappingSchema-445"><span class="linenos">445</span></a> <span class="k">def</span> <span class="nf">depth</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-446"><a href="#MappingSchema-446"><span class="linenos">446</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-447"><a href="#MappingSchema-447"><span class="linenos">447</span></a> <span class="c1"># The columns themselves are a mapping, but we don't want to include those</span>
|
||||
</span><span id="MappingSchema-448"><a href="#MappingSchema-448"><span class="linenos">448</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">depth</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
</span><span id="MappingSchema-449"><a href="#MappingSchema-449"><span class="linenos">449</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span>
|
||||
</span><span id="MappingSchema-450"><a href="#MappingSchema-450"><span class="linenos">450</span></a>
|
||||
</span><span id="MappingSchema-451"><a href="#MappingSchema-451"><span class="linenos">451</span></a> <span class="k">def</span> <span class="nf">_to_data_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema_type</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">DataType</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-452"><a href="#MappingSchema-452"><span class="linenos">452</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="MappingSchema-453"><a href="#MappingSchema-453"><span class="linenos">453</span></a><span class="sd"> Convert a type represented as a string to the corresponding `sqlglot.exp.DataType` object.</span>
|
||||
</span><span id="MappingSchema-454"><a href="#MappingSchema-454"><span class="linenos">454</span></a>
|
||||
</span><span id="MappingSchema-455"><a href="#MappingSchema-455"><span class="linenos">455</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="MappingSchema-456"><a href="#MappingSchema-456"><span class="linenos">456</span></a><span class="sd"> schema_type: the type we want to convert.</span>
|
||||
</span><span id="MappingSchema-457"><a href="#MappingSchema-457"><span class="linenos">457</span></a><span class="sd"> dialect: the SQL dialect that will be used to parse `schema_type`, if needed.</span>
|
||||
</span><span id="MappingSchema-458"><a href="#MappingSchema-458"><span class="linenos">458</span></a>
|
||||
</span><span id="MappingSchema-459"><a href="#MappingSchema-459"><span class="linenos">459</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="MappingSchema-460"><a href="#MappingSchema-460"><span class="linenos">460</span></a><span class="sd"> The resulting expression type.</span>
|
||||
</span><span id="MappingSchema-461"><a href="#MappingSchema-461"><span class="linenos">461</span></a><span class="sd"> """</span>
|
||||
</span><span id="MappingSchema-462"><a href="#MappingSchema-462"><span class="linenos">462</span></a> <span class="k">if</span> <span class="n">schema_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-463"><a href="#MappingSchema-463"><span class="linenos">463</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span>
|
||||
</span><span id="MappingSchema-464"><a href="#MappingSchema-464"><span class="linenos">464</span></a> <span class="n">udt</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">SUPPORTS_USER_DEFINED_TYPES</span>
|
||||
</span><span id="MappingSchema-465"><a href="#MappingSchema-465"><span class="linenos">465</span></a>
|
||||
</span><span id="MappingSchema-466"><a href="#MappingSchema-466"><span class="linenos">466</span></a> <span class="k">try</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-467"><a href="#MappingSchema-467"><span class="linenos">467</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">schema_type</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="n">udt</span><span class="p">)</span>
|
||||
</span><span id="MappingSchema-468"><a href="#MappingSchema-468"><span class="linenos">468</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression</span>
|
||||
</span><span id="MappingSchema-469"><a href="#MappingSchema-469"><span class="linenos">469</span></a> <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema-470"><a href="#MappingSchema-470"><span class="linenos">470</span></a> <span class="n">in_dialect</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" in dialect </span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">dialect</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="MappingSchema-471"><a href="#MappingSchema-471"><span class="linenos">471</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to build type '</span><span class="si">{</span><span class="n">schema_type</span><span class="si">}</span><span class="s2">'</span><span class="si">{</span><span class="n">in_dialect</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</span><span id="MappingSchema-472"><a href="#MappingSchema-472"><span class="linenos">472</span></a>
|
||||
</span><span id="MappingSchema-473"><a href="#MappingSchema-473"><span class="linenos">473</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -2187,11 +2191,11 @@ The added table must have the necessary number of qualifiers in its path to matc
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#MappingSchema.depth"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="MappingSchema.depth-443"><a href="#MappingSchema.depth-443"><span class="linenos">443</span></a> <span class="k">def</span> <span class="nf">depth</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema.depth-444"><a href="#MappingSchema.depth-444"><span class="linenos">444</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema.depth-445"><a href="#MappingSchema.depth-445"><span class="linenos">445</span></a> <span class="c1"># The columns themselves are a mapping, but we don't want to include those</span>
|
||||
</span><span id="MappingSchema.depth-446"><a href="#MappingSchema.depth-446"><span class="linenos">446</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">depth</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
</span><span id="MappingSchema.depth-447"><a href="#MappingSchema.depth-447"><span class="linenos">447</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="MappingSchema.depth-445"><a href="#MappingSchema.depth-445"><span class="linenos">445</span></a> <span class="k">def</span> <span class="nf">depth</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema.depth-446"><a href="#MappingSchema.depth-446"><span class="linenos">446</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span><span class="p">:</span>
|
||||
</span><span id="MappingSchema.depth-447"><a href="#MappingSchema.depth-447"><span class="linenos">447</span></a> <span class="c1"># The columns themselves are a mapping, but we don't want to include those</span>
|
||||
</span><span id="MappingSchema.depth-448"><a href="#MappingSchema.depth-448"><span class="linenos">448</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">depth</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
</span><span id="MappingSchema.depth-449"><a href="#MappingSchema.depth-449"><span class="linenos">449</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_depth</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -2224,21 +2228,21 @@ The added table must have the necessary number of qualifiers in its path to matc
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#normalize_name"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="normalize_name-474"><a href="#normalize_name-474"><span class="linenos">474</span></a><span class="k">def</span> <span class="nf">normalize_name</span><span class="p">(</span>
|
||||
</span><span id="normalize_name-475"><a href="#normalize_name-475"><span class="linenos">475</span></a> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span>
|
||||
</span><span id="normalize_name-476"><a href="#normalize_name-476"><span class="linenos">476</span></a> <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><span id="normalize_name-477"><a href="#normalize_name-477"><span class="linenos">477</span></a> <span class="n">is_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="normalize_name-478"><a href="#normalize_name-478"><span class="linenos">478</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="normalize_name-479"><a href="#normalize_name-479"><span class="linenos">479</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">:</span>
|
||||
</span><span id="normalize_name-480"><a href="#normalize_name-480"><span class="linenos">480</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
</span><span id="normalize_name-481"><a href="#normalize_name-481"><span class="linenos">481</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">parse_identifier</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="normalize_name-482"><a href="#normalize_name-482"><span class="linenos">482</span></a>
|
||||
</span><span id="normalize_name-483"><a href="#normalize_name-483"><span class="linenos">483</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">normalize</span><span class="p">:</span>
|
||||
</span><span id="normalize_name-484"><a href="#normalize_name-484"><span class="linenos">484</span></a> <span class="k">return</span> <span class="n">identifier</span>
|
||||
</span><span id="normalize_name-485"><a href="#normalize_name-485"><span class="linenos">485</span></a>
|
||||
</span><span id="normalize_name-486"><a href="#normalize_name-486"><span class="linenos">486</span></a> <span class="c1"># this is used for normalize_identifier, bigquery has special rules pertaining tables</span>
|
||||
</span><span id="normalize_name-487"><a href="#normalize_name-487"><span class="linenos">487</span></a> <span class="n">identifier</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">"is_table"</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_table</span>
|
||||
</span><span id="normalize_name-488"><a href="#normalize_name-488"><span class="linenos">488</span></a> <span class="k">return</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">normalize_identifier</span><span class="p">(</span><span class="n">identifier</span><span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="normalize_name-476"><a href="#normalize_name-476"><span class="linenos">476</span></a><span class="k">def</span> <span class="nf">normalize_name</span><span class="p">(</span>
|
||||
</span><span id="normalize_name-477"><a href="#normalize_name-477"><span class="linenos">477</span></a> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span>
|
||||
</span><span id="normalize_name-478"><a href="#normalize_name-478"><span class="linenos">478</span></a> <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><span id="normalize_name-479"><a href="#normalize_name-479"><span class="linenos">479</span></a> <span class="n">is_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="normalize_name-480"><a href="#normalize_name-480"><span class="linenos">480</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="normalize_name-481"><a href="#normalize_name-481"><span class="linenos">481</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">:</span>
|
||||
</span><span id="normalize_name-482"><a href="#normalize_name-482"><span class="linenos">482</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
</span><span id="normalize_name-483"><a href="#normalize_name-483"><span class="linenos">483</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">parse_identifier</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="normalize_name-484"><a href="#normalize_name-484"><span class="linenos">484</span></a>
|
||||
</span><span id="normalize_name-485"><a href="#normalize_name-485"><span class="linenos">485</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">normalize</span><span class="p">:</span>
|
||||
</span><span id="normalize_name-486"><a href="#normalize_name-486"><span class="linenos">486</span></a> <span class="k">return</span> <span class="n">identifier</span>
|
||||
</span><span id="normalize_name-487"><a href="#normalize_name-487"><span class="linenos">487</span></a>
|
||||
</span><span id="normalize_name-488"><a href="#normalize_name-488"><span class="linenos">488</span></a> <span class="c1"># this is used for normalize_identifier, bigquery has special rules pertaining tables</span>
|
||||
</span><span id="normalize_name-489"><a href="#normalize_name-489"><span class="linenos">489</span></a> <span class="n">identifier</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">"is_table"</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_table</span>
|
||||
</span><span id="normalize_name-490"><a href="#normalize_name-490"><span class="linenos">490</span></a> <span class="k">return</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">normalize_identifier</span><span class="p">(</span><span class="n">identifier</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -2256,11 +2260,11 @@ The added table must have the necessary number of qualifiers in its path to matc
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#ensure_schema"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="ensure_schema-491"><a href="#ensure_schema-491"><span class="linenos">491</span></a><span class="k">def</span> <span class="nf">ensure_schema</span><span class="p">(</span><span class="n">schema</span><span class="p">:</span> <span class="n">Schema</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">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-></span> <span class="n">Schema</span><span class="p">:</span>
|
||||
</span><span id="ensure_schema-492"><a href="#ensure_schema-492"><span class="linenos">492</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">Schema</span><span class="p">):</span>
|
||||
</span><span id="ensure_schema-493"><a href="#ensure_schema-493"><span class="linenos">493</span></a> <span class="k">return</span> <span class="n">schema</span>
|
||||
</span><span id="ensure_schema-494"><a href="#ensure_schema-494"><span class="linenos">494</span></a>
|
||||
</span><span id="ensure_schema-495"><a href="#ensure_schema-495"><span class="linenos">495</span></a> <span class="k">return</span> <span class="n">MappingSchema</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="ensure_schema-493"><a href="#ensure_schema-493"><span class="linenos">493</span></a><span class="k">def</span> <span class="nf">ensure_schema</span><span class="p">(</span><span class="n">schema</span><span class="p">:</span> <span class="n">Schema</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">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-></span> <span class="n">Schema</span><span class="p">:</span>
|
||||
</span><span id="ensure_schema-494"><a href="#ensure_schema-494"><span class="linenos">494</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">Schema</span><span class="p">):</span>
|
||||
</span><span id="ensure_schema-495"><a href="#ensure_schema-495"><span class="linenos">495</span></a> <span class="k">return</span> <span class="n">schema</span>
|
||||
</span><span id="ensure_schema-496"><a href="#ensure_schema-496"><span class="linenos">496</span></a>
|
||||
</span><span id="ensure_schema-497"><a href="#ensure_schema-497"><span class="linenos">497</span></a> <span class="k">return</span> <span class="n">MappingSchema</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -2278,21 +2282,21 @@ The added table must have the necessary number of qualifiers in its path to matc
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#ensure_column_mapping"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="ensure_column_mapping-498"><a href="#ensure_column_mapping-498"><span class="linenos">498</span></a><span class="k">def</span> <span class="nf">ensure_column_mapping</span><span class="p">(</span><span class="n">mapping</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ColumnMapping</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
|
||||
</span><span id="ensure_column_mapping-499"><a href="#ensure_column_mapping-499"><span class="linenos">499</span></a> <span class="k">if</span> <span class="n">mapping</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="ensure_column_mapping-500"><a href="#ensure_column_mapping-500"><span class="linenos">500</span></a> <span class="k">return</span> <span class="p">{}</span>
|
||||
</span><span id="ensure_column_mapping-501"><a href="#ensure_column_mapping-501"><span class="linenos">501</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
</span><span id="ensure_column_mapping-502"><a href="#ensure_column_mapping-502"><span class="linenos">502</span></a> <span class="k">return</span> <span class="n">mapping</span>
|
||||
</span><span id="ensure_column_mapping-503"><a href="#ensure_column_mapping-503"><span class="linenos">503</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
</span><span id="ensure_column_mapping-504"><a href="#ensure_column_mapping-504"><span class="linenos">504</span></a> <span class="n">col_name_type_strs</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)]</span>
|
||||
</span><span id="ensure_column_mapping-505"><a href="#ensure_column_mapping-505"><span class="linenos">505</span></a> <span class="k">return</span> <span class="p">{</span>
|
||||
</span><span id="ensure_column_mapping-506"><a href="#ensure_column_mapping-506"><span class="linenos">506</span></a> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">":"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">":"</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
</span><span id="ensure_column_mapping-507"><a href="#ensure_column_mapping-507"><span class="linenos">507</span></a> <span class="k">for</span> <span class="n">name_type_str</span> <span class="ow">in</span> <span class="n">col_name_type_strs</span>
|
||||
</span><span id="ensure_column_mapping-508"><a href="#ensure_column_mapping-508"><span class="linenos">508</span></a> <span class="p">}</span>
|
||||
</span><span id="ensure_column_mapping-509"><a href="#ensure_column_mapping-509"><span class="linenos">509</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
||||
</span><span id="ensure_column_mapping-510"><a href="#ensure_column_mapping-510"><span class="linenos">510</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span>
|
||||
</span><span id="ensure_column_mapping-511"><a href="#ensure_column_mapping-511"><span class="linenos">511</span></a>
|
||||
</span><span id="ensure_column_mapping-512"><a href="#ensure_column_mapping-512"><span class="linenos">512</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid mapping provided: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">mapping</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="ensure_column_mapping-500"><a href="#ensure_column_mapping-500"><span class="linenos">500</span></a><span class="k">def</span> <span class="nf">ensure_column_mapping</span><span class="p">(</span><span class="n">mapping</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ColumnMapping</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
|
||||
</span><span id="ensure_column_mapping-501"><a href="#ensure_column_mapping-501"><span class="linenos">501</span></a> <span class="k">if</span> <span class="n">mapping</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="ensure_column_mapping-502"><a href="#ensure_column_mapping-502"><span class="linenos">502</span></a> <span class="k">return</span> <span class="p">{}</span>
|
||||
</span><span id="ensure_column_mapping-503"><a href="#ensure_column_mapping-503"><span class="linenos">503</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
</span><span id="ensure_column_mapping-504"><a href="#ensure_column_mapping-504"><span class="linenos">504</span></a> <span class="k">return</span> <span class="n">mapping</span>
|
||||
</span><span id="ensure_column_mapping-505"><a href="#ensure_column_mapping-505"><span class="linenos">505</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
</span><span id="ensure_column_mapping-506"><a href="#ensure_column_mapping-506"><span class="linenos">506</span></a> <span class="n">col_name_type_strs</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)]</span>
|
||||
</span><span id="ensure_column_mapping-507"><a href="#ensure_column_mapping-507"><span class="linenos">507</span></a> <span class="k">return</span> <span class="p">{</span>
|
||||
</span><span id="ensure_column_mapping-508"><a href="#ensure_column_mapping-508"><span class="linenos">508</span></a> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">":"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">":"</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
</span><span id="ensure_column_mapping-509"><a href="#ensure_column_mapping-509"><span class="linenos">509</span></a> <span class="k">for</span> <span class="n">name_type_str</span> <span class="ow">in</span> <span class="n">col_name_type_strs</span>
|
||||
</span><span id="ensure_column_mapping-510"><a href="#ensure_column_mapping-510"><span class="linenos">510</span></a> <span class="p">}</span>
|
||||
</span><span id="ensure_column_mapping-511"><a href="#ensure_column_mapping-511"><span class="linenos">511</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
||||
</span><span id="ensure_column_mapping-512"><a href="#ensure_column_mapping-512"><span class="linenos">512</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span>
|
||||
</span><span id="ensure_column_mapping-513"><a href="#ensure_column_mapping-513"><span class="linenos">513</span></a>
|
||||
</span><span id="ensure_column_mapping-514"><a href="#ensure_column_mapping-514"><span class="linenos">514</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid mapping provided: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">mapping</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -2310,20 +2314,20 @@ The added table must have the necessary number of qualifiers in its path to matc
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#flatten_schema"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="flatten_schema-515"><a href="#flatten_schema-515"><span class="linenos">515</span></a><span class="k">def</span> <span class="nf">flatten_schema</span><span class="p">(</span>
|
||||
</span><span id="flatten_schema-516"><a href="#flatten_schema-516"><span class="linenos">516</span></a> <span class="n">schema</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">depth</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="flatten_schema-517"><a href="#flatten_schema-517"><span class="linenos">517</span></a><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">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
|
||||
</span><span id="flatten_schema-518"><a href="#flatten_schema-518"><span class="linenos">518</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="flatten_schema-519"><a href="#flatten_schema-519"><span class="linenos">519</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">keys</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
</span><span id="flatten_schema-520"><a href="#flatten_schema-520"><span class="linenos">520</span></a> <span class="n">depth</span> <span class="o">=</span> <span class="n">dict_depth</span><span class="p">(</span><span class="n">schema</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">depth</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">depth</span>
|
||||
</span><span id="flatten_schema-521"><a href="#flatten_schema-521"><span class="linenos">521</span></a>
|
||||
</span><span id="flatten_schema-522"><a href="#flatten_schema-522"><span class="linenos">522</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">schema</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
</span><span id="flatten_schema-523"><a href="#flatten_schema-523"><span class="linenos">523</span></a> <span class="k">if</span> <span class="n">depth</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
</span><span id="flatten_schema-524"><a href="#flatten_schema-524"><span class="linenos">524</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">])</span>
|
||||
</span><span id="flatten_schema-525"><a href="#flatten_schema-525"><span class="linenos">525</span></a> <span class="k">elif</span> <span class="n">depth</span> <span class="o">>=</span> <span class="mi">2</span><span class="p">:</span>
|
||||
</span><span id="flatten_schema-526"><a href="#flatten_schema-526"><span class="linenos">526</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">flatten_schema</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">depth</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">]))</span>
|
||||
</span><span id="flatten_schema-527"><a href="#flatten_schema-527"><span class="linenos">527</span></a>
|
||||
</span><span id="flatten_schema-528"><a href="#flatten_schema-528"><span class="linenos">528</span></a> <span class="k">return</span> <span class="n">tables</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="flatten_schema-517"><a href="#flatten_schema-517"><span class="linenos">517</span></a><span class="k">def</span> <span class="nf">flatten_schema</span><span class="p">(</span>
|
||||
</span><span id="flatten_schema-518"><a href="#flatten_schema-518"><span class="linenos">518</span></a> <span class="n">schema</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">depth</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</span><span id="flatten_schema-519"><a href="#flatten_schema-519"><span class="linenos">519</span></a><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">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
|
||||
</span><span id="flatten_schema-520"><a href="#flatten_schema-520"><span class="linenos">520</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="flatten_schema-521"><a href="#flatten_schema-521"><span class="linenos">521</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">keys</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
</span><span id="flatten_schema-522"><a href="#flatten_schema-522"><span class="linenos">522</span></a> <span class="n">depth</span> <span class="o">=</span> <span class="n">dict_depth</span><span class="p">(</span><span class="n">schema</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">depth</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">depth</span>
|
||||
</span><span id="flatten_schema-523"><a href="#flatten_schema-523"><span class="linenos">523</span></a>
|
||||
</span><span id="flatten_schema-524"><a href="#flatten_schema-524"><span class="linenos">524</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">schema</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
</span><span id="flatten_schema-525"><a href="#flatten_schema-525"><span class="linenos">525</span></a> <span class="k">if</span> <span class="n">depth</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
</span><span id="flatten_schema-526"><a href="#flatten_schema-526"><span class="linenos">526</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">])</span>
|
||||
</span><span id="flatten_schema-527"><a href="#flatten_schema-527"><span class="linenos">527</span></a> <span class="k">elif</span> <span class="n">depth</span> <span class="o">>=</span> <span class="mi">2</span><span class="p">:</span>
|
||||
</span><span id="flatten_schema-528"><a href="#flatten_schema-528"><span class="linenos">528</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">flatten_schema</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">depth</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">]))</span>
|
||||
</span><span id="flatten_schema-529"><a href="#flatten_schema-529"><span class="linenos">529</span></a>
|
||||
</span><span id="flatten_schema-530"><a href="#flatten_schema-530"><span class="linenos">530</span></a> <span class="k">return</span> <span class="n">tables</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -2341,30 +2345,30 @@ The added table must have the necessary number of qualifiers in its path to matc
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#nested_get"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="nested_get-531"><a href="#nested_get-531"><span class="linenos">531</span></a><span class="k">def</span> <span class="nf">nested_get</span><span class="p">(</span>
|
||||
</span><span id="nested_get-532"><a href="#nested_get-532"><span class="linenos">532</span></a> <span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="o">*</span><span class="n">path</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="nb">str</span><span class="p">],</span> <span class="n">raise_on_missing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</span><span id="nested_get-533"><a href="#nested_get-533"><span class="linenos">533</span></a><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">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]:</span>
|
||||
</span><span id="nested_get-534"><a href="#nested_get-534"><span class="linenos">534</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="nested_get-535"><a href="#nested_get-535"><span class="linenos">535</span></a><span class="sd"> Get a value for a nested dictionary.</span>
|
||||
</span><span id="nested_get-536"><a href="#nested_get-536"><span class="linenos">536</span></a>
|
||||
</span><span id="nested_get-537"><a href="#nested_get-537"><span class="linenos">537</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="nested_get-538"><a href="#nested_get-538"><span class="linenos">538</span></a><span class="sd"> d: the dictionary to search.</span>
|
||||
</span><span id="nested_get-539"><a href="#nested_get-539"><span class="linenos">539</span></a><span class="sd"> *path: tuples of (name, key), where:</span>
|
||||
</span><span id="nested_get-540"><a href="#nested_get-540"><span class="linenos">540</span></a><span class="sd"> `key` is the key in the dictionary to get.</span>
|
||||
</span><span id="nested_get-541"><a href="#nested_get-541"><span class="linenos">541</span></a><span class="sd"> `name` is a string to use in the error if `key` isn't found.</span>
|
||||
</span><span id="nested_get-542"><a href="#nested_get-542"><span class="linenos">542</span></a>
|
||||
</span><span id="nested_get-543"><a href="#nested_get-543"><span class="linenos">543</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="nested_get-544"><a href="#nested_get-544"><span class="linenos">544</span></a><span class="sd"> The value or None if it doesn't exist.</span>
|
||||
</span><span id="nested_get-545"><a href="#nested_get-545"><span class="linenos">545</span></a><span class="sd"> """</span>
|
||||
</span><span id="nested_get-546"><a href="#nested_get-546"><span class="linenos">546</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">path</span><span class="p">:</span>
|
||||
</span><span id="nested_get-547"><a href="#nested_get-547"><span class="linenos">547</span></a> <span class="n">d</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="c1"># type: ignore</span>
|
||||
</span><span id="nested_get-548"><a href="#nested_get-548"><span class="linenos">548</span></a> <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="nested_get-549"><a href="#nested_get-549"><span class="linenos">549</span></a> <span class="k">if</span> <span class="n">raise_on_missing</span><span class="p">:</span>
|
||||
</span><span id="nested_get-550"><a href="#nested_get-550"><span class="linenos">550</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"table"</span> <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"this"</span> <span class="k">else</span> <span class="n">name</span>
|
||||
</span><span id="nested_get-551"><a href="#nested_get-551"><span class="linenos">551</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="nested_get-552"><a href="#nested_get-552"><span class="linenos">552</span></a> <span class="k">return</span> <span class="kc">None</span>
|
||||
</span><span id="nested_get-553"><a href="#nested_get-553"><span class="linenos">553</span></a>
|
||||
</span><span id="nested_get-554"><a href="#nested_get-554"><span class="linenos">554</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="nested_get-533"><a href="#nested_get-533"><span class="linenos">533</span></a><span class="k">def</span> <span class="nf">nested_get</span><span class="p">(</span>
|
||||
</span><span id="nested_get-534"><a href="#nested_get-534"><span class="linenos">534</span></a> <span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="o">*</span><span class="n">path</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="nb">str</span><span class="p">],</span> <span class="n">raise_on_missing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</span><span id="nested_get-535"><a href="#nested_get-535"><span class="linenos">535</span></a><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">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]:</span>
|
||||
</span><span id="nested_get-536"><a href="#nested_get-536"><span class="linenos">536</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="nested_get-537"><a href="#nested_get-537"><span class="linenos">537</span></a><span class="sd"> Get a value for a nested dictionary.</span>
|
||||
</span><span id="nested_get-538"><a href="#nested_get-538"><span class="linenos">538</span></a>
|
||||
</span><span id="nested_get-539"><a href="#nested_get-539"><span class="linenos">539</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="nested_get-540"><a href="#nested_get-540"><span class="linenos">540</span></a><span class="sd"> d: the dictionary to search.</span>
|
||||
</span><span id="nested_get-541"><a href="#nested_get-541"><span class="linenos">541</span></a><span class="sd"> *path: tuples of (name, key), where:</span>
|
||||
</span><span id="nested_get-542"><a href="#nested_get-542"><span class="linenos">542</span></a><span class="sd"> `key` is the key in the dictionary to get.</span>
|
||||
</span><span id="nested_get-543"><a href="#nested_get-543"><span class="linenos">543</span></a><span class="sd"> `name` is a string to use in the error if `key` isn't found.</span>
|
||||
</span><span id="nested_get-544"><a href="#nested_get-544"><span class="linenos">544</span></a>
|
||||
</span><span id="nested_get-545"><a href="#nested_get-545"><span class="linenos">545</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="nested_get-546"><a href="#nested_get-546"><span class="linenos">546</span></a><span class="sd"> The value or None if it doesn't exist.</span>
|
||||
</span><span id="nested_get-547"><a href="#nested_get-547"><span class="linenos">547</span></a><span class="sd"> """</span>
|
||||
</span><span id="nested_get-548"><a href="#nested_get-548"><span class="linenos">548</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">path</span><span class="p">:</span>
|
||||
</span><span id="nested_get-549"><a href="#nested_get-549"><span class="linenos">549</span></a> <span class="n">d</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="c1"># type: ignore</span>
|
||||
</span><span id="nested_get-550"><a href="#nested_get-550"><span class="linenos">550</span></a> <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="nested_get-551"><a href="#nested_get-551"><span class="linenos">551</span></a> <span class="k">if</span> <span class="n">raise_on_missing</span><span class="p">:</span>
|
||||
</span><span id="nested_get-552"><a href="#nested_get-552"><span class="linenos">552</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"table"</span> <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"this"</span> <span class="k">else</span> <span class="n">name</span>
|
||||
</span><span id="nested_get-553"><a href="#nested_get-553"><span class="linenos">553</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="nested_get-554"><a href="#nested_get-554"><span class="linenos">554</span></a> <span class="k">return</span> <span class="kc">None</span>
|
||||
</span><span id="nested_get-555"><a href="#nested_get-555"><span class="linenos">555</span></a>
|
||||
</span><span id="nested_get-556"><a href="#nested_get-556"><span class="linenos">556</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -2399,41 +2403,41 @@ The added table must have the necessary number of qualifiers in its path to matc
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#nested_set"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="nested_set-557"><a href="#nested_set-557"><span class="linenos">557</span></a><span class="k">def</span> <span class="nf">nested_set</span><span class="p">(</span><span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
|
||||
</span><span id="nested_set-558"><a href="#nested_set-558"><span class="linenos">558</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="nested_set-559"><a href="#nested_set-559"><span class="linenos">559</span></a><span class="sd"> In-place set a value for a nested dictionary</span>
|
||||
</span><span id="nested_set-560"><a href="#nested_set-560"><span class="linenos">560</span></a>
|
||||
</span><span id="nested_set-561"><a href="#nested_set-561"><span class="linenos">561</span></a><span class="sd"> Example:</span>
|
||||
</span><span id="nested_set-562"><a href="#nested_set-562"><span class="linenos">562</span></a><span class="sd"> >>> nested_set({}, ["top_key", "second_key"], "value")</span>
|
||||
</span><span id="nested_set-563"><a href="#nested_set-563"><span class="linenos">563</span></a><span class="sd"> {'top_key': {'second_key': 'value'}}</span>
|
||||
</span><span id="nested_set-564"><a href="#nested_set-564"><span class="linenos">564</span></a>
|
||||
</span><span id="nested_set-565"><a href="#nested_set-565"><span class="linenos">565</span></a><span class="sd"> >>> nested_set({"top_key": {"third_key": "third_value"}}, ["top_key", "second_key"], "value")</span>
|
||||
</span><span id="nested_set-566"><a href="#nested_set-566"><span class="linenos">566</span></a><span class="sd"> {'top_key': {'third_key': 'third_value', 'second_key': 'value'}}</span>
|
||||
</span><span id="nested_set-567"><a href="#nested_set-567"><span class="linenos">567</span></a>
|
||||
</span><span id="nested_set-568"><a href="#nested_set-568"><span class="linenos">568</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="nested_set-569"><a href="#nested_set-569"><span class="linenos">569</span></a><span class="sd"> d: dictionary to update.</span>
|
||||
</span><span id="nested_set-570"><a href="#nested_set-570"><span class="linenos">570</span></a><span class="sd"> keys: the keys that makeup the path to `value`.</span>
|
||||
</span><span id="nested_set-571"><a href="#nested_set-571"><span class="linenos">571</span></a><span class="sd"> value: the value to set in the dictionary for the given key path.</span>
|
||||
</span><span id="nested_set-572"><a href="#nested_set-572"><span class="linenos">572</span></a>
|
||||
</span><span id="nested_set-573"><a href="#nested_set-573"><span class="linenos">573</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="nested_set-574"><a href="#nested_set-574"><span class="linenos">574</span></a><span class="sd"> The (possibly) updated dictionary.</span>
|
||||
</span><span id="nested_set-575"><a href="#nested_set-575"><span class="linenos">575</span></a><span class="sd"> """</span>
|
||||
</span><span id="nested_set-576"><a href="#nested_set-576"><span class="linenos">576</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">keys</span><span class="p">:</span>
|
||||
</span><span id="nested_set-577"><a href="#nested_set-577"><span class="linenos">577</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
</span><span id="nested_set-578"><a href="#nested_set-578"><span class="linenos">578</span></a>
|
||||
</span><span id="nested_set-579"><a href="#nested_set-579"><span class="linenos">579</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="nested_set-580"><a href="#nested_set-580"><span class="linenos">580</span></a> <span class="n">d</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span>
|
||||
</span><span id="nested_set-581"><a href="#nested_set-581"><span class="linenos">581</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
</span><span id="nested_set-582"><a href="#nested_set-582"><span class="linenos">582</span></a>
|
||||
</span><span id="nested_set-583"><a href="#nested_set-583"><span class="linenos">583</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">d</span>
|
||||
</span><span id="nested_set-584"><a href="#nested_set-584"><span class="linenos">584</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span>
|
||||
</span><span id="nested_set-585"><a href="#nested_set-585"><span class="linenos">585</span></a> <span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">subd</span><span class="p">:</span>
|
||||
</span><span id="nested_set-586"><a href="#nested_set-586"><span class="linenos">586</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="p">{})</span>
|
||||
</span><span id="nested_set-587"><a href="#nested_set-587"><span class="linenos">587</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="nested_set-588"><a href="#nested_set-588"><span class="linenos">588</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
|
||||
</span><span id="nested_set-589"><a href="#nested_set-589"><span class="linenos">589</span></a>
|
||||
</span><span id="nested_set-590"><a href="#nested_set-590"><span class="linenos">590</span></a> <span class="n">subd</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span>
|
||||
</span><span id="nested_set-591"><a href="#nested_set-591"><span class="linenos">591</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="nested_set-559"><a href="#nested_set-559"><span class="linenos">559</span></a><span class="k">def</span> <span class="nf">nested_set</span><span class="p">(</span><span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
|
||||
</span><span id="nested_set-560"><a href="#nested_set-560"><span class="linenos">560</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="nested_set-561"><a href="#nested_set-561"><span class="linenos">561</span></a><span class="sd"> In-place set a value for a nested dictionary</span>
|
||||
</span><span id="nested_set-562"><a href="#nested_set-562"><span class="linenos">562</span></a>
|
||||
</span><span id="nested_set-563"><a href="#nested_set-563"><span class="linenos">563</span></a><span class="sd"> Example:</span>
|
||||
</span><span id="nested_set-564"><a href="#nested_set-564"><span class="linenos">564</span></a><span class="sd"> >>> nested_set({}, ["top_key", "second_key"], "value")</span>
|
||||
</span><span id="nested_set-565"><a href="#nested_set-565"><span class="linenos">565</span></a><span class="sd"> {'top_key': {'second_key': 'value'}}</span>
|
||||
</span><span id="nested_set-566"><a href="#nested_set-566"><span class="linenos">566</span></a>
|
||||
</span><span id="nested_set-567"><a href="#nested_set-567"><span class="linenos">567</span></a><span class="sd"> >>> nested_set({"top_key": {"third_key": "third_value"}}, ["top_key", "second_key"], "value")</span>
|
||||
</span><span id="nested_set-568"><a href="#nested_set-568"><span class="linenos">568</span></a><span class="sd"> {'top_key': {'third_key': 'third_value', 'second_key': 'value'}}</span>
|
||||
</span><span id="nested_set-569"><a href="#nested_set-569"><span class="linenos">569</span></a>
|
||||
</span><span id="nested_set-570"><a href="#nested_set-570"><span class="linenos">570</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="nested_set-571"><a href="#nested_set-571"><span class="linenos">571</span></a><span class="sd"> d: dictionary to update.</span>
|
||||
</span><span id="nested_set-572"><a href="#nested_set-572"><span class="linenos">572</span></a><span class="sd"> keys: the keys that makeup the path to `value`.</span>
|
||||
</span><span id="nested_set-573"><a href="#nested_set-573"><span class="linenos">573</span></a><span class="sd"> value: the value to set in the dictionary for the given key path.</span>
|
||||
</span><span id="nested_set-574"><a href="#nested_set-574"><span class="linenos">574</span></a>
|
||||
</span><span id="nested_set-575"><a href="#nested_set-575"><span class="linenos">575</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="nested_set-576"><a href="#nested_set-576"><span class="linenos">576</span></a><span class="sd"> The (possibly) updated dictionary.</span>
|
||||
</span><span id="nested_set-577"><a href="#nested_set-577"><span class="linenos">577</span></a><span class="sd"> """</span>
|
||||
</span><span id="nested_set-578"><a href="#nested_set-578"><span class="linenos">578</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">keys</span><span class="p">:</span>
|
||||
</span><span id="nested_set-579"><a href="#nested_set-579"><span class="linenos">579</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
</span><span id="nested_set-580"><a href="#nested_set-580"><span class="linenos">580</span></a>
|
||||
</span><span id="nested_set-581"><a href="#nested_set-581"><span class="linenos">581</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
</span><span id="nested_set-582"><a href="#nested_set-582"><span class="linenos">582</span></a> <span class="n">d</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span>
|
||||
</span><span id="nested_set-583"><a href="#nested_set-583"><span class="linenos">583</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
</span><span id="nested_set-584"><a href="#nested_set-584"><span class="linenos">584</span></a>
|
||||
</span><span id="nested_set-585"><a href="#nested_set-585"><span class="linenos">585</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">d</span>
|
||||
</span><span id="nested_set-586"><a href="#nested_set-586"><span class="linenos">586</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span>
|
||||
</span><span id="nested_set-587"><a href="#nested_set-587"><span class="linenos">587</span></a> <span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">subd</span><span class="p">:</span>
|
||||
</span><span id="nested_set-588"><a href="#nested_set-588"><span class="linenos">588</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="p">{})</span>
|
||||
</span><span id="nested_set-589"><a href="#nested_set-589"><span class="linenos">589</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="nested_set-590"><a href="#nested_set-590"><span class="linenos">590</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
|
||||
</span><span id="nested_set-591"><a href="#nested_set-591"><span class="linenos">591</span></a>
|
||||
</span><span id="nested_set-592"><a href="#nested_set-592"><span class="linenos">592</span></a> <span class="n">subd</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span>
|
||||
</span><span id="nested_set-593"><a href="#nested_set-593"><span class="linenos">593</span></a> <span class="k">return</span> <span class="n">d</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.serde 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>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load diff
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 14.5.0"/>
|
||||
<meta name="generator" content="pdoc 14.5.1"/>
|
||||
<title>sqlglot.trie 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>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue