summaryrefslogtreecommitdiffstats
path: root/docs/sqlglot/schema.html
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--docs/sqlglot/schema.html502
1 files changed, 252 insertions, 250 deletions
diff --git a/docs/sqlglot/schema.html b/docs/sqlglot/schema.html
index 9f42cb5..3e498e2 100644
--- a/docs/sqlglot/schema.html
+++ b/docs/sqlglot/schema.html
@@ -555,140 +555,141 @@
</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-399"><a href="#L-399"><span class="linenos">399</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-400"><a href="#L-400"><span class="linenos">400</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-401"><a href="#L-401"><span class="linenos">401</span></a>
-</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a> <span class="k">try</span><span class="p">:</span>
-</span><span id="L-403"><a href="#L-403"><span class="linenos">403</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><span id="L-404"><a href="#L-404"><span class="linenos">404</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-405"><a href="#L-405"><span class="linenos">405</span></a> <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
-</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="n">in_dialect</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; in dialect </span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">dialect</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
-</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to build type &#39;</span><span class="si">{</span><span class="n">schema_type</span><span class="si">}</span><span class="s2">&#39;</span><span class="si">{</span><span class="n">in_dialect</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
-</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a>
-</span><span id="L-409"><a href="#L-409"><span class="linenos">409</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-410"><a href="#L-410"><span class="linenos">410</span></a>
+</span><span id="L-401"><a href="#L-401"><span class="linenos">401</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-402"><a href="#L-402"><span class="linenos">402</span></a>
+</span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a> <span class="k">try</span><span class="p">:</span>
+</span><span id="L-404"><a href="#L-404"><span class="linenos">404</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-405"><a href="#L-405"><span class="linenos">405</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-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
+</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="n">in_dialect</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; in dialect </span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">dialect</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
+</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to build type &#39;</span><span class="si">{</span><span class="n">schema_type</span><span class="si">}</span><span class="s2">&#39;</span><span class="si">{</span><span class="n">in_dialect</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
+</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a>
+</span><span id="L-410"><a href="#L-410"><span class="linenos">410</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-411"><a href="#L-411"><span class="linenos">411</span></a>
-</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a><span class="k">def</span> <span class="nf">normalize_name</span><span class="p">(</span>
-</span><span id="L-413"><a href="#L-413"><span class="linenos">413</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-414"><a href="#L-414"><span class="linenos">414</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-415"><a href="#L-415"><span class="linenos">415</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-416"><a href="#L-416"><span class="linenos">416</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-417"><a href="#L-417"><span class="linenos">417</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a> <span class="k">try</span><span class="p">:</span>
-</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">name</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">into</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-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span>
-</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span>
-</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a>
-</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">identifier</span><span class="o">.</span><span class="n">name</span>
-</span><span id="L-424"><a href="#L-424"><span class="linenos">424</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-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="k">return</span> <span class="n">name</span>
-</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a>
-</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a> <span class="c1"># This can be useful for normalize_identifier</span>
-</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="n">identifier</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">&quot;is_table&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_table</span>
-</span><span id="L-429"><a href="#L-429"><span class="linenos">429</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 class="o">.</span><span class="n">name</span>
-</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a>
+</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a>
+</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a><span class="k">def</span> <span class="nf">normalize_name</span><span class="p">(</span>
+</span><span id="L-414"><a href="#L-414"><span class="linenos">414</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-415"><a href="#L-415"><span class="linenos">415</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-416"><a href="#L-416"><span class="linenos">416</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-417"><a href="#L-417"><span class="linenos">417</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-418"><a href="#L-418"><span class="linenos">418</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="k">try</span><span class="p">:</span>
+</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">name</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">into</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-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span>
+</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span>
+</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a>
+</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">identifier</span><span class="o">.</span><span class="n">name</span>
+</span><span id="L-425"><a href="#L-425"><span class="linenos">425</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-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="k">return</span> <span class="n">name</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="c1"># This can be useful for normalize_identifier</span>
+</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="n">identifier</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">&quot;is_table&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_table</span>
+</span><span id="L-430"><a href="#L-430"><span class="linenos">430</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 class="o">.</span><span class="n">name</span>
</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a>
-</span><span id="L-432"><a href="#L-432"><span class="linenos">432</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">-&gt;</span> <span class="n">Schema</span><span class="p">:</span>
-</span><span id="L-433"><a href="#L-433"><span class="linenos">433</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-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="k">return</span> <span class="n">schema</span>
-</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a>
-</span><span id="L-436"><a href="#L-436"><span class="linenos">436</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-437"><a href="#L-437"><span class="linenos">437</span></a>
+</span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a>
+</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a><span class="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">-&gt;</span> <span class="n">Schema</span><span class="p">:</span>
+</span><span id="L-434"><a href="#L-434"><span class="linenos">434</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-435"><a href="#L-435"><span class="linenos">435</span></a> <span class="k">return</span> <span class="n">schema</span>
+</span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a>
+</span><span id="L-437"><a href="#L-437"><span class="linenos">437</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-438"><a href="#L-438"><span class="linenos">438</span></a>
-</span><span id="L-439"><a href="#L-439"><span class="linenos">439</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">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
-</span><span id="L-440"><a href="#L-440"><span class="linenos">440</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-441"><a href="#L-441"><span class="linenos">441</span></a> <span class="k">return</span> <span class="p">{}</span>
-</span><span id="L-442"><a href="#L-442"><span class="linenos">442</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-443"><a href="#L-443"><span class="linenos">443</span></a> <span class="k">return</span> <span class="n">mapping</span>
-</span><span id="L-444"><a href="#L-444"><span class="linenos">444</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-445"><a href="#L-445"><span class="linenos">445</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">&quot;,&quot;</span><span class="p">)]</span>
-</span><span id="L-446"><a href="#L-446"><span class="linenos">446</span></a> <span class="k">return</span> <span class="p">{</span>
-</span><span id="L-447"><a href="#L-447"><span class="linenos">447</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">&quot;:&quot;</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">&quot;:&quot;</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-448"><a href="#L-448"><span class="linenos">448</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-449"><a href="#L-449"><span class="linenos">449</span></a> <span class="p">}</span>
-</span><span id="L-450"><a href="#L-450"><span class="linenos">450</span></a> <span class="c1"># Check if mapping looks like a DataFrame StructType</span>
-</span><span id="L-451"><a href="#L-451"><span class="linenos">451</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="s2">&quot;simpleString&quot;</span><span class="p">):</span>
-</span><span id="L-452"><a href="#L-452"><span class="linenos">452</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">struct_field</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">struct_field</span><span class="o">.</span><span class="n">dataType</span><span class="o">.</span><span class="n">simpleString</span><span class="p">()</span> <span class="k">for</span> <span class="n">struct_field</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span>
-</span><span id="L-453"><a href="#L-453"><span class="linenos">453</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-454"><a href="#L-454"><span class="linenos">454</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-455"><a href="#L-455"><span class="linenos">455</span></a>
-</span><span id="L-456"><a href="#L-456"><span class="linenos">456</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;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">&quot;</span><span class="p">)</span>
-</span><span id="L-457"><a href="#L-457"><span class="linenos">457</span></a>
+</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a>
+</span><span id="L-440"><a href="#L-440"><span class="linenos">440</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">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
+</span><span id="L-441"><a href="#L-441"><span class="linenos">441</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-442"><a href="#L-442"><span class="linenos">442</span></a> <span class="k">return</span> <span class="p">{}</span>
+</span><span id="L-443"><a href="#L-443"><span class="linenos">443</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-444"><a href="#L-444"><span class="linenos">444</span></a> <span class="k">return</span> <span class="n">mapping</span>
+</span><span id="L-445"><a href="#L-445"><span class="linenos">445</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-446"><a href="#L-446"><span class="linenos">446</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">&quot;,&quot;</span><span class="p">)]</span>
+</span><span id="L-447"><a href="#L-447"><span class="linenos">447</span></a> <span class="k">return</span> <span class="p">{</span>
+</span><span id="L-448"><a href="#L-448"><span class="linenos">448</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">&quot;:&quot;</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">&quot;:&quot;</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-449"><a href="#L-449"><span class="linenos">449</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-450"><a href="#L-450"><span class="linenos">450</span></a> <span class="p">}</span>
+</span><span id="L-451"><a href="#L-451"><span class="linenos">451</span></a> <span class="c1"># Check if mapping looks like a DataFrame StructType</span>
+</span><span id="L-452"><a href="#L-452"><span class="linenos">452</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="s2">&quot;simpleString&quot;</span><span class="p">):</span>
+</span><span id="L-453"><a href="#L-453"><span class="linenos">453</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">struct_field</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">struct_field</span><span class="o">.</span><span class="n">dataType</span><span class="o">.</span><span class="n">simpleString</span><span class="p">()</span> <span class="k">for</span> <span class="n">struct_field</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span>
+</span><span id="L-454"><a href="#L-454"><span class="linenos">454</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-455"><a href="#L-455"><span class="linenos">455</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-456"><a href="#L-456"><span class="linenos">456</span></a>
+</span><span id="L-457"><a href="#L-457"><span class="linenos">457</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;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">&quot;</span><span class="p">)</span>
</span><span id="L-458"><a href="#L-458"><span class="linenos">458</span></a>
-</span><span id="L-459"><a href="#L-459"><span class="linenos">459</span></a><span class="k">def</span> <span class="nf">flatten_schema</span><span class="p">(</span>
-</span><span id="L-460"><a href="#L-460"><span class="linenos">460</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="nb">int</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-461"><a href="#L-461"><span class="linenos">461</span></a><span class="p">)</span> <span class="o">-&gt;</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-462"><a href="#L-462"><span class="linenos">462</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="p">[]</span>
-</span><span id="L-463"><a href="#L-463"><span class="linenos">463</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-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">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-466"><a href="#L-466"><span class="linenos">466</span></a> <span class="k">if</span> <span class="n">depth</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">:</span>
-</span><span id="L-467"><a href="#L-467"><span class="linenos">467</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-468"><a href="#L-468"><span class="linenos">468</span></a> <span class="k">elif</span> <span class="n">depth</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
-</span><span id="L-469"><a href="#L-469"><span class="linenos">469</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-470"><a href="#L-470"><span class="linenos">470</span></a>
-</span><span id="L-471"><a href="#L-471"><span class="linenos">471</span></a> <span class="k">return</span> <span class="n">tables</span>
-</span><span id="L-472"><a href="#L-472"><span class="linenos">472</span></a>
+</span><span id="L-459"><a href="#L-459"><span class="linenos">459</span></a>
+</span><span id="L-460"><a href="#L-460"><span class="linenos">460</span></a><span class="k">def</span> <span class="nf">flatten_schema</span><span class="p">(</span>
+</span><span id="L-461"><a href="#L-461"><span class="linenos">461</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="nb">int</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-462"><a href="#L-462"><span class="linenos">462</span></a><span class="p">)</span> <span class="o">-&gt;</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-463"><a href="#L-463"><span class="linenos">463</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="p">[]</span>
+</span><span id="L-464"><a href="#L-464"><span class="linenos">464</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-465"><a href="#L-465"><span class="linenos">465</span></a>
+</span><span id="L-466"><a href="#L-466"><span class="linenos">466</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-467"><a href="#L-467"><span class="linenos">467</span></a> <span class="k">if</span> <span class="n">depth</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">:</span>
+</span><span id="L-468"><a href="#L-468"><span class="linenos">468</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-469"><a href="#L-469"><span class="linenos">469</span></a> <span class="k">elif</span> <span class="n">depth</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
+</span><span id="L-470"><a href="#L-470"><span class="linenos">470</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-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 class="k">return</span> <span class="n">tables</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 class="k">def</span> <span class="nf">nested_get</span><span class="p">(</span>
-</span><span id="L-475"><a href="#L-475"><span class="linenos">475</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-476"><a href="#L-476"><span class="linenos">476</span></a><span class="p">)</span> <span class="o">-&gt;</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-477"><a href="#L-477"><span class="linenos">477</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="L-478"><a href="#L-478"><span class="linenos">478</span></a><span class="sd"> Get a value for a nested dictionary.</span>
-</span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a>
-</span><span id="L-480"><a href="#L-480"><span class="linenos">480</span></a><span class="sd"> Args:</span>
-</span><span id="L-481"><a href="#L-481"><span class="linenos">481</span></a><span class="sd"> d: the dictionary to search.</span>
-</span><span id="L-482"><a href="#L-482"><span class="linenos">482</span></a><span class="sd"> *path: tuples of (name, key), where:</span>
-</span><span id="L-483"><a href="#L-483"><span class="linenos">483</span></a><span class="sd"> `key` is the key in the dictionary to get.</span>
-</span><span id="L-484"><a href="#L-484"><span class="linenos">484</span></a><span class="sd"> `name` is a string to use in the error if `key` isn&#39;t found.</span>
-</span><span id="L-485"><a href="#L-485"><span class="linenos">485</span></a>
-</span><span id="L-486"><a href="#L-486"><span class="linenos">486</span></a><span class="sd"> Returns:</span>
-</span><span id="L-487"><a href="#L-487"><span class="linenos">487</span></a><span class="sd"> The value or None if it doesn&#39;t exist.</span>
-</span><span id="L-488"><a href="#L-488"><span class="linenos">488</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="L-489"><a href="#L-489"><span class="linenos">489</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-490"><a href="#L-490"><span class="linenos">490</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-491"><a href="#L-491"><span class="linenos">491</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-492"><a href="#L-492"><span class="linenos">492</span></a> <span class="k">if</span> <span class="n">raise_on_missing</span><span class="p">:</span>
-</span><span id="L-493"><a href="#L-493"><span class="linenos">493</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;table&quot;</span> <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;this&quot;</span> <span class="k">else</span> <span class="n">name</span>
-</span><span id="L-494"><a href="#L-494"><span class="linenos">494</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;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">&quot;</span><span class="p">)</span>
-</span><span id="L-495"><a href="#L-495"><span class="linenos">495</span></a> <span class="k">return</span> <span class="kc">None</span>
-</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">return</span> <span class="n">d</span>
-</span><span id="L-498"><a href="#L-498"><span class="linenos">498</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">nested_get</span><span class="p">(</span>
+</span><span id="L-476"><a href="#L-476"><span class="linenos">476</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-477"><a href="#L-477"><span class="linenos">477</span></a><span class="p">)</span> <span class="o">-&gt;</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-478"><a href="#L-478"><span class="linenos">478</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a><span class="sd"> Get a value for a nested dictionary.</span>
+</span><span id="L-480"><a href="#L-480"><span class="linenos">480</span></a>
+</span><span id="L-481"><a href="#L-481"><span class="linenos">481</span></a><span class="sd"> Args:</span>
+</span><span id="L-482"><a href="#L-482"><span class="linenos">482</span></a><span class="sd"> d: the dictionary to search.</span>
+</span><span id="L-483"><a href="#L-483"><span class="linenos">483</span></a><span class="sd"> *path: tuples of (name, key), where:</span>
+</span><span id="L-484"><a href="#L-484"><span class="linenos">484</span></a><span class="sd"> `key` is the key in the dictionary to get.</span>
+</span><span id="L-485"><a href="#L-485"><span class="linenos">485</span></a><span class="sd"> `name` is a string to use in the error if `key` isn&#39;t found.</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="sd"> Returns:</span>
+</span><span id="L-488"><a href="#L-488"><span class="linenos">488</span></a><span class="sd"> The value or None if it doesn&#39;t exist.</span>
+</span><span id="L-489"><a href="#L-489"><span class="linenos">489</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="L-490"><a href="#L-490"><span class="linenos">490</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-491"><a href="#L-491"><span class="linenos">491</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-492"><a href="#L-492"><span class="linenos">492</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-493"><a href="#L-493"><span class="linenos">493</span></a> <span class="k">if</span> <span class="n">raise_on_missing</span><span class="p">:</span>
+</span><span id="L-494"><a href="#L-494"><span class="linenos">494</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;table&quot;</span> <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;this&quot;</span> <span class="k">else</span> <span class="n">name</span>
+</span><span id="L-495"><a href="#L-495"><span class="linenos">495</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;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">&quot;</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="kc">None</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 class="k">return</span> <span class="n">d</span>
</span><span id="L-499"><a href="#L-499"><span class="linenos">499</span></a>
-</span><span id="L-500"><a href="#L-500"><span class="linenos">500</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">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
-</span><span id="L-501"><a href="#L-501"><span class="linenos">501</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="L-502"><a href="#L-502"><span class="linenos">502</span></a><span class="sd"> In-place set a value for a nested dictionary</span>
-</span><span id="L-503"><a href="#L-503"><span class="linenos">503</span></a>
-</span><span id="L-504"><a href="#L-504"><span class="linenos">504</span></a><span class="sd"> Example:</span>
-</span><span id="L-505"><a href="#L-505"><span class="linenos">505</span></a><span class="sd"> &gt;&gt;&gt; nested_set({}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span>
-</span><span id="L-506"><a href="#L-506"><span class="linenos">506</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;second_key&#39;: &#39;value&#39;}}</span>
-</span><span id="L-507"><a href="#L-507"><span class="linenos">507</span></a>
-</span><span id="L-508"><a href="#L-508"><span class="linenos">508</span></a><span class="sd"> &gt;&gt;&gt; nested_set({&quot;top_key&quot;: {&quot;third_key&quot;: &quot;third_value&quot;}}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span>
-</span><span id="L-509"><a href="#L-509"><span class="linenos">509</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;third_key&#39;: &#39;third_value&#39;, &#39;second_key&#39;: &#39;value&#39;}}</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="sd"> Args:</span>
-</span><span id="L-512"><a href="#L-512"><span class="linenos">512</span></a><span class="sd"> d: dictionary to update.</span>
-</span><span id="L-513"><a href="#L-513"><span class="linenos">513</span></a><span class="sd"> keys: the keys that makeup the path to `value`.</span>
-</span><span id="L-514"><a href="#L-514"><span class="linenos">514</span></a><span class="sd"> value: the value to set in the dictionary for the given key path.</span>
-</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="sd"> Returns:</span>
-</span><span id="L-517"><a href="#L-517"><span class="linenos">517</span></a><span class="sd"> The (possibly) updated dictionary.</span>
-</span><span id="L-518"><a href="#L-518"><span class="linenos">518</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="L-519"><a href="#L-519"><span class="linenos">519</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-520"><a href="#L-520"><span class="linenos">520</span></a> <span class="k">return</span> <span class="n">d</span>
-</span><span id="L-521"><a href="#L-521"><span class="linenos">521</span></a>
-</span><span id="L-522"><a href="#L-522"><span class="linenos">522</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-523"><a href="#L-523"><span class="linenos">523</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-524"><a href="#L-524"><span class="linenos">524</span></a> <span class="k">return</span> <span class="n">d</span>
-</span><span id="L-525"><a href="#L-525"><span class="linenos">525</span></a>
-</span><span id="L-526"><a href="#L-526"><span class="linenos">526</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">d</span>
-</span><span id="L-527"><a href="#L-527"><span class="linenos">527</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-528"><a href="#L-528"><span class="linenos">528</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-529"><a href="#L-529"><span class="linenos">529</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-530"><a href="#L-530"><span class="linenos">530</span></a> <span class="k">else</span><span class="p">:</span>
-</span><span id="L-531"><a href="#L-531"><span class="linenos">531</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-532"><a href="#L-532"><span class="linenos">532</span></a>
-</span><span id="L-533"><a href="#L-533"><span class="linenos">533</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-534"><a href="#L-534"><span class="linenos">534</span></a> <span class="k">return</span> <span class="n">d</span>
+</span><span id="L-500"><a href="#L-500"><span class="linenos">500</span></a>
+</span><span id="L-501"><a href="#L-501"><span class="linenos">501</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">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
+</span><span id="L-502"><a href="#L-502"><span class="linenos">502</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="L-503"><a href="#L-503"><span class="linenos">503</span></a><span class="sd"> In-place set a value for a nested dictionary</span>
+</span><span id="L-504"><a href="#L-504"><span class="linenos">504</span></a>
+</span><span id="L-505"><a href="#L-505"><span class="linenos">505</span></a><span class="sd"> Example:</span>
+</span><span id="L-506"><a href="#L-506"><span class="linenos">506</span></a><span class="sd"> &gt;&gt;&gt; nested_set({}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span>
+</span><span id="L-507"><a href="#L-507"><span class="linenos">507</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;second_key&#39;: &#39;value&#39;}}</span>
+</span><span id="L-508"><a href="#L-508"><span class="linenos">508</span></a>
+</span><span id="L-509"><a href="#L-509"><span class="linenos">509</span></a><span class="sd"> &gt;&gt;&gt; nested_set({&quot;top_key&quot;: {&quot;third_key&quot;: &quot;third_value&quot;}}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span>
+</span><span id="L-510"><a href="#L-510"><span class="linenos">510</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;third_key&#39;: &#39;third_value&#39;, &#39;second_key&#39;: &#39;value&#39;}}</span>
+</span><span id="L-511"><a href="#L-511"><span class="linenos">511</span></a>
+</span><span id="L-512"><a href="#L-512"><span class="linenos">512</span></a><span class="sd"> Args:</span>
+</span><span id="L-513"><a href="#L-513"><span class="linenos">513</span></a><span class="sd"> d: dictionary to update.</span>
+</span><span id="L-514"><a href="#L-514"><span class="linenos">514</span></a><span class="sd"> keys: the keys that makeup the path to `value`.</span>
+</span><span id="L-515"><a href="#L-515"><span class="linenos">515</span></a><span class="sd"> value: the value to set in the dictionary for the given key path.</span>
+</span><span id="L-516"><a href="#L-516"><span class="linenos">516</span></a>
+</span><span id="L-517"><a href="#L-517"><span class="linenos">517</span></a><span class="sd"> Returns:</span>
+</span><span id="L-518"><a href="#L-518"><span class="linenos">518</span></a><span class="sd"> The (possibly) updated dictionary.</span>
+</span><span id="L-519"><a href="#L-519"><span class="linenos">519</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="L-520"><a href="#L-520"><span class="linenos">520</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-521"><a href="#L-521"><span class="linenos">521</span></a> <span class="k">return</span> <span class="n">d</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">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-524"><a href="#L-524"><span class="linenos">524</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-525"><a href="#L-525"><span class="linenos">525</span></a> <span class="k">return</span> <span class="n">d</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="n">subd</span> <span class="o">=</span> <span class="n">d</span>
+</span><span id="L-528"><a href="#L-528"><span class="linenos">528</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-529"><a href="#L-529"><span class="linenos">529</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-530"><a href="#L-530"><span class="linenos">530</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-531"><a href="#L-531"><span class="linenos">531</span></a> <span class="k">else</span><span class="p">:</span>
+</span><span id="L-532"><a href="#L-532"><span class="linenos">532</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-533"><a href="#L-533"><span class="linenos">533</span></a>
+</span><span id="L-534"><a href="#L-534"><span class="linenos">534</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-535"><a href="#L-535"><span class="linenos">535</span></a> <span class="k">return</span> <span class="n">d</span>
</span></pre></div>
@@ -1515,15 +1516,16 @@ For example, a generic mapping type might be defined as::</p>
</span><span id="MappingSchema-399"><a href="#MappingSchema-399"><span class="linenos">399</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="MappingSchema-400"><a href="#MappingSchema-400"><span class="linenos">400</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-401"><a href="#MappingSchema-401"><span class="linenos">401</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-402"><a href="#MappingSchema-402"><span class="linenos">402</span></a>
-</span><span id="MappingSchema-403"><a href="#MappingSchema-403"><span class="linenos">403</span></a> <span class="k">try</span><span class="p">:</span>
-</span><span id="MappingSchema-404"><a href="#MappingSchema-404"><span class="linenos">404</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><span id="MappingSchema-405"><a href="#MappingSchema-405"><span class="linenos">405</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-406"><a href="#MappingSchema-406"><span class="linenos">406</span></a> <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
-</span><span id="MappingSchema-407"><a href="#MappingSchema-407"><span class="linenos">407</span></a> <span class="n">in_dialect</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; in dialect </span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">dialect</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
-</span><span id="MappingSchema-408"><a href="#MappingSchema-408"><span class="linenos">408</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to build type &#39;</span><span class="si">{</span><span class="n">schema_type</span><span class="si">}</span><span class="s2">&#39;</span><span class="si">{</span><span class="n">in_dialect</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
-</span><span id="MappingSchema-409"><a href="#MappingSchema-409"><span class="linenos">409</span></a>
-</span><span id="MappingSchema-410"><a href="#MappingSchema-410"><span class="linenos">410</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-402"><a href="#MappingSchema-402"><span class="linenos">402</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-403"><a href="#MappingSchema-403"><span class="linenos">403</span></a>
+</span><span id="MappingSchema-404"><a href="#MappingSchema-404"><span class="linenos">404</span></a> <span class="k">try</span><span class="p">:</span>
+</span><span id="MappingSchema-405"><a href="#MappingSchema-405"><span class="linenos">405</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-406"><a href="#MappingSchema-406"><span class="linenos">406</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-407"><a href="#MappingSchema-407"><span class="linenos">407</span></a> <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
+</span><span id="MappingSchema-408"><a href="#MappingSchema-408"><span class="linenos">408</span></a> <span class="n">in_dialect</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; in dialect </span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">dialect</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
+</span><span id="MappingSchema-409"><a href="#MappingSchema-409"><span class="linenos">409</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to build type &#39;</span><span class="si">{</span><span class="n">schema_type</span><span class="si">}</span><span class="s2">&#39;</span><span class="si">{</span><span class="n">in_dialect</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
+</span><span id="MappingSchema-410"><a href="#MappingSchema-410"><span class="linenos">410</span></a>
+</span><span id="MappingSchema-411"><a href="#MappingSchema-411"><span class="linenos">411</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>
@@ -1713,24 +1715,24 @@ are assumed to be visible. The nesting should mirror that of the schema:
</div>
<a class="headerlink" href="#normalize_name"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="normalize_name-413"><a href="#normalize_name-413"><span class="linenos">413</span></a><span class="k">def</span> <span class="nf">normalize_name</span><span class="p">(</span>
-</span><span id="normalize_name-414"><a href="#normalize_name-414"><span class="linenos">414</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="normalize_name-415"><a href="#normalize_name-415"><span class="linenos">415</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-416"><a href="#normalize_name-416"><span class="linenos">416</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-417"><a href="#normalize_name-417"><span class="linenos">417</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-418"><a href="#normalize_name-418"><span class="linenos">418</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="normalize_name-419"><a href="#normalize_name-419"><span class="linenos">419</span></a> <span class="k">try</span><span class="p">:</span>
-</span><span id="normalize_name-420"><a href="#normalize_name-420"><span class="linenos">420</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">name</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">into</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-421"><a href="#normalize_name-421"><span class="linenos">421</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span>
-</span><span id="normalize_name-422"><a href="#normalize_name-422"><span class="linenos">422</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span>
-</span><span id="normalize_name-423"><a href="#normalize_name-423"><span class="linenos">423</span></a>
-</span><span id="normalize_name-424"><a href="#normalize_name-424"><span class="linenos">424</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">identifier</span><span class="o">.</span><span class="n">name</span>
-</span><span id="normalize_name-425"><a href="#normalize_name-425"><span class="linenos">425</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-426"><a href="#normalize_name-426"><span class="linenos">426</span></a> <span class="k">return</span> <span class="n">name</span>
-</span><span id="normalize_name-427"><a href="#normalize_name-427"><span class="linenos">427</span></a>
-</span><span id="normalize_name-428"><a href="#normalize_name-428"><span class="linenos">428</span></a> <span class="c1"># This can be useful for normalize_identifier</span>
-</span><span id="normalize_name-429"><a href="#normalize_name-429"><span class="linenos">429</span></a> <span class="n">identifier</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">&quot;is_table&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_table</span>
-</span><span id="normalize_name-430"><a href="#normalize_name-430"><span class="linenos">430</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 class="o">.</span><span class="n">name</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="normalize_name-414"><a href="#normalize_name-414"><span class="linenos">414</span></a><span class="k">def</span> <span class="nf">normalize_name</span><span class="p">(</span>
+</span><span id="normalize_name-415"><a href="#normalize_name-415"><span class="linenos">415</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="normalize_name-416"><a href="#normalize_name-416"><span class="linenos">416</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-417"><a href="#normalize_name-417"><span class="linenos">417</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-418"><a href="#normalize_name-418"><span class="linenos">418</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-419"><a href="#normalize_name-419"><span class="linenos">419</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="normalize_name-420"><a href="#normalize_name-420"><span class="linenos">420</span></a> <span class="k">try</span><span class="p">:</span>
+</span><span id="normalize_name-421"><a href="#normalize_name-421"><span class="linenos">421</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">name</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">into</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-422"><a href="#normalize_name-422"><span class="linenos">422</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span>
+</span><span id="normalize_name-423"><a href="#normalize_name-423"><span class="linenos">423</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span>
+</span><span id="normalize_name-424"><a href="#normalize_name-424"><span class="linenos">424</span></a>
+</span><span id="normalize_name-425"><a href="#normalize_name-425"><span class="linenos">425</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">identifier</span><span class="o">.</span><span class="n">name</span>
+</span><span id="normalize_name-426"><a href="#normalize_name-426"><span class="linenos">426</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-427"><a href="#normalize_name-427"><span class="linenos">427</span></a> <span class="k">return</span> <span class="n">name</span>
+</span><span id="normalize_name-428"><a href="#normalize_name-428"><span class="linenos">428</span></a>
+</span><span id="normalize_name-429"><a href="#normalize_name-429"><span class="linenos">429</span></a> <span class="c1"># This can be useful for normalize_identifier</span>
+</span><span id="normalize_name-430"><a href="#normalize_name-430"><span class="linenos">430</span></a> <span class="n">identifier</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">&quot;is_table&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_table</span>
+</span><span id="normalize_name-431"><a href="#normalize_name-431"><span class="linenos">431</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 class="o">.</span><span class="n">name</span>
</span></pre></div>
@@ -1748,11 +1750,11 @@ are assumed to be visible. The nesting should mirror that of the schema:
</div>
<a class="headerlink" href="#ensure_schema"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="ensure_schema-433"><a href="#ensure_schema-433"><span class="linenos">433</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">-&gt;</span> <span class="n">Schema</span><span class="p">:</span>
-</span><span id="ensure_schema-434"><a href="#ensure_schema-434"><span class="linenos">434</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-435"><a href="#ensure_schema-435"><span class="linenos">435</span></a> <span class="k">return</span> <span class="n">schema</span>
-</span><span id="ensure_schema-436"><a href="#ensure_schema-436"><span class="linenos">436</span></a>
-</span><span id="ensure_schema-437"><a href="#ensure_schema-437"><span class="linenos">437</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-434"><a href="#ensure_schema-434"><span class="linenos">434</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">-&gt;</span> <span class="n">Schema</span><span class="p">:</span>
+</span><span id="ensure_schema-435"><a href="#ensure_schema-435"><span class="linenos">435</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-436"><a href="#ensure_schema-436"><span class="linenos">436</span></a> <span class="k">return</span> <span class="n">schema</span>
+</span><span id="ensure_schema-437"><a href="#ensure_schema-437"><span class="linenos">437</span></a>
+</span><span id="ensure_schema-438"><a href="#ensure_schema-438"><span class="linenos">438</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>
@@ -1770,24 +1772,24 @@ are assumed to be visible. The nesting should mirror that of the schema:
</div>
<a class="headerlink" href="#ensure_column_mapping"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="ensure_column_mapping-440"><a href="#ensure_column_mapping-440"><span class="linenos">440</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">-&gt;</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-441"><a href="#ensure_column_mapping-441"><span class="linenos">441</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-442"><a href="#ensure_column_mapping-442"><span class="linenos">442</span></a> <span class="k">return</span> <span class="p">{}</span>
-</span><span id="ensure_column_mapping-443"><a href="#ensure_column_mapping-443"><span class="linenos">443</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-444"><a href="#ensure_column_mapping-444"><span class="linenos">444</span></a> <span class="k">return</span> <span class="n">mapping</span>
-</span><span id="ensure_column_mapping-445"><a href="#ensure_column_mapping-445"><span class="linenos">445</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-446"><a href="#ensure_column_mapping-446"><span class="linenos">446</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">&quot;,&quot;</span><span class="p">)]</span>
-</span><span id="ensure_column_mapping-447"><a href="#ensure_column_mapping-447"><span class="linenos">447</span></a> <span class="k">return</span> <span class="p">{</span>
-</span><span id="ensure_column_mapping-448"><a href="#ensure_column_mapping-448"><span class="linenos">448</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">&quot;:&quot;</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">&quot;:&quot;</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-449"><a href="#ensure_column_mapping-449"><span class="linenos">449</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-450"><a href="#ensure_column_mapping-450"><span class="linenos">450</span></a> <span class="p">}</span>
-</span><span id="ensure_column_mapping-451"><a href="#ensure_column_mapping-451"><span class="linenos">451</span></a> <span class="c1"># Check if mapping looks like a DataFrame StructType</span>
-</span><span id="ensure_column_mapping-452"><a href="#ensure_column_mapping-452"><span class="linenos">452</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="s2">&quot;simpleString&quot;</span><span class="p">):</span>
-</span><span id="ensure_column_mapping-453"><a href="#ensure_column_mapping-453"><span class="linenos">453</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">struct_field</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">struct_field</span><span class="o">.</span><span class="n">dataType</span><span class="o">.</span><span class="n">simpleString</span><span class="p">()</span> <span class="k">for</span> <span class="n">struct_field</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span>
-</span><span id="ensure_column_mapping-454"><a href="#ensure_column_mapping-454"><span class="linenos">454</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-455"><a href="#ensure_column_mapping-455"><span class="linenos">455</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-456"><a href="#ensure_column_mapping-456"><span class="linenos">456</span></a>
-</span><span id="ensure_column_mapping-457"><a href="#ensure_column_mapping-457"><span class="linenos">457</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;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">&quot;</span><span class="p">)</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="ensure_column_mapping-441"><a href="#ensure_column_mapping-441"><span class="linenos">441</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">-&gt;</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-442"><a href="#ensure_column_mapping-442"><span class="linenos">442</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-443"><a href="#ensure_column_mapping-443"><span class="linenos">443</span></a> <span class="k">return</span> <span class="p">{}</span>
+</span><span id="ensure_column_mapping-444"><a href="#ensure_column_mapping-444"><span class="linenos">444</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-445"><a href="#ensure_column_mapping-445"><span class="linenos">445</span></a> <span class="k">return</span> <span class="n">mapping</span>
+</span><span id="ensure_column_mapping-446"><a href="#ensure_column_mapping-446"><span class="linenos">446</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-447"><a href="#ensure_column_mapping-447"><span class="linenos">447</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">&quot;,&quot;</span><span class="p">)]</span>
+</span><span id="ensure_column_mapping-448"><a href="#ensure_column_mapping-448"><span class="linenos">448</span></a> <span class="k">return</span> <span class="p">{</span>
+</span><span id="ensure_column_mapping-449"><a href="#ensure_column_mapping-449"><span class="linenos">449</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">&quot;:&quot;</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">&quot;:&quot;</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-450"><a href="#ensure_column_mapping-450"><span class="linenos">450</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-451"><a href="#ensure_column_mapping-451"><span class="linenos">451</span></a> <span class="p">}</span>
+</span><span id="ensure_column_mapping-452"><a href="#ensure_column_mapping-452"><span class="linenos">452</span></a> <span class="c1"># Check if mapping looks like a DataFrame StructType</span>
+</span><span id="ensure_column_mapping-453"><a href="#ensure_column_mapping-453"><span class="linenos">453</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="s2">&quot;simpleString&quot;</span><span class="p">):</span>
+</span><span id="ensure_column_mapping-454"><a href="#ensure_column_mapping-454"><span class="linenos">454</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">struct_field</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">struct_field</span><span class="o">.</span><span class="n">dataType</span><span class="o">.</span><span class="n">simpleString</span><span class="p">()</span> <span class="k">for</span> <span class="n">struct_field</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span>
+</span><span id="ensure_column_mapping-455"><a href="#ensure_column_mapping-455"><span class="linenos">455</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-456"><a href="#ensure_column_mapping-456"><span class="linenos">456</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-457"><a href="#ensure_column_mapping-457"><span class="linenos">457</span></a>
+</span><span id="ensure_column_mapping-458"><a href="#ensure_column_mapping-458"><span class="linenos">458</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;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">&quot;</span><span class="p">)</span>
</span></pre></div>
@@ -1805,19 +1807,19 @@ are assumed to be visible. The nesting should mirror that of the schema:
</div>
<a class="headerlink" href="#flatten_schema"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="flatten_schema-460"><a href="#flatten_schema-460"><span class="linenos">460</span></a><span class="k">def</span> <span class="nf">flatten_schema</span><span class="p">(</span>
-</span><span id="flatten_schema-461"><a href="#flatten_schema-461"><span class="linenos">461</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="nb">int</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-462"><a href="#flatten_schema-462"><span class="linenos">462</span></a><span class="p">)</span> <span class="o">-&gt;</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-463"><a href="#flatten_schema-463"><span class="linenos">463</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="p">[]</span>
-</span><span id="flatten_schema-464"><a href="#flatten_schema-464"><span class="linenos">464</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-465"><a href="#flatten_schema-465"><span class="linenos">465</span></a>
-</span><span id="flatten_schema-466"><a href="#flatten_schema-466"><span class="linenos">466</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-467"><a href="#flatten_schema-467"><span class="linenos">467</span></a> <span class="k">if</span> <span class="n">depth</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">:</span>
-</span><span id="flatten_schema-468"><a href="#flatten_schema-468"><span class="linenos">468</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-469"><a href="#flatten_schema-469"><span class="linenos">469</span></a> <span class="k">elif</span> <span class="n">depth</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
-</span><span id="flatten_schema-470"><a href="#flatten_schema-470"><span class="linenos">470</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-471"><a href="#flatten_schema-471"><span class="linenos">471</span></a>
-</span><span id="flatten_schema-472"><a href="#flatten_schema-472"><span class="linenos">472</span></a> <span class="k">return</span> <span class="n">tables</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="flatten_schema-461"><a href="#flatten_schema-461"><span class="linenos">461</span></a><span class="k">def</span> <span class="nf">flatten_schema</span><span class="p">(</span>
+</span><span id="flatten_schema-462"><a href="#flatten_schema-462"><span class="linenos">462</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="nb">int</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-463"><a href="#flatten_schema-463"><span class="linenos">463</span></a><span class="p">)</span> <span class="o">-&gt;</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-464"><a href="#flatten_schema-464"><span class="linenos">464</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="p">[]</span>
+</span><span id="flatten_schema-465"><a href="#flatten_schema-465"><span class="linenos">465</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-466"><a href="#flatten_schema-466"><span class="linenos">466</span></a>
+</span><span id="flatten_schema-467"><a href="#flatten_schema-467"><span class="linenos">467</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-468"><a href="#flatten_schema-468"><span class="linenos">468</span></a> <span class="k">if</span> <span class="n">depth</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">:</span>
+</span><span id="flatten_schema-469"><a href="#flatten_schema-469"><span class="linenos">469</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-470"><a href="#flatten_schema-470"><span class="linenos">470</span></a> <span class="k">elif</span> <span class="n">depth</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
+</span><span id="flatten_schema-471"><a href="#flatten_schema-471"><span class="linenos">471</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-472"><a href="#flatten_schema-472"><span class="linenos">472</span></a>
+</span><span id="flatten_schema-473"><a href="#flatten_schema-473"><span class="linenos">473</span></a> <span class="k">return</span> <span class="n">tables</span>
</span></pre></div>
@@ -1835,30 +1837,30 @@ are assumed to be visible. The nesting should mirror that of the schema:
</div>
<a class="headerlink" href="#nested_get"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="nested_get-475"><a href="#nested_get-475"><span class="linenos">475</span></a><span class="k">def</span> <span class="nf">nested_get</span><span class="p">(</span>
-</span><span id="nested_get-476"><a href="#nested_get-476"><span class="linenos">476</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-477"><a href="#nested_get-477"><span class="linenos">477</span></a><span class="p">)</span> <span class="o">-&gt;</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-478"><a href="#nested_get-478"><span class="linenos">478</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="nested_get-479"><a href="#nested_get-479"><span class="linenos">479</span></a><span class="sd"> Get a value for a nested dictionary.</span>
-</span><span id="nested_get-480"><a href="#nested_get-480"><span class="linenos">480</span></a>
-</span><span id="nested_get-481"><a href="#nested_get-481"><span class="linenos">481</span></a><span class="sd"> Args:</span>
-</span><span id="nested_get-482"><a href="#nested_get-482"><span class="linenos">482</span></a><span class="sd"> d: the dictionary to search.</span>
-</span><span id="nested_get-483"><a href="#nested_get-483"><span class="linenos">483</span></a><span class="sd"> *path: tuples of (name, key), where:</span>
-</span><span id="nested_get-484"><a href="#nested_get-484"><span class="linenos">484</span></a><span class="sd"> `key` is the key in the dictionary to get.</span>
-</span><span id="nested_get-485"><a href="#nested_get-485"><span class="linenos">485</span></a><span class="sd"> `name` is a string to use in the error if `key` isn&#39;t found.</span>
-</span><span id="nested_get-486"><a href="#nested_get-486"><span class="linenos">486</span></a>
-</span><span id="nested_get-487"><a href="#nested_get-487"><span class="linenos">487</span></a><span class="sd"> Returns:</span>
-</span><span id="nested_get-488"><a href="#nested_get-488"><span class="linenos">488</span></a><span class="sd"> The value or None if it doesn&#39;t exist.</span>
-</span><span id="nested_get-489"><a href="#nested_get-489"><span class="linenos">489</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="nested_get-490"><a href="#nested_get-490"><span class="linenos">490</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-491"><a href="#nested_get-491"><span class="linenos">491</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-492"><a href="#nested_get-492"><span class="linenos">492</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-493"><a href="#nested_get-493"><span class="linenos">493</span></a> <span class="k">if</span> <span class="n">raise_on_missing</span><span class="p">:</span>
-</span><span id="nested_get-494"><a href="#nested_get-494"><span class="linenos">494</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;table&quot;</span> <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;this&quot;</span> <span class="k">else</span> <span class="n">name</span>
-</span><span id="nested_get-495"><a href="#nested_get-495"><span class="linenos">495</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;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">&quot;</span><span class="p">)</span>
-</span><span id="nested_get-496"><a href="#nested_get-496"><span class="linenos">496</span></a> <span class="k">return</span> <span class="kc">None</span>
-</span><span id="nested_get-497"><a href="#nested_get-497"><span class="linenos">497</span></a>
-</span><span id="nested_get-498"><a href="#nested_get-498"><span class="linenos">498</span></a> <span class="k">return</span> <span class="n">d</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="nested_get-476"><a href="#nested_get-476"><span class="linenos">476</span></a><span class="k">def</span> <span class="nf">nested_get</span><span class="p">(</span>
+</span><span id="nested_get-477"><a href="#nested_get-477"><span class="linenos">477</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-478"><a href="#nested_get-478"><span class="linenos">478</span></a><span class="p">)</span> <span class="o">-&gt;</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-479"><a href="#nested_get-479"><span class="linenos">479</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="nested_get-480"><a href="#nested_get-480"><span class="linenos">480</span></a><span class="sd"> Get a value for a nested dictionary.</span>
+</span><span id="nested_get-481"><a href="#nested_get-481"><span class="linenos">481</span></a>
+</span><span id="nested_get-482"><a href="#nested_get-482"><span class="linenos">482</span></a><span class="sd"> Args:</span>
+</span><span id="nested_get-483"><a href="#nested_get-483"><span class="linenos">483</span></a><span class="sd"> d: the dictionary to search.</span>
+</span><span id="nested_get-484"><a href="#nested_get-484"><span class="linenos">484</span></a><span class="sd"> *path: tuples of (name, key), where:</span>
+</span><span id="nested_get-485"><a href="#nested_get-485"><span class="linenos">485</span></a><span class="sd"> `key` is the key in the dictionary to get.</span>
+</span><span id="nested_get-486"><a href="#nested_get-486"><span class="linenos">486</span></a><span class="sd"> `name` is a string to use in the error if `key` isn&#39;t found.</span>
+</span><span id="nested_get-487"><a href="#nested_get-487"><span class="linenos">487</span></a>
+</span><span id="nested_get-488"><a href="#nested_get-488"><span class="linenos">488</span></a><span class="sd"> Returns:</span>
+</span><span id="nested_get-489"><a href="#nested_get-489"><span class="linenos">489</span></a><span class="sd"> The value or None if it doesn&#39;t exist.</span>
+</span><span id="nested_get-490"><a href="#nested_get-490"><span class="linenos">490</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="nested_get-491"><a href="#nested_get-491"><span class="linenos">491</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-492"><a href="#nested_get-492"><span class="linenos">492</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-493"><a href="#nested_get-493"><span class="linenos">493</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-494"><a href="#nested_get-494"><span class="linenos">494</span></a> <span class="k">if</span> <span class="n">raise_on_missing</span><span class="p">:</span>
+</span><span id="nested_get-495"><a href="#nested_get-495"><span class="linenos">495</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;table&quot;</span> <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;this&quot;</span> <span class="k">else</span> <span class="n">name</span>
+</span><span id="nested_get-496"><a href="#nested_get-496"><span class="linenos">496</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;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">&quot;</span><span class="p">)</span>
+</span><span id="nested_get-497"><a href="#nested_get-497"><span class="linenos">497</span></a> <span class="k">return</span> <span class="kc">None</span>
+</span><span id="nested_get-498"><a href="#nested_get-498"><span class="linenos">498</span></a>
+</span><span id="nested_get-499"><a href="#nested_get-499"><span class="linenos">499</span></a> <span class="k">return</span> <span class="n">d</span>
</span></pre></div>
@@ -1893,41 +1895,41 @@ are assumed to be visible. The nesting should mirror that of the schema:
</div>
<a class="headerlink" href="#nested_set"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="nested_set-501"><a href="#nested_set-501"><span class="linenos">501</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">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
-</span><span id="nested_set-502"><a href="#nested_set-502"><span class="linenos">502</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="nested_set-503"><a href="#nested_set-503"><span class="linenos">503</span></a><span class="sd"> In-place set a value for a nested dictionary</span>
-</span><span id="nested_set-504"><a href="#nested_set-504"><span class="linenos">504</span></a>
-</span><span id="nested_set-505"><a href="#nested_set-505"><span class="linenos">505</span></a><span class="sd"> Example:</span>
-</span><span id="nested_set-506"><a href="#nested_set-506"><span class="linenos">506</span></a><span class="sd"> &gt;&gt;&gt; nested_set({}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span>
-</span><span id="nested_set-507"><a href="#nested_set-507"><span class="linenos">507</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;second_key&#39;: &#39;value&#39;}}</span>
-</span><span id="nested_set-508"><a href="#nested_set-508"><span class="linenos">508</span></a>
-</span><span id="nested_set-509"><a href="#nested_set-509"><span class="linenos">509</span></a><span class="sd"> &gt;&gt;&gt; nested_set({&quot;top_key&quot;: {&quot;third_key&quot;: &quot;third_value&quot;}}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span>
-</span><span id="nested_set-510"><a href="#nested_set-510"><span class="linenos">510</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;third_key&#39;: &#39;third_value&#39;, &#39;second_key&#39;: &#39;value&#39;}}</span>
-</span><span id="nested_set-511"><a href="#nested_set-511"><span class="linenos">511</span></a>
-</span><span id="nested_set-512"><a href="#nested_set-512"><span class="linenos">512</span></a><span class="sd"> Args:</span>
-</span><span id="nested_set-513"><a href="#nested_set-513"><span class="linenos">513</span></a><span class="sd"> d: dictionary to update.</span>
-</span><span id="nested_set-514"><a href="#nested_set-514"><span class="linenos">514</span></a><span class="sd"> keys: the keys that makeup the path to `value`.</span>
-</span><span id="nested_set-515"><a href="#nested_set-515"><span class="linenos">515</span></a><span class="sd"> value: the value to set in the dictionary for the given key path.</span>
-</span><span id="nested_set-516"><a href="#nested_set-516"><span class="linenos">516</span></a>
-</span><span id="nested_set-517"><a href="#nested_set-517"><span class="linenos">517</span></a><span class="sd"> Returns:</span>
-</span><span id="nested_set-518"><a href="#nested_set-518"><span class="linenos">518</span></a><span class="sd"> The (possibly) updated dictionary.</span>
-</span><span id="nested_set-519"><a href="#nested_set-519"><span class="linenos">519</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="nested_set-520"><a href="#nested_set-520"><span class="linenos">520</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-521"><a href="#nested_set-521"><span class="linenos">521</span></a> <span class="k">return</span> <span class="n">d</span>
-</span><span id="nested_set-522"><a href="#nested_set-522"><span class="linenos">522</span></a>
-</span><span id="nested_set-523"><a href="#nested_set-523"><span class="linenos">523</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-524"><a href="#nested_set-524"><span class="linenos">524</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-525"><a href="#nested_set-525"><span class="linenos">525</span></a> <span class="k">return</span> <span class="n">d</span>
-</span><span id="nested_set-526"><a href="#nested_set-526"><span class="linenos">526</span></a>
-</span><span id="nested_set-527"><a href="#nested_set-527"><span class="linenos">527</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">d</span>
-</span><span id="nested_set-528"><a href="#nested_set-528"><span class="linenos">528</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-529"><a href="#nested_set-529"><span class="linenos">529</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-530"><a href="#nested_set-530"><span class="linenos">530</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-531"><a href="#nested_set-531"><span class="linenos">531</span></a> <span class="k">else</span><span class="p">:</span>
-</span><span id="nested_set-532"><a href="#nested_set-532"><span class="linenos">532</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-533"><a href="#nested_set-533"><span class="linenos">533</span></a>
-</span><span id="nested_set-534"><a href="#nested_set-534"><span class="linenos">534</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-535"><a href="#nested_set-535"><span class="linenos">535</span></a> <span class="k">return</span> <span class="n">d</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="nested_set-502"><a href="#nested_set-502"><span class="linenos">502</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">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
+</span><span id="nested_set-503"><a href="#nested_set-503"><span class="linenos">503</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="nested_set-504"><a href="#nested_set-504"><span class="linenos">504</span></a><span class="sd"> In-place set a value for a nested dictionary</span>
+</span><span id="nested_set-505"><a href="#nested_set-505"><span class="linenos">505</span></a>
+</span><span id="nested_set-506"><a href="#nested_set-506"><span class="linenos">506</span></a><span class="sd"> Example:</span>
+</span><span id="nested_set-507"><a href="#nested_set-507"><span class="linenos">507</span></a><span class="sd"> &gt;&gt;&gt; nested_set({}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span>
+</span><span id="nested_set-508"><a href="#nested_set-508"><span class="linenos">508</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;second_key&#39;: &#39;value&#39;}}</span>
+</span><span id="nested_set-509"><a href="#nested_set-509"><span class="linenos">509</span></a>
+</span><span id="nested_set-510"><a href="#nested_set-510"><span class="linenos">510</span></a><span class="sd"> &gt;&gt;&gt; nested_set({&quot;top_key&quot;: {&quot;third_key&quot;: &quot;third_value&quot;}}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span>
+</span><span id="nested_set-511"><a href="#nested_set-511"><span class="linenos">511</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;third_key&#39;: &#39;third_value&#39;, &#39;second_key&#39;: &#39;value&#39;}}</span>
+</span><span id="nested_set-512"><a href="#nested_set-512"><span class="linenos">512</span></a>
+</span><span id="nested_set-513"><a href="#nested_set-513"><span class="linenos">513</span></a><span class="sd"> Args:</span>
+</span><span id="nested_set-514"><a href="#nested_set-514"><span class="linenos">514</span></a><span class="sd"> d: dictionary to update.</span>
+</span><span id="nested_set-515"><a href="#nested_set-515"><span class="linenos">515</span></a><span class="sd"> keys: the keys that makeup the path to `value`.</span>
+</span><span id="nested_set-516"><a href="#nested_set-516"><span class="linenos">516</span></a><span class="sd"> value: the value to set in the dictionary for the given key path.</span>
+</span><span id="nested_set-517"><a href="#nested_set-517"><span class="linenos">517</span></a>
+</span><span id="nested_set-518"><a href="#nested_set-518"><span class="linenos">518</span></a><span class="sd"> Returns:</span>
+</span><span id="nested_set-519"><a href="#nested_set-519"><span class="linenos">519</span></a><span class="sd"> The (possibly) updated dictionary.</span>
+</span><span id="nested_set-520"><a href="#nested_set-520"><span class="linenos">520</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="nested_set-521"><a href="#nested_set-521"><span class="linenos">521</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-522"><a href="#nested_set-522"><span class="linenos">522</span></a> <span class="k">return</span> <span class="n">d</span>
+</span><span id="nested_set-523"><a href="#nested_set-523"><span class="linenos">523</span></a>
+</span><span id="nested_set-524"><a href="#nested_set-524"><span class="linenos">524</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-525"><a href="#nested_set-525"><span class="linenos">525</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-526"><a href="#nested_set-526"><span class="linenos">526</span></a> <span class="k">return</span> <span class="n">d</span>
+</span><span id="nested_set-527"><a href="#nested_set-527"><span class="linenos">527</span></a>
+</span><span id="nested_set-528"><a href="#nested_set-528"><span class="linenos">528</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">d</span>
+</span><span id="nested_set-529"><a href="#nested_set-529"><span class="linenos">529</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-530"><a href="#nested_set-530"><span class="linenos">530</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-531"><a href="#nested_set-531"><span class="linenos">531</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-532"><a href="#nested_set-532"><span class="linenos">532</span></a> <span class="k">else</span><span class="p">:</span>
+</span><span id="nested_set-533"><a href="#nested_set-533"><span class="linenos">533</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-534"><a href="#nested_set-534"><span class="linenos">534</span></a>
+</span><span id="nested_set-535"><a href="#nested_set-535"><span class="linenos">535</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-536"><a href="#nested_set-536"><span class="linenos">536</span></a> <span class="k">return</span> <span class="n">d</span>
</span></pre></div>