Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Warning about asyncio_mode even when unused in tests. #293

Closed
cladmi opened this issue Feb 15, 2022 · 8 comments · Fixed by #380
Closed

Warning about asyncio_mode even when unused in tests. #293

cladmi opened this issue Feb 15, 2022 · 8 comments · Fixed by #380

Comments

@cladmi
Copy link

cladmi commented Feb 15, 2022

When pytest-asyncio is installed, it would warn about its configuration even if nothings makes use of it in the test suite.
Meaning all tests on my machine would need to have the asyncio_mode configuration, even if not using it, to not have a warning reported.
(in a non virtualenv environment, I agree).

It would be nice to only warn if it's actually used in a test.

With a clean directory with only a bare test, and pytest-asyncio installed in the user directory:

python3 -m pip freeze | grep asyncio
pytest-asyncio==0.18.1
# test_lala.py 
def test_lala():
    pass
pytest
========================================= test session starts ==========================================
platform linux -- Python 3.8.10, pytest-6.1.2, py-1.9.0, pluggy-0.13.1
rootdir: /home/gha/empty
plugins: html-3.1.1, cov-2.12.1, asyncio-0.18.1, requests-mock-1.9.3, metadata-1.11.0
asyncio: mode=legacy
collected 1 item                                                                                       

test_lala.py .                                                                                   [100%]

=========================================== warnings summary ===========================================
../.local/lib/python3.8/site-packages/pytest_asyncio/plugin.py:191
  /home/gha/.local/lib/python3.8/site-packages/pytest_asyncio/plugin.py:191: DeprecationWarning: The 'asyncio_mode' default value will change to 'strict' in future, please explicitly use 'asyncio_mode=strict' or 'asyncio_mode=auto' in pytest configuration file.
    config.issue_config_time_warning(LEGACY_MODE, stacklevel=2)

-- Docs: https://docs.pytest.org/en/stable/warnings.html
===================================== 1 passed, 1 warning in 0.01s =====================================
@seifertm
Copy link
Contributor

I understand that the warning may be confusing if pytest-asyncio is installed, but you're not making use of it in your project.

May I ask what prevents you from removing pytest-asyncio from your environment? Are you using a global pytest-asyncio installation or are you installing it in a virtualenv?

@cladmi
Copy link
Author

cladmi commented Feb 16, 2022

Hi seifertm,

I am not using virtual environment for this, just relying on the same dependencies for different tests.
So everything installed as --user or globally. Things are in sync with the required versions across projects.

pytest-asyncio would be used to unit-tests some of the tool, but then the integration tests using this tools would not use it.
No "problem" with using the same dependencies versions as it's the same software, but the integration tests would not use pytest-asyncio and still have the warning.

My current solution was to take a version <0.17 on my machine.
Would be better to use tox for this, but then means documentation/colleagues update, so was not done yet.
So no blocker for me, just thought it make sense to report it.

Having this warning means pytest-asyncio should really only ever be installed in virtualenv or single app container.
Otherwise anytime you execute pytest outside one, it would show a warning.

It would become problematic when installed from system dependencies.
Debian did not update yet, but Arch already picked it https://archlinux.org/packages/community/any/python-pytest-asyncio/ .

@asvetlov
Copy link
Contributor

The lazy asyncio mode detection is possible.
The problem is that: if there is an installed third-party pytest plugin that defines async fixtures (e.g. pytest-aiohttp) -- it implicitly requests asyncio mode detection; you'll see the 'legacy' warning again.
Thus, the usefulness of the proposed change is not high, IMHO.

@graingert
Copy link
Member

distributed uses -p no:asyncio due to a catch 22 where --strict-config prevents setting asyncio_mode=strict

https://github.com/dask/distributed/blob/8d21040d22c98981c9d1c3ddcd99fd9e673d8f4f/setup.cfg#L51

@graingert
Copy link
Member

@mgorny
re:

Hmm, I wonder if patching pytest-asyncio to default to auto would break stuff…

patching pytest-asyncio to auto would probably break stuff, "legacy" mode has been deprecated for a while now so it would be interesting to know how many gentoo tests would fail where pytest-asyncio to default to "strict":

patch here:

parser.addini(
"asyncio_mode",
help="default value for --asyncio-mode",
default="strict",
)

@mgorny
Copy link
Contributor

mgorny commented Jul 4, 2022

I'm sorry this took so long but I've tested the packages that depend on pytest-asyncio in Gentoo today and the only one failing with this change is psycopg.

Perhaps we could add a USE flag that users could use to enable the new strict default for testing. CC @arthurzam, @thesamesam

Full list of packages tested
dev-python/aiofiles
dev-python/aiohttp-socks
dev-python/aioredis
dev-python/aiorpcX
dev-python/asgiref
dev-python/async-lru
dev-python/async-timeout
dev-python/autobahn
dev-python/backoff
dev-python/dbus-next
dev-python/denonavr
dev-python/elasticsearch-py
dev-python/fakeredis
dev-python/fsspec
dev-python/google-api-core
dev-python/httpcore
dev-python/httpx
dev-python/ipyparallel
dev-python/jeepney
dev-python/jikanpy
dev-python/jupyter_client
dev-python/outcome
dev-python/psycopg
dev-python/pytest-aiohttp
dev-python/pytest-httpx
dev-python/pytest-mock
dev-python/python-socks
dev-python/python-utils
dev-python/redis-py
dev-python/Rx
dev-python/simpervisor
dev-python/tekore
dev-python/thriftpy2
dev-python/tqdm
dev-python/uvicorn
dev-python/watchgod
dev-python/zeep
dev-python/zeroconf
media-sound/denonavr-cli
net-analyzer/wapiti
net-irc/znc-palaver
net-proxy/mitmproxy

@graingert
Copy link
Member

@mgorny
Copy link
Contributor

mgorny commented Jul 13, 2022

Thanks for doing this!

bors bot added a commit to microsoft/Qcodes that referenced this issue Oct 24, 2022
4754: Update pytest-asyncio requirement from ~=0.19.0 to ~=0.20.1 r=jenshnielsen a=dependabot[bot]

Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's releases</a>.</em></p>
<blockquote>
<h2>pytest-asyncio 0.20.1</h2>
<hr />
<h2>title: 'pytest-asyncio: pytest support for asyncio'</h2>
<p><a href="https://pypi.python.org/pypi/pytest-asyncio"><img src="https://img.shields.io/pypi/v/pytest-asyncio.svg" alt="image" /></a></p>
<p><a href="https://github.com/pytest-dev/pytest-asyncio/actions?workflow=CI"><img src="https://github.com/pytest-dev/pytest-asyncio/workflows/CI/badge.svg" alt="image" /></a></p>
<p><a href="https://codecov.io/gh/pytest-dev/pytest-asyncio"><img src="https://codecov.io/gh/pytest-dev/pytest-asyncio/branch/master/graph/badge.svg" alt="image" /></a></p>
<p><a href="https://github.com/pytest-dev/pytest-asyncio"><img src="https://img.shields.io/pypi/pyversions/pytest-asyncio.svg" alt="Supported Python versions" /></a></p>
<p><a href="https://github.com/ambv/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="image" /></a></p>
<p>pytest-asyncio is an Apache2 licensed library, written in Python, for
testing asyncio code with pytest.</p>
<p>asyncio code is usually written in the form of coroutines, which makes
it slightly more difficult to test using normal testing tools.
pytest-asyncio provides useful fixtures and markers to make testing
easier.</p>
<pre lang="{.sourceCode" data-meta=".python}"><code>`@pytest.mark.asyncio`
async def test_some_asyncio_code():
    res = await library.do_something()
    assert b&quot;expected result&quot; == res
</code></pre>
<p>pytest-asyncio has been strongly influenced by
<a href="https://github.com/eugeniy/pytest-tornado">pytest-tornado</a>.</p>
<h1>Features</h1>
<ul>
<li>fixtures for creating and injecting versions of the asyncio event
loop</li>
<li>fixtures for injecting unused tcp/udp ports</li>
<li>pytest markers for treating tests as asyncio coroutines</li>
<li>easy testing with non-default event loops</li>
<li>support for [async def]{.title-ref} fixtures and async generator
fixtures</li>
<li>support <em>auto</em> mode to handle all async fixtures and tests
automatically by asyncio; provide <em>strict</em> mode if a test suite
should work with different async frameworks simultaneously, e.g.
<code>asyncio</code> and <code>trio</code>.</li>
</ul>
<h1>Installation</h1>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-asyncio/blob/master/CHANGELOG.rst">pytest-asyncio's changelog</a>.</em></p>
<blockquote>
<h1>0.20.1 (22-10-21)</h1>
<ul>
<li>Fixes an issue that warned about using an old version of pytest, even though the most recent version was installed. <code>[#430](pytest-dev/pytest-asyncio#430) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/430&gt;</code>_</li>
</ul>
<h1>0.20.0 (22-10-21)</h1>
<ul>
<li>BREAKING: Removed <em>legacy</em> mode. If you're upgrading from v0.19 and you haven't configured <code>asyncio_mode = legacy</code>, you can upgrade without taking any additional action. If you're upgrading from an earlier version or you have explicitly enabled <em>legacy</em> mode, you need to switch to <em>auto</em> or <em>strict</em> mode before upgrading to this version.</li>
<li>Deprecate use of pytest v6.</li>
<li>Fixed an issue which prevented fixture setup from being cached. <code>[#404](pytest-dev/pytest-asyncio#404) &lt;https://github.com/pytest-dev/pytest-asyncio/pull/404&gt;</code>_</li>
</ul>
<h1>0.19.0 (22-07-13)</h1>
<ul>
<li>BREAKING: The default <code>asyncio_mode</code> is now <em>strict</em>. <code>[#293](pytest-dev/pytest-asyncio#293) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/293&gt;</code>_</li>
<li>Removes <code>setup.py</code> since all relevant configuration is present <code>setup.cfg</code>. Users requiring an editable installation of pytest-asyncio need to use pip v21.1 or newer. <code>[#283](pytest-dev/pytest-asyncio#283) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/283&gt;</code>_</li>
<li>Declare support for Python 3.11.</li>
</ul>
<h1>0.18.3 (22-03-25)</h1>
<ul>
<li>Adds <code>pytest-trio &lt;https://pypi.org/project/pytest-trio/&gt;</code>_ to the test dependencies</li>
<li>Fixes a bug that caused pytest-asyncio to try to set up async pytest_trio fixtures in strict mode. <code>[#298](pytest-dev/pytest-asyncio#298) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/298&gt;</code>_</li>
</ul>
<h1>0.18.2 (22-03-03)</h1>
<ul>
<li>Fix asyncio auto mode not marking static methods. <code>[#295](pytest-dev/pytest-asyncio#295) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/295&gt;</code>_</li>
<li>Fix a compatibility issue with Hypothesis 6.39.0. <code>[#302](pytest-dev/pytest-asyncio#302) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/302&gt;</code>_</li>
</ul>
<h1>0.18.1 (22-02-10)</h1>
<ul>
<li>Fixes a regression that prevented async fixtures from working in synchronous tests. <code>[#286](pytest-dev/pytest-asyncio#286) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/286&gt;</code>_</li>
</ul>
<h1>0.18.0 (22-02-07)</h1>
<ul>
<li>Raise a warning if <a href="https://github.com/pytest"><code>`@​pytest</code></a>.mark.asyncio` is applied to non-async function. <code>[#275](pytest-dev/pytest-asyncio#275) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/275&gt;</code>_</li>
<li>Support parametrized <code>event_loop</code> fixture. <code>[#278](pytest-dev/pytest-asyncio#278) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/278&gt;</code>_</li>
</ul>
<h1>0.17.2 (22-01-17)</h1>
<ul>
<li>Require <code>typing-extensions</code> on Python<!-- raw HTML omitted -->`_</li>
<li>Fix a regression in tests collection introduced by 0.17.1, the plugin works fine with non-python tests again. <code>[#267](pytest-dev/pytest-asyncio#267) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/267&gt;</code>_</li>
</ul>
<h1>0.17.1 (22-01-16)</h1>
<ul>
<li>Fixes a bug that prevents async Hypothesis tests from working without explicit <code>asyncio</code> marker when <code>--asyncio-mode=auto</code> is set. <code>[#258](pytest-dev/pytest-asyncio#258) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/258&gt;</code>_</li>
<li>Fixed a bug that closes the default event loop if the loop doesn't exist <code>[#257](pytest-dev/pytest-asyncio#257) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/257&gt;</code>_</li>
<li>Added type annotations. <code>[#198](pytest-dev/pytest-asyncio#198) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/198&gt;</code>_</li>
<li>Show asyncio mode in pytest report headers. <code>[#266](pytest-dev/pytest-asyncio#266) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/266&gt;</code>_</li>
<li>Relax <code>asyncio_mode</code> type definition; it allows to support pytest 6.1+. <code>[#262](pytest-dev/pytest-asyncio#262) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/262&gt;</code>_</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/c8d017407d39dd81d6864fa9a58ba1240d54be9f"><code>c8d0174</code></a> fix: Do not warn about outdated pytest version when pytest&gt;=7 is installed. (...</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/6450ddbe974f5359d56317ba8bdda8b2ab48655a"><code>6450ddb</code></a> Prepare release of v0.20.0. (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/428">#428</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/150f29c107fbd76641de47e040d43840769ef92c"><code>150f29c</code></a> Build(deps): Bump hypothesis in /dependencies/default (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/427">#427</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/adc88090f341d9872e9e9b4d22a94cdadf60b3bc"><code>adc8809</code></a> Build(deps): Bump typing-extensions in /dependencies/default (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/425">#425</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/4abf9d1df228ed8b083721d7affa73e4a08d13c3"><code>4abf9d1</code></a> Build(deps): Bump zipp from 3.8.1 to 3.9.0 in /dependencies/default (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/424">#424</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/eb487bcb076f44dedcdb33e74972bf06c37027ee"><code>eb487bc</code></a> Build(deps): Bump hypothesis in /dependencies/default (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/423">#423</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/907c461f172e52159a595e2592176c7feac04a43"><code>907c461</code></a> Refactor pytest_pycollect_makeitems (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/421">#421</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/d45ab217c80117854b510edc6c9fdd457b6b07fc"><code>d45ab21</code></a> feat: Add deprecation warning for pytest &lt; 7. (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/420">#420</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/cab20f4d346e9e52e5ffc93854de3ec881e7d342"><code>cab20f4</code></a> Build(deps): Bump importlib-metadata in /dependencies/default (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/415">#415</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/d9f77567189c96536b39b43520f4b40895b34fb9"><code>d9f7756</code></a> Build(deps): Bump hypothesis in /dependencies/default (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/416">#416</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest-asyncio/compare/v0.19.0...v0.20.1">compare view</a></li>
</ul>
</details>
<br />


You can trigger a rebase of this PR by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

4755: Bump actions/upload-artifact from 3.1.0 to 3.1.1 r=jenshnielsen a=dependabot[bot]

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.0 to 3.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's releases</a>.</em></p>
<blockquote>
<h2>v3.1.1</h2>
<ul>
<li>Update actions/core package to latest version to remove <code>set-output</code> deprecation warning <a href="https://github-redirect.dependabot.com/actions/upload-artifact/issues/351">#351</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/actions/upload-artifact/commit/83fd05a356d7e2593de66fc9913b3002723633cb"><code>83fd05a</code></a> Bump actions-core to v1.10.0 (<a href="https://github-redirect.dependabot.com/actions/upload-artifact/issues/356">#356</a>)</li>
<li>See full diff in <a href="https://github.com/actions/upload-artifact/compare/v3.1.0...v3.1.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=3.1.0&new-version=3.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

You can trigger a rebase of this PR by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
bors bot added a commit to microsoft/Qcodes that referenced this issue Oct 24, 2022
4754: Update pytest-asyncio requirement from ~=0.19.0 to ~=0.20.1 r=jenshnielsen a=dependabot[bot]

Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's releases</a>.</em></p>
<blockquote>
<h2>pytest-asyncio 0.20.1</h2>
<hr />
<h2>title: 'pytest-asyncio: pytest support for asyncio'</h2>
<p><a href="https://pypi.python.org/pypi/pytest-asyncio"><img src="https://img.shields.io/pypi/v/pytest-asyncio.svg" alt="image" /></a></p>
<p><a href="https://github.com/pytest-dev/pytest-asyncio/actions?workflow=CI"><img src="https://github.com/pytest-dev/pytest-asyncio/workflows/CI/badge.svg" alt="image" /></a></p>
<p><a href="https://codecov.io/gh/pytest-dev/pytest-asyncio"><img src="https://codecov.io/gh/pytest-dev/pytest-asyncio/branch/master/graph/badge.svg" alt="image" /></a></p>
<p><a href="https://github.com/pytest-dev/pytest-asyncio"><img src="https://img.shields.io/pypi/pyversions/pytest-asyncio.svg" alt="Supported Python versions" /></a></p>
<p><a href="https://github.com/ambv/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="image" /></a></p>
<p>pytest-asyncio is an Apache2 licensed library, written in Python, for
testing asyncio code with pytest.</p>
<p>asyncio code is usually written in the form of coroutines, which makes
it slightly more difficult to test using normal testing tools.
pytest-asyncio provides useful fixtures and markers to make testing
easier.</p>
<pre lang="{.sourceCode" data-meta=".python}"><code>`@pytest.mark.asyncio`
async def test_some_asyncio_code():
    res = await library.do_something()
    assert b&quot;expected result&quot; == res
</code></pre>
<p>pytest-asyncio has been strongly influenced by
<a href="https://github.com/eugeniy/pytest-tornado">pytest-tornado</a>.</p>
<h1>Features</h1>
<ul>
<li>fixtures for creating and injecting versions of the asyncio event
loop</li>
<li>fixtures for injecting unused tcp/udp ports</li>
<li>pytest markers for treating tests as asyncio coroutines</li>
<li>easy testing with non-default event loops</li>
<li>support for [async def]{.title-ref} fixtures and async generator
fixtures</li>
<li>support <em>auto</em> mode to handle all async fixtures and tests
automatically by asyncio; provide <em>strict</em> mode if a test suite
should work with different async frameworks simultaneously, e.g.
<code>asyncio</code> and <code>trio</code>.</li>
</ul>
<h1>Installation</h1>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-asyncio/blob/master/CHANGELOG.rst">pytest-asyncio's changelog</a>.</em></p>
<blockquote>
<h1>0.20.1 (22-10-21)</h1>
<ul>
<li>Fixes an issue that warned about using an old version of pytest, even though the most recent version was installed. <code>[#430](pytest-dev/pytest-asyncio#430) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/430&gt;</code>_</li>
</ul>
<h1>0.20.0 (22-10-21)</h1>
<ul>
<li>BREAKING: Removed <em>legacy</em> mode. If you're upgrading from v0.19 and you haven't configured <code>asyncio_mode = legacy</code>, you can upgrade without taking any additional action. If you're upgrading from an earlier version or you have explicitly enabled <em>legacy</em> mode, you need to switch to <em>auto</em> or <em>strict</em> mode before upgrading to this version.</li>
<li>Deprecate use of pytest v6.</li>
<li>Fixed an issue which prevented fixture setup from being cached. <code>[#404](pytest-dev/pytest-asyncio#404) &lt;https://github.com/pytest-dev/pytest-asyncio/pull/404&gt;</code>_</li>
</ul>
<h1>0.19.0 (22-07-13)</h1>
<ul>
<li>BREAKING: The default <code>asyncio_mode</code> is now <em>strict</em>. <code>[#293](pytest-dev/pytest-asyncio#293) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/293&gt;</code>_</li>
<li>Removes <code>setup.py</code> since all relevant configuration is present <code>setup.cfg</code>. Users requiring an editable installation of pytest-asyncio need to use pip v21.1 or newer. <code>[#283](pytest-dev/pytest-asyncio#283) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/283&gt;</code>_</li>
<li>Declare support for Python 3.11.</li>
</ul>
<h1>0.18.3 (22-03-25)</h1>
<ul>
<li>Adds <code>pytest-trio &lt;https://pypi.org/project/pytest-trio/&gt;</code>_ to the test dependencies</li>
<li>Fixes a bug that caused pytest-asyncio to try to set up async pytest_trio fixtures in strict mode. <code>[#298](pytest-dev/pytest-asyncio#298) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/298&gt;</code>_</li>
</ul>
<h1>0.18.2 (22-03-03)</h1>
<ul>
<li>Fix asyncio auto mode not marking static methods. <code>[#295](pytest-dev/pytest-asyncio#295) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/295&gt;</code>_</li>
<li>Fix a compatibility issue with Hypothesis 6.39.0. <code>[#302](pytest-dev/pytest-asyncio#302) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/302&gt;</code>_</li>
</ul>
<h1>0.18.1 (22-02-10)</h1>
<ul>
<li>Fixes a regression that prevented async fixtures from working in synchronous tests. <code>[#286](pytest-dev/pytest-asyncio#286) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/286&gt;</code>_</li>
</ul>
<h1>0.18.0 (22-02-07)</h1>
<ul>
<li>Raise a warning if <a href="https://github.com/pytest"><code>`@​pytest</code></a>.mark.asyncio` is applied to non-async function. <code>[#275](pytest-dev/pytest-asyncio#275) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/275&gt;</code>_</li>
<li>Support parametrized <code>event_loop</code> fixture. <code>[#278](pytest-dev/pytest-asyncio#278) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/278&gt;</code>_</li>
</ul>
<h1>0.17.2 (22-01-17)</h1>
<ul>
<li>Require <code>typing-extensions</code> on Python<!-- raw HTML omitted -->`_</li>
<li>Fix a regression in tests collection introduced by 0.17.1, the plugin works fine with non-python tests again. <code>[#267](pytest-dev/pytest-asyncio#267) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/267&gt;</code>_</li>
</ul>
<h1>0.17.1 (22-01-16)</h1>
<ul>
<li>Fixes a bug that prevents async Hypothesis tests from working without explicit <code>asyncio</code> marker when <code>--asyncio-mode=auto</code> is set. <code>[#258](pytest-dev/pytest-asyncio#258) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/258&gt;</code>_</li>
<li>Fixed a bug that closes the default event loop if the loop doesn't exist <code>[#257](pytest-dev/pytest-asyncio#257) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/257&gt;</code>_</li>
<li>Added type annotations. <code>[#198](pytest-dev/pytest-asyncio#198) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/198&gt;</code>_</li>
<li>Show asyncio mode in pytest report headers. <code>[#266](pytest-dev/pytest-asyncio#266) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/266&gt;</code>_</li>
<li>Relax <code>asyncio_mode</code> type definition; it allows to support pytest 6.1+. <code>[#262](pytest-dev/pytest-asyncio#262) &lt;https://github.com/pytest-dev/pytest-asyncio/issues/262&gt;</code>_</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/c8d017407d39dd81d6864fa9a58ba1240d54be9f"><code>c8d0174</code></a> fix: Do not warn about outdated pytest version when pytest&gt;=7 is installed. (...</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/6450ddbe974f5359d56317ba8bdda8b2ab48655a"><code>6450ddb</code></a> Prepare release of v0.20.0. (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/428">#428</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/150f29c107fbd76641de47e040d43840769ef92c"><code>150f29c</code></a> Build(deps): Bump hypothesis in /dependencies/default (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/427">#427</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/adc88090f341d9872e9e9b4d22a94cdadf60b3bc"><code>adc8809</code></a> Build(deps): Bump typing-extensions in /dependencies/default (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/425">#425</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/4abf9d1df228ed8b083721d7affa73e4a08d13c3"><code>4abf9d1</code></a> Build(deps): Bump zipp from 3.8.1 to 3.9.0 in /dependencies/default (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/424">#424</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/eb487bcb076f44dedcdb33e74972bf06c37027ee"><code>eb487bc</code></a> Build(deps): Bump hypothesis in /dependencies/default (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/423">#423</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/907c461f172e52159a595e2592176c7feac04a43"><code>907c461</code></a> Refactor pytest_pycollect_makeitems (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/421">#421</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/d45ab217c80117854b510edc6c9fdd457b6b07fc"><code>d45ab21</code></a> feat: Add deprecation warning for pytest &lt; 7. (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/420">#420</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/cab20f4d346e9e52e5ffc93854de3ec881e7d342"><code>cab20f4</code></a> Build(deps): Bump importlib-metadata in /dependencies/default (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/415">#415</a>)</li>
<li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/d9f77567189c96536b39b43520f4b40895b34fb9"><code>d9f7756</code></a> Build(deps): Bump hypothesis in /dependencies/default (<a href="https://github-redirect.dependabot.com/pytest-dev/pytest-asyncio/issues/416">#416</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest-asyncio/compare/v0.19.0...v0.20.1">compare view</a></li>
</ul>
</details>
<br />


You can trigger a rebase of this PR by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants