Skip to content

Commit

Permalink
deploy: 95b0c92
Browse files Browse the repository at this point in the history
  • Loading branch information
gtfierro committed Feb 14, 2024
1 parent 573e25a commit 74722b7
Show file tree
Hide file tree
Showing 16 changed files with 1,179 additions and 1,170 deletions.
Binary file modified .doctrees/environment.pickle
Binary file not shown.
Binary file modified .doctrees/explanations/shapes-and-templates.doctree
Binary file not shown.
Binary file modified .doctrees/guides/generating-queries.doctree
Binary file not shown.
Binary file modified .doctrees/guides/ingress-bacnet-to-brick.doctree
Binary file not shown.
Binary file modified .doctrees/tutorials/model_correction.doctree
Binary file not shown.
Binary file modified .doctrees/tutorials/model_creation.doctree
Binary file not shown.
Binary file modified .doctrees/tutorials/model_validation.doctree
Binary file not shown.
53 changes: 35 additions & 18 deletions _modules/buildingmotif/dataclasses/template.html
Original file line number Diff line number Diff line change
Expand Up @@ -676,28 +676,44 @@ <h1>Source code for buildingmotif.dataclasses.template</h1><div class="highlight
<span class="n">replace_nodes</span><span class="p">(</span>
<span class="n">deptempl</span><span class="o">.</span><span class="n">body</span><span class="p">,</span> <span class="p">{</span><span class="n">PARAM</span><span class="p">[</span><span class="n">k</span><span class="p">]:</span> <span class="n">PARAM</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <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">rename_params</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
<span class="p">)</span>
<span class="c1"># rename the optional_args in the dependency template too</span>
<span class="n">deptempl</span><span class="o">.</span><span class="n">optional_args</span> <span class="o">=</span> <span class="p">[</span>
<span class="n">rename_params</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">deptempl</span><span class="o">.</span><span class="n">optional_args</span>
<span class="p">]</span>

<span class="c1"># at this point, deptempl&#39;s parameters are all unique with respect to</span>
<span class="c1"># the parent template. They are either renamed explicitly via the dependency&#39;s</span>
<span class="c1"># args or implicitly via prefixing with the &#39;name&#39; parameter.</span>

<span class="c1"># Next, we need to determine which of deptempl&#39;s parameters are optional</span>
<span class="c1"># and add these to the parent template&#39;s optional_args list.</span>

<span class="c1"># get the parent template&#39;s optional args</span>
<span class="n">templ_optional_args</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">templ</span><span class="o">.</span><span class="n">optional_args</span><span class="p">)</span>
<span class="c1"># figure out which of deptempl&#39;s parameters are encoded as &#39;optional&#39; by the</span>
<span class="c1"># parent (depending) template</span>
<span class="n">deptempl_opt_args</span> <span class="o">=</span> <span class="n">deptempl</span><span class="o">.</span><span class="n">parameters</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="n">templ</span><span class="o">.</span><span class="n">optional_args</span><span class="p">)</span>
<span class="c1"># if the &#39;name&#39; of the deptempl is optional, then all the arguments inside deptempl</span>
<span class="c1"># become optional</span>

<span class="c1"># represents the optional parameters of the dependency template</span>
<span class="n">deptempl_opt_args</span><span class="p">:</span> <span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>

<span class="c1"># these optional parameters come from two places.</span>
<span class="c1"># 1. the dependency template itself (its optional_args)</span>
<span class="n">deptempl_opt_args</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">deptempl</span><span class="o">.</span><span class="n">optional_args</span><span class="p">)</span>
<span class="c1"># 1a. remove any parameters that have the same name as a parameter in the</span>
<span class="c1"># parent but are not optional in the parent</span>
<span class="n">deptempl_opt_args</span><span class="o">.</span><span class="n">difference_update</span><span class="p">(</span><span class="n">templ</span><span class="o">.</span><span class="n">parameters</span><span class="p">)</span>
<span class="c1"># 2. having the same name as an optional parameter in the parent template</span>
<span class="c1"># (templ_optional_args)</span>
<span class="n">deptempl_opt_args</span><span class="o">.</span><span class="n">update</span><span class="p">(</span>
<span class="n">templ_optional_args</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="n">deptempl</span><span class="o">.</span><span class="n">parameters</span><span class="p">)</span>
<span class="p">)</span>
<span class="c1"># 2a. if the &#39;name&#39; of the deptempl is optional (given by the parent template),</span>
<span class="c1"># then all the arguments inside deptempl become optional</span>
<span class="c1"># (deptempl.parameters)</span>
<span class="k">if</span> <span class="n">rename_params</span><span class="p">[</span><span class="s2">&quot;name&quot;</span><span class="p">]</span> <span class="ow">in</span> <span class="n">deptempl_opt_args</span><span class="p">:</span>
<span class="c1"># mark all of deptempl&#39;s parameters as optional</span>
<span class="n">templ_optional_args</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">deptempl</span><span class="o">.</span><span class="n">parameters</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># otherwise, only add the parameters that are explicitly</span>
<span class="c1"># marked as optional *and* appear in this dependency</span>
<span class="n">templ_optional_args</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">deptempl_opt_args</span><span class="p">)</span>
<span class="c1"># ensure that the optional_args includes all params marked as</span>
<span class="c1"># optional by the dependency</span>
<span class="n">templ_optional_args</span><span class="o">.</span><span class="n">update</span><span class="p">(</span>
<span class="p">[</span><span class="n">rename_params</span><span class="p">[</span><span class="n">n</span><span class="p">]</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">deptempl</span><span class="o">.</span><span class="n">optional_args</span><span class="p">]</span>
<span class="p">)</span>
<span class="n">deptempl_opt_args</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">deptempl</span><span class="o">.</span><span class="n">parameters</span><span class="p">)</span>

<span class="c1"># convert our set of optional params to a list and assign to the parent template</span>
<span class="n">templ</span><span class="o">.</span><span class="n">optional_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">templ_optional_args</span><span class="p">)</span>
<span class="n">templ</span><span class="o">.</span><span class="n">optional_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">templ_optional_args</span><span class="o">.</span><span class="n">union</span><span class="p">(</span><span class="n">deptempl_opt_args</span><span class="p">))</span>

<span class="c1"># append the inlined template into the parent&#39;s body</span>
<span class="n">templ</span><span class="o">.</span><span class="n">body</span> <span class="o">+=</span> <span class="n">deptempl</span><span class="o">.</span><span class="n">body</span>
Expand Down Expand Up @@ -754,7 +770,8 @@ <h1>Source code for buildingmotif.dataclasses.template</h1><div class="highlight
<span class="p">)</span>
<span class="c1"># true if all parameters are now bound or only optional args are unbound</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">templ</span><span class="o">.</span><span class="n">parameters</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="p">(</span>
<span class="ow">not</span> <span class="n">require_optional_args</span> <span class="ow">and</span> <span class="n">templ</span><span class="o">.</span><span class="n">parameters</span> <span class="o">==</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optional_args</span><span class="p">)</span>
<span class="ow">not</span> <span class="n">require_optional_args</span>
<span class="ow">and</span> <span class="n">templ</span><span class="o">.</span><span class="n">parameters</span><span class="o">.</span><span class="n">issubset</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">optional_args</span><span class="p">))</span>
<span class="p">):</span>
<span class="n">bind_prefixes</span><span class="p">(</span><span class="n">templ</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
<span class="k">if</span> <span class="n">namespaces</span><span class="p">:</span>
Expand Down Expand Up @@ -790,7 +807,7 @@ <h1>Source code for buildingmotif.dataclasses.template</h1><div class="highlight
<span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">parameters</span>
<span class="k">if</span> <span class="n">include_optional</span> <span class="ow">or</span> <span class="n">param</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">optional_args</span>
<span class="p">}</span>
<span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="n">bindings</span><span class="p">)</span>
<span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="n">bindings</span><span class="p">,</span> <span class="n">require_optional_args</span><span class="o">=</span><span class="n">include_optional</span><span class="p">)</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="n">rdflib</span><span class="o">.</span><span class="n">Graph</span><span class="p">)</span>
<span class="k">return</span> <span class="n">bindings</span><span class="p">,</span> <span class="n">res</span></div>

Expand Down
8 changes: 5 additions & 3 deletions _modules/buildingmotif/ingresses/template.html
Original file line number Diff line number Diff line change
Expand Up @@ -458,8 +458,9 @@ <h1>Source code for buildingmotif.ingresses.template</h1><div class="highlight">
<span class="k">assert</span> <span class="n">records</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
<span class="k">for</span> <span class="n">rec</span> <span class="ow">in</span> <span class="n">records</span><span class="p">:</span>
<span class="n">bindings</span> <span class="o">=</span> <span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">mapper</span><span class="p">(</span><span class="n">k</span><span class="p">):</span> <span class="n">_get_term</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span> <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">rec</span><span class="o">.</span><span class="n">fields</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
<span class="n">graph</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="n">bindings</span><span class="p">)</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">graph</span><span class="p">,</span> <span class="n">Graph</span><span class="p">)</span>
<span class="n">graph</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">template</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="n">bindings</span><span class="p">,</span> <span class="n">require_optional_args</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">graph</span><span class="p">,</span> <span class="n">Graph</span><span class="p">):</span>
<span class="n">bindings</span><span class="p">,</span> <span class="n">graph</span> <span class="o">=</span> <span class="n">graph</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">ns</span><span class="p">,</span> <span class="n">include_optional</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">g</span> <span class="o">+=</span> <span class="n">graph</span>
<span class="k">return</span> <span class="n">g</span></div></div>

Expand Down Expand Up @@ -519,7 +520,8 @@ <h1>Source code for buildingmotif.ingresses.template</h1><div class="highlight">
<span class="n">template</span> <span class="o">=</span> <span class="n">template</span><span class="o">.</span><span class="n">inline_dependencies</span><span class="p">()</span>
<span class="n">bindings</span> <span class="o">=</span> <span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">mapper</span><span class="p">(</span><span class="n">k</span><span class="p">):</span> <span class="n">_get_term</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span> <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">rec</span><span class="o">.</span><span class="n">fields</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
<span class="n">graph</span> <span class="o">=</span> <span class="n">template</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="n">bindings</span><span class="p">)</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">graph</span><span class="p">,</span> <span class="n">Graph</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">graph</span><span class="p">,</span> <span class="n">Graph</span><span class="p">):</span>
<span class="n">_</span><span class="p">,</span> <span class="n">graph</span> <span class="o">=</span> <span class="n">graph</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">ns</span><span class="p">)</span>
<span class="n">g</span> <span class="o">+=</span> <span class="n">graph</span>
<span class="k">return</span> <span class="n">g</span></div></div>

Expand Down
Loading

0 comments on commit 74722b7

Please sign in to comment.