Skip to content

Commit

Permalink
deploy: b01ae75
Browse files Browse the repository at this point in the history
  • Loading branch information
m0wer committed Jan 6, 2025
1 parent 95f9559 commit 3fc4123
Show file tree
Hide file tree
Showing 57 changed files with 700 additions and 700 deletions.
4 changes: 2 additions & 2 deletions computer_science/gnu_linux/mkdocs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@
<span class=w> </span><span class="p p-Indicator">-</span><span class=w> </span><span class=nt>gen-files</span><span class=p>:</span>
<span class=w> </span><span class=nt>scripts</span><span class=p>:</span>
<span class=w> </span><span class="p p-Indicator">-</span><span class=w> </span><span class="l l-Scalar l-Scalar-Plain">generate_reference.py</span>
</code></pre></div> <div class=highlight><pre><span></span><code><span class=kn>from</span> <span class=nn>pathlib</span> <span class=kn>import</span> <span class=n>Path</span>
<span class=kn>import</span> <span class=nn>mkdocs_gen_files</span>
</code></pre></div> <div class=highlight><pre><span></span><code><span class=kn>from</span><span class=w> </span><span class=nn>pathlib</span><span class=w> </span><span class=kn>import</span> <span class=n>Path</span>
<span class=kn>import</span><span class=w> </span><span class=nn>mkdocs_gen_files</span>

<span class=n>src_root</span> <span class=o>=</span> <span class=n>Path</span><span class=p>(</span><span class=s2>&quot;../my_module&quot;</span><span class=p>)</span>
<span class=k>for</span> <span class=n>path</span> <span class=ow>in</span> <span class=n>src_root</span><span class=o>.</span><span class=n>glob</span><span class=p>(</span><span class=s2>&quot;**/*.py&quot;</span><span class=p>):</span>
Expand Down
8 changes: 4 additions & 4 deletions computer_science/programming/python/asyncio/index.html

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions computer_science/programming/python/asyncpg/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion computer_science/programming/python/docstrings/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions computer_science/programming/python/json/index.html

Large diffs are not rendered by default.

18 changes: 9 additions & 9 deletions computer_science/programming/python/jupyter/index.html

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions computer_science/programming/python/networkx/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions computer_science/programming/python/pandas/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions computer_science/programming/python/plotly/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion computer_science/programming/python/psycopg2/index.html

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions computer_science/programming/python/pydantic/index.html

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions computer_science/programming/python/pytest/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,21 @@
</code></pre></div> <h3 id=coverage>Coverage<a class=headerlink href=#coverage title="Permanent link">⚑</a></h3> <p>To see which parts of your code are executed when running the tests, you can use <a href=https://coverage.readthedocs.io/ >Coverage.py</a>.</p> <p>You can install it with <code>pip install coverage</code>.</p> <p>The basic usage is:</p> <div class=highlight><pre><span></span><code>coverage<span class=w> </span>run<span class=w> </span>--source<span class=o>={{</span>path<span class=o>}}</span><span class=w> </span>-m<span class=w> </span>pytest
coverage<span class=w> </span>report<span class=w> </span>-m<span class=w> </span><span class=c1># view report summary in the command-line</span>
coverage<span class=w> </span>html<span class=w> </span><span class=c1># generate detailed report in htmlcov/index.html</span>
</code></pre></div> <p>100% coverage doesn't mean that all the code is tested, it means that all the code was executed at least once while running the tests. 100% coverage is necessary but not sufficient for ensuring that all code is tested.</p> <h2 id=reference>Reference<a class=headerlink href=#reference title="Permanent link">⚑</a></h2> <h3 id=parametrization>Parametrization<a class=headerlink href=#parametrization title="Permanent link">⚑</a></h3> <p>To run the same test several times with different variables use <code>@pytest.mark.parametrize()</code>.</p> <div class=highlight><pre><span></span><code><span class=kn>import</span> <span class=nn>pytest</span>
</code></pre></div> <p>100% coverage doesn't mean that all the code is tested, it means that all the code was executed at least once while running the tests. 100% coverage is necessary but not sufficient for ensuring that all code is tested.</p> <h2 id=reference>Reference<a class=headerlink href=#reference title="Permanent link">⚑</a></h2> <h3 id=parametrization>Parametrization<a class=headerlink href=#parametrization title="Permanent link">⚑</a></h3> <p>To run the same test several times with different variables use <code>@pytest.mark.parametrize()</code>.</p> <div class=highlight><pre><span></span><code><span class=kn>import</span><span class=w> </span><span class=nn>pytest</span>


<span class=nd>@pytest</span><span class=o>.</span><span class=n>mark</span><span class=o>.</span><span class=n>parametrize</span><span class=p>(</span><span class=s2>&quot;test_input,expected&quot;</span><span class=p>,</span> <span class=p>[(</span><span class=s2>&quot;3+5&quot;</span><span class=p>,</span> <span class=mi>8</span><span class=p>),</span> <span class=p>(</span><span class=s2>&quot;2+4&quot;</span><span class=p>,</span> <span class=mi>6</span><span class=p>),</span> <span class=p>(</span><span class=s2>&quot;6*9&quot;</span><span class=p>,</span> <span class=mi>42</span><span class=p>)])</span>
<span class=k>def</span> <span class=nf>test_eval</span><span class=p>(</span><span class=n>test_input</span><span class=p>,</span> <span class=n>expected</span><span class=p>):</span>
<span class=k>def</span><span class=w> </span><span class=nf>test_eval</span><span class=p>(</span><span class=n>test_input</span><span class=p>,</span> <span class=n>expected</span><span class=p>):</span>
<span class=k>assert</span> <span class=nb>eval</span><span class=p>(</span><span class=n>test_input</span><span class=p>)</span> <span class=o>==</span> <span class=n>expected</span>
</code></pre></div> <h3 id=mocking>Mocking<a class=headerlink href=#mocking title="Permanent link">⚑</a></h3> <h4 id=monkeypatch>monkeypatch<a class=headerlink href=#monkeypatch title="Permanent link">⚑</a></h4> <p>Sometimes tests need to invoke functionality which depends on global settings or which invokes code which cannot be easily tested such as network access. The <a href=https://docs.pytest.org/en/latest/how-to/monkeypatch.html>monkeypatch</a> fixture helps you to safely set/delete an attribute, dictionary item or environment variable, or to modify sys.path for importing.</p> <p>You need to add <code>monkeypatch</code> as an argument to the test functions.</p> <h5 id=environment-variables>Environment variables<a class=headerlink href=#environment-variables title="Permanent link">⚑</a></h5> <div class=highlight><pre><span></span><code><span class=n>monkeypatch</span><span class=o>.</span><span class=n>setenv</span><span class=p>(</span><span class=n>name</span><span class=p>,</span> <span class=n>value</span><span class=p>,</span> <span class=n>prepend</span><span class=o>=</span><span class=kc>None</span><span class=p>)</span>
</code></pre></div> <h3 id=fixtures>Fixtures<a class=headerlink href=#fixtures title="Permanent link">⚑</a></h3> <p>To run a custom function for every test in a class do:</p> <div class=highlight><pre><span></span><code><span class=k>class</span> <span class=nc>TestClass</span><span class=p>:</span>
</code></pre></div> <h3 id=fixtures>Fixtures<a class=headerlink href=#fixtures title="Permanent link">⚑</a></h3> <p>To run a custom function for every test in a class do:</p> <div class=highlight><pre><span></span><code><span class=k>class</span><span class=w> </span><span class=nc>TestClass</span><span class=p>:</span>
<span class=nd>@pytest</span><span class=o>.</span><span class=n>fixture</span><span class=p>(</span><span class=n>autouse</span><span class=o>=</span><span class=kc>True</span><span class=p>)</span>
<span class=k>def</span> <span class=nf>setup</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<span class=k>def</span><span class=w> </span><span class=nf>setup</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<span class=bp>self</span><span class=o>.</span><span class=n>variable</span> <span class=o>=</span> <span class=mi>42</span>

<span class=k>def</span> <span class=nf>test_something</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<span class=k>def</span><span class=w> </span><span class=nf>test_something</span><span class=p>(</span><span class=bp>self</span><span class=p>):</span>
<span class=o>...</span>
</code></pre></div> <h4 id=capfd>capfd<a class=headerlink href=#capfd title="Permanent link">⚑</a></h4> <p>Capture stdout/stderr output.</p> <p>Example:</p> <div class=highlight><pre><span></span><code><span class=k>def</span> <span class=nf>test_foo</span><span class=p>(</span><span class=n>capfd</span><span class=p>):</span>
</code></pre></div> <h4 id=capfd>capfd<a class=headerlink href=#capfd title="Permanent link">⚑</a></h4> <p>Capture stdout/stderr output.</p> <p>Example:</p> <div class=highlight><pre><span></span><code><span class=k>def</span><span class=w> </span><span class=nf>test_foo</span><span class=p>(</span><span class=n>capfd</span><span class=p>):</span>
<span class=n>foo</span><span class=p>()</span> <span class=c1># Writes &quot;Hello World!&quot; to stdout</span>
<span class=n>out</span><span class=p>,</span> <span class=n>err</span> <span class=o>=</span> <span class=n>capfd</span><span class=o>.</span><span class=n>readouterr</span><span class=p>()</span>
<span class=k>assert</span> <span class=n>out</span> <span class=o>==</span> <span class=s2>&quot;Hello World!&quot;</span>
Expand Down
2 changes: 1 addition & 1 deletion computer_science/programming/python/re/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion computer_science/programming/python/requests/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions computer_science/programming/python/snippets/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@
<span class=n>__email__</span> <span class=o>=</span> <span class=s2>&quot;email&quot;</span>
<span class=n>__status__</span> <span class=o>=</span> <span class=s2>&quot;Alpha&quot;</span>
</code></pre></div> <h2 id=basic-operations>Basic operations<a class=headerlink href=#basic-operations title="Permanent link">⚑</a></h2> <h3 id=find-first-element-in-dictionary-that-satisfies-a-condition>Find first element in dictionary that satisfies a condition<a class=headerlink href=#find-first-element-in-dictionary-that-satisfies-a-condition title="Permanent link">⚑</a></h3> <div class=highlight><pre><span></span><code><span class=nb>next</span><span class=p>(</span><span class=n>item</span> <span class=k>for</span> <span class=n>item</span> <span class=ow>in</span> <span class=p>{</span><span class=nb>dict</span><span class=p>}</span> <span class=k>if</span> <span class=p>{{</span> <span class=n>condition</span> <span class=p>}})</span>
</code></pre></div> <h2 id=io>I/O<a class=headerlink href=#io title="Permanent link">⚑</a></h2> <h3 id=create-a-directory-if-it-doesnt-exist>Create a directory if it doesn't exist<a class=headerlink href=#create-a-directory-if-it-doesnt-exist title="Permanent link">⚑</a></h3> <div class=highlight><pre><span></span><code><span class=kn>import</span> <span class=nn>os</span>
</code></pre></div> <h2 id=io>I/O<a class=headerlink href=#io title="Permanent link">⚑</a></h2> <h3 id=create-a-directory-if-it-doesnt-exist>Create a directory if it doesn't exist<a class=headerlink href=#create-a-directory-if-it-doesnt-exist title="Permanent link">⚑</a></h3> <div class=highlight><pre><span></span><code><span class=kn>import</span><span class=w> </span><span class=nn>os</span>

<span class=n>dir_path</span> <span class=o>=</span> <span class=s1>&#39;</span><span class=si>{dir_path}</span><span class=s1>&#39;</span>
<span class=k>if</span> <span class=ow>not</span> <span class=n>os</span><span class=o>.</span><span class=n>path</span><span class=o>.</span><span class=n>exists</span><span class=p>(</span><span class=n>dir_path</span><span class=p>):</span>
<span class=n>os</span><span class=o>.</span><span class=n>makedirs</span><span class=p>(</span><span class=n>dir_path</span><span class=p>)</span>
</code></pre></div> <h2 id=network>Network<a class=headerlink href=#network title="Permanent link">⚑</a></h2> <h3 id=download-a-file>Download a file<a class=headerlink href=#download-a-file title="Permanent link">⚑</a></h3> <p>To download a file from a URL do:</p> <div class=highlight><pre><span></span><code><span class=kn>import</span> <span class=nn>urllib.request</span>
</code></pre></div> <h2 id=network>Network<a class=headerlink href=#network title="Permanent link">⚑</a></h2> <h3 id=download-a-file>Download a file<a class=headerlink href=#download-a-file title="Permanent link">⚑</a></h3> <p>To download a file from a URL do:</p> <div class=highlight><pre><span></span><code><span class=kn>import</span><span class=w> </span><span class=nn>urllib.request</span>
<span class=n>urllib</span><span class=o>.</span><span class=n>request</span><span class=o>.</span><span class=n>urlretrieve</span><span class=p>(</span><span class=s1>&#39;</span><span class=si>{url}</span><span class=s1>&#39;</span><span class=p>,</span> <span class=s1>&#39;</span><span class=si>{destination_path}</span><span class=s1>&#39;</span><span class=p>)</span>
</code></pre></div> <h2 id=useful-data>Useful data<a class=headerlink href=#useful-data title="Permanent link">⚑</a></h2> <h3 id=weekdays>Weekdays<a class=headerlink href=#weekdays title="Permanent link">⚑</a></h3> <div class=highlight><pre><span></span><code><span class=n>Weekdays</span> <span class=o>=</span> <span class=n>IntEnum</span><span class=p>(</span>
<span class=s2>&quot;Weekdays&quot;</span><span class=p>,</span>
Expand Down
2 changes: 1 addition & 1 deletion computer_science/programming/python/statsmodels/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion computer_science/programming/python/style/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions computer_science/programming/python/tenacity/index.html

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions computer_science/programming/python/typing/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion computer_science/programming/python/unittest/index.html

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions daily.xml
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,12 @@

<item><title>22nd August 2022</title>
<author>m0wer</author>
<description>&lt;article class=&#34;md-content__inner md-typeset&#34;&gt; &lt;h2 id=&#34;computer-science&#34;&gt;Computer Science&lt;/h2&gt; &lt;h3 id=&#34;gnulinux&#34;&gt;GNULinux&lt;/h3&gt; &lt;h4 id=&#34;debian&#34;&gt;&lt;a href=&#34;https://m0wer.github.io/memento/computer_science/gnu_linux/debian/&#34;&gt;Debian&lt;/a&gt;&lt;/h4&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;New: Find what package a file belongs to.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;h3 id=&#34;programming&#34;&gt;Programming&lt;/h3&gt; &lt;h4 id=&#34;debugging&#34;&gt;&lt;a href=&#34;https://m0wer.github.io/memento/python_debugging/&#34;&gt;Debugging&lt;/a&gt;&lt;/h4&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;New: Debugging with inspect.&lt;/p&gt; &lt;p&gt;See a function definition at runtime&lt;/p&gt; &lt;div class=&#34;highlight&#34;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;somewhere&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;somefunction&lt;/span&gt;
&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;inspect&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;getsource&lt;/span&gt;
<description>&lt;article class=&#34;md-content__inner md-typeset&#34;&gt; &lt;h2 id=&#34;computer-science&#34;&gt;Computer Science&lt;/h2&gt; &lt;h3 id=&#34;gnulinux&#34;&gt;GNULinux&lt;/h3&gt; &lt;h4 id=&#34;debian&#34;&gt;&lt;a href=&#34;https://m0wer.github.io/memento/computer_science/gnu_linux/debian/&#34;&gt;Debian&lt;/a&gt;&lt;/h4&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;New: Find what package a file belongs to.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;h3 id=&#34;programming&#34;&gt;Programming&lt;/h3&gt; &lt;h4 id=&#34;debugging&#34;&gt;&lt;a href=&#34;https://m0wer.github.io/memento/python_debugging/&#34;&gt;Debugging&lt;/a&gt;&lt;/h4&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;New: Debugging with inspect.&lt;/p&gt; &lt;p&gt;See a function definition at runtime&lt;/p&gt; &lt;div class=&#34;highlight&#34;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;somewhere&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;somefunction&lt;/span&gt;
&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;inspect&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;getsource&lt;/span&gt;

&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;getsource&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;somefunction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;Get function signature at runtime&lt;/p&gt; &lt;div class=&#34;highlight&#34;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;somewhere&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;somefunction&lt;/span&gt;
&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;inspect&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;signature&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;Get function signature at runtime&lt;/p&gt; &lt;div class=&#34;highlight&#34;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;somewhere&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;somefunction&lt;/span&gt;
&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nn&#34;&gt;inspect&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;signature&lt;/span&gt;

&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;signature&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;somefunction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/li&gt; &lt;/ul&gt; &lt;aside class=&#34;md-source-file&#34;&gt; &lt;span class=&#34;md-source-file__fact&#34;&gt; &lt;span class=&#34;md-icon&#34; title=&#34;Last update&#34;&gt; &lt;svg viewbox=&#34;0 0 24 24&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;path d=&#34;M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z&#34;&gt;&lt;/path&gt;&lt;/svg&gt; &lt;/span&gt; &lt;span class=&#34;git-revision-date-localized-plugin git-revision-date-localized-plugin-timeago&#34;&gt;&lt;span class=&#34;timeago&#34; datetime=&#34;2022-08-23T06:03:38+00:00&#34; locale=&#34;en&#34;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_date&#34;&gt;2022-08-23&lt;/span&gt; &lt;/span&gt; &lt;/aside&gt; &lt;/article&gt;</description>
Expand Down
56 changes: 28 additions & 28 deletions fastapi/index.html

Large diffs are not rendered by default.

Loading

0 comments on commit 3fc4123

Please sign in to comment.