Skip to content

Commit

Permalink
update doc [skip doc, skip tests]
Browse files Browse the repository at this point in the history
  • Loading branch information
actions-user committed Feb 7, 2021
1 parent 4771215 commit fccf7bd
Show file tree
Hide file tree
Showing 7 changed files with 60 additions and 32 deletions.
33 changes: 11 additions & 22 deletions docs/build/html/_modules/homura/liblog.html
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ <h1>Source code for homura.liblog</h1><div class="highlight"><pre>
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">import</span> <span class="nn">threading</span>
<span class="kn">import</span> <span class="nn">warnings</span>
<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">TextIO</span>

<span class="kn">import</span> <span class="nn">tqdm</span> <span class="k">as</span> <span class="nn">_tqdm</span>
Expand Down Expand Up @@ -291,22 +292,7 @@ <h1>Source code for homura.liblog</h1><div class="highlight"><pre>
<span class="n">_get_root_logger</span><span class="p">()</span><span class="o">.</span><span class="n">addHandler</span><span class="p">(</span><span class="n">fh</span><span class="p">)</span></div>


<span class="c1"># internal</span>

<span class="k">def</span> <span class="nf">_get_file_descripter</span><span class="p">():</span>
<span class="c1"># check if stderr and stdout are two different ptys.</span>
<span class="c1"># this detects tampering by wandb which messes up tqdm logging.</span>
<span class="c1"># fix it by writing to stderr instead of stdout.</span>
<span class="n">file_</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">ttyname</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">fileno</span><span class="p">())</span> <span class="o">!=</span> <span class="n">os</span><span class="o">.</span><span class="n">ttyname</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">fileno</span><span class="p">()):</span>
<span class="n">file_</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span>
<span class="k">except</span> <span class="ne">OSError</span><span class="p">:</span>
<span class="c1"># stdout or stderr is not a pty. default to stdout.</span>
<span class="k">pass</span>
<span class="k">return</span> <span class="n">file_</span>


<span class="c1"># internal APIs</span>
<span class="k">def</span> <span class="nf">_set_tqdm_handler</span><span class="p">(</span><span class="n">level</span><span class="p">:</span> <span class="nb">str</span> <span class="ow">or</span> <span class="nb">int</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">,</span>
<span class="n">formatter</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">logging</span><span class="o">.</span><span class="n">Formatter</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot; An alternative handler to avoid disturbing tqdm</span>
Expand All @@ -315,13 +301,12 @@ <h1>Source code for homura.liblog</h1><div class="highlight"><pre>
<span class="kn">import</span> <span class="nn">tqdm</span>

<span class="k">class</span> <span class="nc">TQDMHandler</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">StreamHandler</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;A logging handler compatible with tqdm progress bars from</span>
<span class="sd"> https://github.com/pesser/edflow/blob/317cb1b61bf810a68004788d08418a5352653264/edflow/custom_logging.py#L322</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">logging</span><span class="o">.</span><span class="n">StreamHandler</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>

<span class="k">def</span> <span class="nf">emit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">record</span><span class="p">):</span>
<span class="n">msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">record</span><span class="p">)</span>
<span class="n">tqdm</span><span class="o">.</span><span class="n">tqdm</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">_get_file_descripter</span><span class="p">())</span>
<span class="n">tqdm</span><span class="o">.</span><span class="n">tqdm</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>

<span class="n">_configure_root_logger</span><span class="p">()</span>
<span class="n">th</span> <span class="o">=</span> <span class="n">TQDMHandler</span><span class="p">()</span>
Expand All @@ -344,13 +329,17 @@ <h1>Source code for homura.liblog</h1><div class="highlight"><pre>
<span class="c1"># Some libraries override sys.stdout, which causes OSError: [Errno 9] Bad file descriptor.</span>
<span class="c1"># To avoid this, this if statement is necessary</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span> <span class="n">io</span><span class="o">.</span><span class="n">TextIOWrapper</span><span class="p">):</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="n">DummyTqdmFile</span><span class="p">,</span> <span class="n">_original_stds</span><span class="p">)</span></div>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="n">DummyTqdmFile</span><span class="p">,</span> <span class="n">_original_stds</span><span class="p">)</span>
<span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span> <span class="n">DummyTqdmFile</span><span class="p">):</span>
<span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;sys.stdout is unexpected type: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="sa">f</span><span class="s2">&quot;If you use wandb, set WANDB_CONSOLE=off to avoid tqdm-related problems.&quot;</span><span class="p">,</span>
<span class="ne">UserWarning</span><span class="p">)</span></div>


<div class="viewcode-block" id="tqdm"><a class="viewcode-back" href="../../homura.html#homura.liblog.tqdm">[docs]</a><span class="k">def</span> <span class="nf">tqdm</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="c1"># https://github.com/tqdm/tqdm/blob/master/examples/redirect_print.py</span>
<span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;file&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;file&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">_get_file_descripter</span><span class="p">()</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;file&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">_original_stds</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="c1"># tqdm seems to prioritize dynamic_ncols over ncols</span>
<span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;ncols&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;dynamic_ncols&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;dynamic_ncols&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
Expand Down
21 changes: 16 additions & 5 deletions docs/build/html/_modules/homura/utils/backends.html
Original file line number Diff line number Diff line change
Expand Up @@ -162,12 +162,16 @@ <h1>Source code for homura.utils.backends</h1><div class="highlight"><pre>
<span class="kn">import</span> <span class="nn">torch</span>
<span class="kn">from</span> <span class="nn">torch.utils.dlpack</span> <span class="kn">import</span> <span class="n">from_dlpack</span><span class="p">,</span> <span class="n">to_dlpack</span>

<span class="kn">from</span> <span class="nn">.environment</span> <span class="kn">import</span> <span class="n">is_cupy_available</span>
<span class="kn">from</span> <span class="nn">.environment</span> <span class="kn">import</span> <span class="n">is_cupy_available</span><span class="p">,</span> <span class="n">is_opteinsum_available</span>

<span class="n">IS_CUPY_AVAILABLE</span> <span class="o">=</span> <span class="n">is_cupy_available</span><span class="p">()</span>
<span class="k">if</span> <span class="n">IS_CUPY_AVAILABLE</span><span class="p">:</span>
<span class="n">has_cupy</span> <span class="o">=</span> <span class="n">is_cupy_available</span><span class="p">()</span>
<span class="k">if</span> <span class="n">has_cupy</span><span class="p">:</span>
<span class="kn">import</span> <span class="nn">cupy</span>

<span class="n">has_opt_einsum</span> <span class="o">=</span> <span class="n">is_opteinsum_available</span><span class="p">()</span>
<span class="k">if</span> <span class="n">has_opt_einsum</span><span class="p">:</span>
<span class="kn">import</span> <span class="nn">opt_einsum</span>


<div class="viewcode-block" id="torch_to_xp"><a class="viewcode-back" href="../../../homura.utils.html#homura.utils.backends.torch_to_xp">[docs]</a><span class="k">def</span> <span class="nf">torch_to_xp</span><span class="p">(</span><span class="nb">input</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span>
<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">:</span>
Expand All @@ -177,7 +181,7 @@ <h1>Source code for homura.utils.backends</h1><div class="highlight"><pre>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;torch_to_numpy expects torch.Tensor as input, but got </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="nb">input</span><span class="p">)</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">)</span>

<span class="k">if</span> <span class="n">IS_CUPY_AVAILABLE</span> <span class="ow">and</span> <span class="nb">input</span><span class="o">.</span><span class="n">is_cuda</span><span class="p">:</span>
<span class="k">if</span> <span class="n">has_cupy</span> <span class="ow">and</span> <span class="nb">input</span><span class="o">.</span><span class="n">is_cuda</span><span class="p">:</span>
<span class="k">return</span> <span class="n">cupy</span><span class="o">.</span><span class="n">fromDlpack</span><span class="p">(</span><span class="n">to_dlpack</span><span class="p">(</span><span class="nb">input</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">input</span><span class="o">.</span><span class="n">numpy</span><span class="p">()</span></div>
Expand All @@ -190,10 +194,17 @@ <h1>Source code for homura.utils.backends</h1><div class="highlight"><pre>

<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
<span class="k">return</span> <span class="n">torch</span><span class="o">.</span><span class="n">from_numpy</span><span class="p">(</span><span class="nb">input</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">IS_CUPY_AVAILABLE</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">cupy</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
<span class="k">elif</span> <span class="n">has_cupy</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">cupy</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
<span class="k">return</span> <span class="n">from_dlpack</span><span class="p">(</span><span class="n">cupy</span><span class="o">.</span><span class="n">ToDlpack</span><span class="p">(</span><span class="nb">input</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;xp_to_torch expects numpy/cupy.ndarray as input, but got </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="nb">input</span><span class="p">)</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">)</span></div>


<div class="viewcode-block" id="einsum"><a class="viewcode-back" href="../../../homura.utils.html#homura.utils.backends.einsum">[docs]</a><span class="k">def</span> <span class="nf">einsum</span><span class="p">(</span><span class="n">expr</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
<span class="o">*</span><span class="n">xs</span><span class="p">):</span>
<span class="k">if</span> <span class="n">has_opt_einsum</span><span class="p">:</span>
<span class="k">return</span> <span class="n">opt_einsum</span><span class="o">.</span><span class="n">contract</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="o">*</span><span class="n">xs</span><span class="p">,</span> <span class="n">backend</span><span class="o">=</span><span class="s1">&#39;torch&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">torch</span><span class="o">.</span><span class="n">einsum</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="o">*</span><span class="n">xs</span><span class="p">)</span></div>
</pre></div>

</div>
Expand Down
4 changes: 4 additions & 0 deletions docs/build/html/_modules/homura/utils/environment.html
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,10 @@ <h1>Source code for homura.utils.environment</h1><div class="highlight"><pre>
<span class="k">return</span> <span class="n">importlib</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">find_spec</span><span class="p">(</span><span class="s2">&quot;cupy&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span></div>


<div class="viewcode-block" id="is_opteinsum_available"><a class="viewcode-back" href="../../../homura.utils.html#homura.utils.environment.is_opteinsum_available">[docs]</a><span class="k">def</span> <span class="nf">is_opteinsum_available</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
<span class="k">return</span> <span class="n">importlib</span><span class="o">.</span><span class="n">util</span><span class="o">.</span><span class="n">find_spec</span><span class="p">(</span><span class="s2">&quot;opt_einsum&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span></div>


<span class="c1"># get environment information</span>

<div class="viewcode-block" id="get_git_hash"><a class="viewcode-back" href="../../../homura.utils.html#homura.utils.environment.get_git_hash">[docs]</a><span class="k">def</span> <span class="nf">get_git_hash</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
Expand Down
Loading

0 comments on commit fccf7bd

Please sign in to comment.