Skip to content

Commit e16f313

Browse files
committed
Deploying to gh-pages from @ dfa9808 🚀
1 parent f3a8c12 commit e16f313

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

generated/array_api_extra.testing.patch_lazy_xp_functions.html

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@
275275
<h1>array_api_extra.testing.patch_lazy_xp_functions<a class="headerlink" href="#array-api-extra-testing-patch-lazy-xp-functions" title="Link to this heading"></a></h1>
276276
<dl class="py function">
277277
<dt class="sig sig-object py" id="array_api_extra.testing.patch_lazy_xp_functions">
278-
<span class="sig-prename descclassname"><span class="pre">array_api_extra.testing.</span></span><span class="sig-name descname"><span class="pre">patch_lazy_xp_functions</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">monkeypatch</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">xp</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#array_api_extra.testing.patch_lazy_xp_functions" title="Link to this definition"></a></dt>
278+
<span class="sig-prename descclassname"><span class="pre">array_api_extra.testing.</span></span><span class="sig-name descname"><span class="pre">patch_lazy_xp_functions</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">monkeypatch</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">xp</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#array_api_extra.testing.patch_lazy_xp_functions" title="Link to this definition"></a></dt>
279279
<dd><p>Test lazy execution of functions tagged with <a class="reference internal" href="array_api_extra.testing.lazy_xp_function.html#array_api_extra.testing.lazy_xp_function" title="array_api_extra.testing.lazy_xp_function"><code class="xref py py-func docutils literal notranslate"><span class="pre">lazy_xp_function()</span></code></a>.</p>
280280
<p>If <code class="docutils literal notranslate"><span class="pre">xp==jax.numpy</span></code>, search for all functions which have been tagged with
281281
<a class="reference internal" href="array_api_extra.testing.lazy_xp_function.html#array_api_extra.testing.lazy_xp_function" title="array_api_extra.testing.lazy_xp_function"><code class="xref py py-func docutils literal notranslate"><span class="pre">lazy_xp_function()</span></code></a> in the globals of the module that defines the current test,
@@ -286,23 +286,28 @@ <h1>array_api_extra.testing.patch_lazy_xp_functions<a class="headerlink" href="#
286286
eagerly.</p>
287287
<p>This function should be typically called by your library’s <cite>xp</cite> fixture that runs
288288
tests on multiple backends:</p>
289-
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@pytest</span><span class="o">.</span><span class="n">fixture</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="p">[</span><span class="n">numpy</span><span class="p">,</span> <span class="n">array_api_strict</span><span class="p">,</span> <span class="n">jax</span><span class="o">.</span><span class="n">numpy</span><span class="p">,</span> <span class="n">dask</span><span class="o">.</span><span class="n">array</span><span class="p">])</span>
290-
<span class="k">def</span><span class="w"> </span><span class="nf">xp</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">monkeypatch</span><span class="p">):</span>
291-
<span class="n">patch_lazy_xp_functions</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">monkeypatch</span><span class="p">,</span> <span class="n">xp</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">param</span><span class="p">)</span>
292-
<span class="k">return</span> <span class="n">request</span><span class="o">.</span><span class="n">param</span>
289+
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@pytest</span><span class="o">.</span><span class="n">fixture</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="p">[</span>
290+
<span class="n">numpy</span><span class="p">,</span>
291+
<span class="n">array_api_strict</span><span class="p">,</span>
292+
<span class="n">pytest</span><span class="o">.</span><span class="n">param</span><span class="p">(</span><span class="n">jax</span><span class="o">.</span><span class="n">numpy</span><span class="p">,</span> <span class="n">marks</span><span class="o">=</span><span class="n">pytest</span><span class="o">.</span><span class="n">mark</span><span class="o">.</span><span class="n">thread_unsafe</span><span class="p">),</span>
293+
<span class="n">pytest</span><span class="o">.</span><span class="n">param</span><span class="p">(</span><span class="n">dask</span><span class="o">.</span><span class="n">array</span><span class="p">,</span> <span class="n">marks</span><span class="o">=</span><span class="n">pytest</span><span class="o">.</span><span class="n">mark</span><span class="o">.</span><span class="n">thread_unsafe</span><span class="p">),</span>
294+
<span class="p">])</span>
295+
<span class="k">def</span><span class="w"> </span><span class="nf">xp</span><span class="p">(</span><span class="n">request</span><span class="p">):</span>
296+
<span class="k">with</span> <span class="n">patch_lazy_xp_functions</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">xp</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">param</span><span class="p">):</span>
297+
<span class="k">yield</span> <span class="n">request</span><span class="o">.</span><span class="n">param</span>
293298
</pre></div>
294299
</div>
295300
<p>but it can be otherwise be called by the test itself too.</p>
296301
<dl class="field-list simple">
297302
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
298303
<dd class="field-odd"><ul class="simple">
299304
<li><p><strong>request</strong> (<em>pytest.FixtureRequest</em>) – Pytest fixture, as acquired by the test itself or by one of its fixtures.</p></li>
300-
<li><p><strong>monkeypatch</strong> (<em>pytest.MonkeyPatch</em>) – Pytest fixture, as acquired by the test itself or by one of its fixtures.</p></li>
305+
<li><p><strong>monkeypatch</strong> (<em>pytest.MonkeyPatch</em>) – Deprecated</p></li>
301306
<li><p><strong>xp</strong> (<em>array_namespace</em>) – Array namespace to be tested.</p></li>
302307
</ul>
303308
</dd>
304309
<dt class="field-even">Return type<span class="colon">:</span></dt>
305-
<dd class="field-even"><p><span class="sphinx_autodoc_typehints-type"><a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a></span></p>
310+
<dd class="field-even"><p><span class="sphinx_autodoc_typehints-type"><a class="reference external" href="https://docs.python.org/3/library/contextlib.html#contextlib.AbstractContextManager" title="(in Python v3.13)"><code class="xref py py-class docutils literal notranslate"><span class="pre">AbstractContextManager</span></code></a>[<a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.13)"><code class="xref py py-obj docutils literal notranslate"><span class="pre">None</span></code></a>]</span></p>
306311
</dd>
307312
</dl>
308313
<div class="admonition seealso">
@@ -314,6 +319,12 @@ <h1>array_api_extra.testing.patch_lazy_xp_functions<a class="headerlink" href="#
314319
</dd>
315320
</dl>
316321
</div>
322+
<p class="rubric">Notes</p>
323+
<p>This context manager monkey-patches modules and as such is thread unsafe
324+
on Dask and JAX. If you run your test suite with
325+
<a class="reference external" href="https://github.com/Quansight-Labs/pytest-run-parallel/">pytest-run-parallel</a>,
326+
you should mark these backends with <code class="docutils literal notranslate"><span class="pre">&#64;pytest.mark.thread_unsafe</span></code>, as shown in
327+
the example above.</p>
317328
</dd></dl>
318329

319330
</section>

0 commit comments

Comments
 (0)