Skip to content

Commit

Permalink
param() major update with doc
Browse files Browse the repository at this point in the history
  • Loading branch information
ovitrac committed Feb 7, 2025
1 parent e7e57f0 commit 2cf9eb9
Show file tree
Hide file tree
Showing 34 changed files with 6,871 additions and 1,840 deletions.
34 changes: 33 additions & 1 deletion debug_mstruct.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,4 +82,36 @@
v.Y0 = "@{y0}.flatten()"
v.Z0 = "@{z0}.flatten()"
s=v()
v
v

# %% dict
d = param()
d.a = {'a': 'a', 'b': 2}
d.b = "{'a': 'a', 'b': 2}"
d.c = "${b}"
d.d = "${a[a]}"
d.e = "${c[b]}+1"
d.f = "${{'eval': ${c[b]*10}}}"
s=d()
d

# %% nested
i = param()
i.a = "[1,2,3]"
i.b = "1"
i.c = "${a[${b+1}]}"
i.d = "${a[${b}+1]}"
i.f = {"A":1, "B":2, "C":3}
i.g = "C"
i.h ="${f['${g}']*100}"
s = i()
i

# %% test
p = param()
p.start = 1
p.step = 10
p.stop = 100
p.t = "1:10:100"
p.list = "${start}:${step}:${stop}"
p()
12 changes: 6 additions & 6 deletions docs/class_examples.html
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@ <h2>Welcome to Usage Class Examples</h2>
<p>Select a module in the left menu to view usage examples. These examples are not for production and are automatically extracted from the main section of each module.</p>
<p>Back to the <a href='index.html'>Python'Pizza3 documentation</a>.</p>
<p>When no module is selected, you see this welcome page. They are used to test classes with typical codes. The main section often serves as a testing script, example usage block, or self-contained test block. It's a way to demonstrate how the module's functionality works or to run simple unit tests and examples inline.</p>
<p>Generated on: 2025-01-31 15:12:38</p>
<p>Generated on: 2025-02-07 15:50:02</p>

</div>

Expand Down Expand Up @@ -1308,11 +1308,11 @@ <h2>Welcome to Usage Class Examples</h2>

<button type="button" class="collapsible">Show Code Example 3</button>
<div class="content">
<pre class="code"><span class="n">definitions</span> <span class="o">=</span> <span class="n">param</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">b</span><span class="o">=</span><span class="s2">&quot;$</span><span class="si">{a}</span><span class="s2">*10+$</span><span class="si">{a}</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="s2">&quot;\$</span><span class="si">{a}</span><span class="s2">+10&quot;</span><span class="p">,</span><span class="n">d</span><span class="o">=</span><span class="s1">&#39;\$</span><span class="si">{myparam}</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="n">text</span> <span class="o">=</span> <span class="n">definitions</span><span class="o">.</span><span class="n">formateval</span><span class="p">(</span><span class="s2">&quot;this my text $</span><span class="si">{a}</span><span class="s2">, $</span><span class="si">{b}</span><span class="s2">, \$</span><span class="si">{myvar}</span><span class="s2">=$</span><span class="si">{c}</span><span class="s2">+$</span><span class="si">{d}</span><span class="s2">&quot;</span><span class="p">)</span>
<pre class="code"><span class="n">definitions</span> <span class="o">=</span> <span class="n">param</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">b</span><span class="o">=</span><span class="s2">&quot;$</span><span class="si">{a}</span><span class="s2">*10+$</span><span class="si">{a}</span><span class="s2">&quot;</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="sa">r</span><span class="s2">&quot;\$</span><span class="si">{a}</span><span class="s2">+10&quot;</span><span class="p">,</span><span class="n">d</span><span class="o">=</span><span class="sa">r</span><span class="s1">&#39;\$</span><span class="si">{myparam}</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="n">text</span> <span class="o">=</span> <span class="n">definitions</span><span class="o">.</span><span class="n">formateval</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;this my text $</span><span class="si">{a}</span><span class="s2">, $</span><span class="si">{b}</span><span class="s2">, \$</span><span class="si">{myvar}</span><span class="s2">=$</span><span class="si">{c}</span><span class="s2">+$</span><span class="si">{d}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
<span class="n">definitions</span> <span class="o">=</span> <span class="n">param</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">b</span><span class="o">=</span><span class="s2">&quot;$a*10+$a&quot;</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="s2">&quot;\$a+10&quot;</span><span class="p">,</span><span class="n">d</span><span class="o">=</span><span class="s1">&#39;\$myparam&#39;</span><span class="p">)</span>
<span class="n">text</span> <span class="o">=</span> <span class="n">definitions</span><span class="o">.</span><span class="n">formateval</span><span class="p">(</span><span class="s2">&quot;this my text $a, $b, \$myvar=$c+$d&quot;</span><span class="p">,</span><span class="n">protection</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">definitions</span> <span class="o">=</span> <span class="n">param</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">b</span><span class="o">=</span><span class="s2">&quot;$a*10+$a&quot;</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="sa">r</span><span class="s2">&quot;\$a+10&quot;</span><span class="p">,</span><span class="n">d</span><span class="o">=</span><span class="sa">r</span><span class="s1">&#39;\$myparam&#39;</span><span class="p">)</span>
<span class="n">text</span> <span class="o">=</span> <span class="n">definitions</span><span class="o">.</span><span class="n">formateval</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;this my text $a, $b, \$myvar=$c+$d&quot;</span><span class="p">,</span><span class="n">protection</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
</pre>
</div>
Expand Down Expand Up @@ -1455,7 +1455,7 @@ <h2>Welcome to Usage Class Examples</h2>
<span class="n">p</span><span class="o">.</span><span class="n">h</span> <span class="o">=</span> <span class="s2">&quot;$</span><span class="si">{b[0,1]}</span><span class="s2"> + $</span><span class="si">{a[0]}</span><span class="s2">&quot;</span>
<span class="n">p</span><span class="o">.</span><span class="n">i</span> <span class="o">=</span> <span class="s2">&quot;$</span><span class="si">{f[0,1]}</span><span class="s2">&quot;</span>
<span class="n">p</span><span class="o">.</span><span class="n">j</span> <span class="o">=</span> <span class="s2">&quot;$</span><span class="si">{f[:,1]}</span><span class="s2">&quot;</span>
<span class="n">p</span><span class="o">.</span><span class="n">k</span> <span class="o">=</span> <span class="s2">&quot;$</span><span class="si">{j}</span><span class="s2">+1&quot;</span>
<span class="n">p</span><span class="o">.</span><span class="n">k</span> <span class="o">=</span> <span class="s2">&quot;@</span><span class="si">{j}</span><span class="s2">+1&quot;</span> <span class="c1"># note that &quot;@{j}+1&quot; and &quot;${j}+1&quot; do not have the same meaning</span>
<span class="n">p</span><span class="o">.</span><span class="n">l</span> <span class="o">=</span> <span class="s2">&quot;$</span><span class="si">{b.T}</span><span class="s2">&quot;</span>
<span class="n">p</span><span class="o">.</span><span class="n">m</span> <span class="o">=</span> <span class="s2">&quot;${b.T @ b}&quot;</span> <span class="c1"># evaluate fully the matrix operation</span>
<span class="n">p</span><span class="o">.</span><span class="n">n</span> <span class="o">=</span> <span class="s2">&quot;$</span><span class="si">{b.T}</span><span class="s2"> @ $</span><span class="si">{b}</span><span class="s2">&quot;</span> <span class="c1"># concatenate two string-results separated by @</span>
Expand Down
2 changes: 1 addition & 1 deletion docs/datatemplate3.html
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
<div style="border: 2px solid red; padding: 10px; margin-bottom: 20px;">
<h3 style="color: red;">Notice</h3>
<p>This is a raw view of the Python source code due to an error in generating the documentation.</p>
<p><strong>Date of Conversion:</strong> 2025-01-31 15:12:40</p>
<p><strong>Date of Conversion:</strong> 2025-02-07 15:50:05</p>
</div>

<h2></h2>
Expand Down
77 changes: 74 additions & 3 deletions docs/debug_mstruct.html
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ <h1 class="title">Module <code>debug_mstruct</code></h1>
p.c = &#34;${a[1]}+10&#34; # Retrieves `a[1]` = 0.2 and add 10 `0.2 + 10`
p.e = &#34;${a}[1]+10&#34; # This notation works also (equivalent to c for the part `${a}[1]`) `0.2 + 10`
p.f = &#34;${b}[0,1] + ${a}[0]&#34;
p.g = &#34;{&#39;a&#39;: &#39;a&#39;, &#39;b&#39;: 2}&#34;
p.h = &#34;${g}&#34;
p.i = &#34;${g[a]}&#34;

s = p() # equivalent to s = p.eval()
prettyprint = lambda var,value: print(f&#34;{var} = {value} (type: {type(value).__name__})&#34;)
Expand All @@ -63,17 +66,85 @@ <h1 class="title">Module <code>debug_mstruct</code></h1>
prettyprint(&#34;d&#34;,s.d)
prettyprint(&#34;f&#34;,s.f)

# generator
p.generator(printout=True)

# eval
p.formateval(&#34;this is d=${d} with b=${b}&#34;)
p.formateval(&#34;${1+2}*${a[1]}&#34;)
# %% others
p = param()
p.a = [0,1,2] # this list is numeric and is already in Python
p.b = &#39;[1,2,&#34;test&#34;,&#34;${a[1]}&#34;]&#39; # this list combines param expressions
p.c = &#39;![1,2,&#34;test&#34;,&#34;${a[1]}&#34;]&#39; # the `!` to force recursive evaluation of expressions in lists
p.d = &#34;${b[3]}*10&#34; # the expressions can be combined together
p.e = &#34;${c[3]}*10&#34; # the expressions can be combined together
p.f = [1,2,&#34;test&#34;,&#34;${a[1]}&#34;]
s = p.eval()
p</code></pre>
p.f = [&#34;${a[1]+a[2]}*3&#34;, 1,2,&#34;test&#34;,&#34;${a[1]}&#34;, &#34;${a[1]+a[2]}&#34;, &#34;${1+2}&#34;, &#34;b&#34;]
p.g = &#34;${a[1]+a[2]}&#34;
p.h = &#34;this is a&#34;
p.i = &#34;${a[1]+100}*${b[1]}&#34;
p.j = &#34;the result is ${a[1]+100}*${b[1]}&#34;
p.k = &#34;the result is ${(a[1]+100)*b[1]}&#34;
p.units = &#34;$si&#34;
p.l = [&#34;units&#34;,&#34;$lj&#34;]
p.m = [&#34;units&#34;,&#34;${units}&#34;]
p.n = &#34;the ${l[0]} are ${units} as defined with \\${units}&#34;
p.o = 10
p.p = 100
p.q = &#34;[${o},${p}]&#34;
p.r = &#34;the sum of q is ${sum(q)}&#34;
p.s = &#34;${max(q)}&#34;
s = p()
p

# %% last bug
v = param()
v.l = [1e-3, 2e-3, 3e-3] # l is defined as a list
v.a = &#34;$[1 2 3]&#34; # a is defined with Matlab notations
v.b = &#34;$[1:3]&#34; # b is defined with Matlab notations
v.c = &#34;$[0.1:0.1:0.9]&#34; # c is defined with Matlab notations
v.test = &#34;@{l}&#34;
v.scale = &#34;@{l}*2*@{a}&#34; # l is rescaled
v.x0 = &#34;$[[[-0.5, -0.5],[-0.5, -0.5]],[[ 0.5, 0.5],[ 0.5, 0.5]]]*${scale[0,0]}*${a[0,0]}&#34;
v.y0 = &#34;$[[[-0.5, -0.5],[0.5, 0.5]],[[ -0.5, -0.5],[ 0.5, 0.5]]]*${scale[0,1]}*${a[0,1]}&#34;
v.z0 = &#34;$[[-0.5 0.5 ;-0.5 0.5],[ -0.5, 0.5; -0.5, 0.5]]*${l[2]}*${a[0,2]}&#34;
v.X0 = &#34;@{x0}.flatten()&#34;
v.Y0 = &#34;@{y0}.flatten()&#34;
v.Z0 = &#34;@{z0}.flatten()&#34;
s=v()
v

# %% dict
d = param()
d.a = {&#39;a&#39;: &#39;a&#39;, &#39;b&#39;: 2}
d.b = &#34;{&#39;a&#39;: &#39;a&#39;, &#39;b&#39;: 2}&#34;
d.c = &#34;${b}&#34;
d.d = &#34;${a[a]}&#34;
d.e = &#34;${c[b]}+1&#34;
d.f = &#34;${{&#39;eval&#39;: ${c[b]*10}}}&#34;
s=d()
d

# %% nested
i = param()
i.a = &#34;[1,2,3]&#34;
i.b = &#34;1&#34;
i.c = &#34;${a[${b+1}]}&#34;
i.d = &#34;${a[${b}+1]}&#34;
i.f = {&#34;A&#34;:1, &#34;B&#34;:2, &#34;C&#34;:3}
i.g = &#34;C&#34;
i.h =&#34;${f[&#39;${g}&#39;]*100}&#34;
s = i()
i

# %% test
p = param()
p.start = 1
p.step = 10
p.stop = 100
p.t = &#34;1:10:100&#34;
p.list = &#34;${start}:${step}:${stop}&#34;
p()</code></pre>
</details>
</section>
<section>
Expand Down
2 changes: 1 addition & 1 deletion docs/dscript_math_example.html
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
<div style="border: 2px solid red; padding: 10px; margin-bottom: 20px;">
<h3 style="color: red;">Notice</h3>
<p>This is a raw view of the Python source code due to an error in generating the documentation.</p>
<p><strong>Date of Conversion:</strong> 2025-01-31 15:12:42</p>
<p><strong>Date of Conversion:</strong> 2025-02-07 15:50:06</p>
</div>

<h2></h2>
Expand Down
2 changes: 1 addition & 1 deletion docs/dump_case4.html
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
<div style="border: 2px solid red; padding: 10px; margin-bottom: 20px;">
<h3 style="color: red;">Notice</h3>
<p>This is a raw view of the Python source code due to an error in generating the documentation.</p>
<p><strong>Date of Conversion:</strong> 2025-01-31 15:12:42</p>
<p><strong>Date of Conversion:</strong> 2025-02-07 15:50:07</p>
</div>

<h2></h2>
Expand Down
2 changes: 1 addition & 1 deletion docs/dumpreduce.html
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
<div style="border: 2px solid red; padding: 10px; margin-bottom: 20px;">
<h3 style="color: red;">Notice</h3>
<p>This is a raw view of the Python source code due to an error in generating the documentation.</p>
<p><strong>Date of Conversion:</strong> 2025-01-31 15:12:43</p>
<p><strong>Date of Conversion:</strong> 2025-02-07 15:50:07</p>
</div>

<h2></h2>
Expand Down
2 changes: 1 addition & 1 deletion docs/dumptemplate.html
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
<div style="border: 2px solid red; padding: 10px; margin-bottom: 20px;">
<h3 style="color: red;">Notice</h3>
<p>This is a raw view of the Python source code due to an error in generating the documentation.</p>
<p><strong>Date of Conversion:</strong> 2025-01-31 15:12:44</p>
<p><strong>Date of Conversion:</strong> 2025-02-07 15:50:08</p>
</div>

<h2></h2>
Expand Down
2 changes: 1 addition & 1 deletion docs/dumptemplate3.html
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
<div style="border: 2px solid red; padding: 10px; margin-bottom: 20px;">
<h3 style="color: red;">Notice</h3>
<p>This is a raw view of the Python source code due to an error in generating the documentation.</p>
<p><strong>Date of Conversion:</strong> 2025-01-31 15:12:44</p>
<p><strong>Date of Conversion:</strong> 2025-02-07 15:50:08</p>
</div>

<h2></h2>
Expand Down
2 changes: 1 addition & 1 deletion docs/geometry.html
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
<div style="border: 2px solid red; padding: 10px; margin-bottom: 20px;">
<h3 style="color: red;">Notice</h3>
<p>This is a raw view of the Python source code due to an error in generating the documentation.</p>
<p><strong>Date of Conversion:</strong> 2025-01-31 15:12:52</p>
<p><strong>Date of Conversion:</strong> 2025-02-07 15:50:17</p>
</div>

<h2></h2>
Expand Down
Loading

0 comments on commit 2cf9eb9

Please sign in to comment.