-
Notifications
You must be signed in to change notification settings - Fork 149
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
Event loop shutdown failures on 0.17 #257
Comments
@madkinsz Sorry to hear the new release is causing issues. The offending line was introduced in v0.17.0. Your fixture setup looks correct to me and I cannot reproduce the issue. What's the output when adding |
Thanks for the quick reply. Here's a repository with a MRE: https://github.com/madkinsz/pytest-asyncio-257 It looks like the issue is calling e.g. import asyncio
async def test_an_async_test_is_required():
"""Without an async test, the error will not be raised"""
pass
def test_run_async_in_new_loop():
async def foo():
pass
asyncio.run(foo())
|
* Use a more realistic mock version * Add debug print on failed assertion * build with types * Fix test * Ensure version is correct during test runs by doing a deep fetch * Remove unused threading lock * Fixup comment * Types working with a little hacking * Return failed exit codes correctly * Update vue-compositions * Edits to installation and first steps tutorial, including updated UI image. * Flow and task configuration edits and examples. * Bundle everything in the components folder * Task dependencies edits and examples. * Orchestration components edits. * FAQ edits. * Fix some type errors * Export radar nodes * Remove name filter * Add flow_id and task_id sorting options * WIP on filters for read logs API * Use flow run and task run IDs for logs * Use flow_run_id, task_run_id in Log schema * Use task run and flow run IDs for logs API * format with black * Add offset, empty case log API tests * Update src/prefect/orion/database/interface.py Co-authored-by: Mariia Kerimova <[email protected]> * Add LogFilter tests * Remove unused imports * Use `schema.dict()` for comparisons so pytest reports accurate diffs * Add check for `minItems` and `maxItems` for Pydantic 1.9.0+ * fix docs bug * Use array response for logs, bulk insert * WIP * Update `State.__str__` to only include type if meaningful and drop "message=" * Remove some experimental code * Cleanup * Allow kwargs to be passed to `run_logger` * Update `run_logger` docstring * Use `send_to_orion`; drop `Flow/Task` loggers * Update docs/getting-started/installation.md Co-authored-by: Chris White <[email protected]> * Drop extraneous stuff from logging config * Update context tests * Update docs/tutorials/orion.md * Fixup more tests * Fix logging for crashes * Positional-only parameters is py3.8+ only * Restore simple log format * Simplify retrieval of parent logger * Fixup context test * Fixup output tests * Test sorting logs API * Fix log schema field descriptions * Remove now-unused Logs schema * Format with black * Update docs/index.md Co-authored-by: Michael Adkins <[email protected]> * Add tests for run logger retrieval * Review feedback * Remove now-unused test helper * Fix bundle error with vite Not 100% sure why this is happening but using `any` here makes it stop erroring * Implement `OrionHandler` * Add `create_logs` to `OrionClient` and pass `dicts` around instead of `Log` We cannot use `Log` because we need `LogCreate` objects to be passed to the API. Using `LogCreate` outside of the `Client` feels weird * Fix note in handler * Fix bare except * Switch back to `LogCreate` for better error handling * Fix `getsizeof` call * Add error handlers * Minor fixups * Deployments overview and UI image. * Add handling when `pending_logs` is empty * Deployment specification * Deployment registration * Running deployments * Deployment example * Make inject_db async-aware * Add log models tests * Remove unnecessary uses of inject_db * Misc formatting * Use exc_info * Do not emit records if `send_to_orion` is `False * Fix context loading; add tests for `OrionHandler` * Update miter to latest version * Move `prefect flow-run create` to `prefect deployment run` * Add 3.9+ workaround; add `OrionHandler.flush` * Expand on regression test description * Clean up stale docs * Privatize `OrionLogWorker` * Use a le, ge filter for log level * Fix tests * Fix bug where envion could be left modified if settings failed validation * Set log interval to float so it can be fast in tests * Add single log max size setting * Add `read_logs` support to `OrionClient` * Pass serialized logs to the `OrionLogWorker` for easier size checking * Add test for single log size max * Fixup comment * Add rudimentary docstrings to client * Update references to engine logger * Rename to `get_run_logger()` * Use a worker fixture to ensure shutdown * Flush logs when a root flow run completes * Remove unused imports * Remove some more unused imports * Rewriting based on review feedback. * Reset the OrionHandler as a global fixture; add flow and task run integration tests * Add logging fixtures file * Further revsions and reorganizing topics. * Refactor `OrionHandler` logging settings and add global toggle * Disable OrionHandler by default during tests and allow enable with a mark * Add docstring * Fix mispelling of "Cancelled" state in UI * Implement OrionAdapter for preserving extra fields * Update src/prefect/utilities/logging.py Co-authored-by: Michael Adkins <[email protected]> * Update docs/concepts/deployments.md Co-authored-by: Bill Palombi <[email protected]> * Update docs/concepts/deployments.md Co-authored-by: Bill Palombi <[email protected]> * Update docs/concepts/deployments.md Co-authored-by: Bill Palombi <[email protected]> * Rename to `PrefectLogAdapter` because it is not Orion specific * Link to Python issue * Move `logging.yml` to new logging module * Move logging into separate modules at 'prefect.logging' * Remove deferred imports * Move logging tests up a level * Update manfiest and docs for move * Remove old logging module * Add `JsonFormatter` docstring * Add more docstrings * Move `AsyncMock` from compat to testing utility module This allows us to drop the try/except import which felt weird. Things that are only used for testing belong in the testing utils module. * Update miter to latest version * Use an event instead instead of sleep to reduce brittleness * Update docs/concepts/deployments.md Co-authored-by: Michael Adkins <[email protected]> * Update docs/concepts/deployments.md Co-authored-by: Michael Adkins <[email protected]> * Update docs/concepts/deployments.md Co-authored-by: Michael Adkins <[email protected]> * Update docs/concepts/deployments.md Co-authored-by: Michael Adkins <[email protected]> * Update docs/concepts/deployments.md Co-authored-by: Michael Adkins <[email protected]> * Revised description of ways to create deployment specs. * Enable services by default with `prefect orion start` * Revise options for deployment creation. * Add flow runner concepts * Add blurb for `FlowRunnerSettings` * Fix universal flow runner import * Add tutorial * Fix `prefect deployment run` command This command was not updated when the client interface changed * Add note about custom image requirement * Add `FROM` recommendation * Whitespace changes * Fix `prefect deployment run` command This command was not updated when the client interface changed * Add virtual environments tutorial * Add venv tutorial to flow-runners concepts * Update header * Flow runner doc edits. * Add flow run docs to nav. * Only schedule with the scheduler * Change router watchers to better reflect component lifecycle * Update docs/concepts/flow-runners.md Co-authored-by: Chris White <[email protected]> * Update docs/concepts/flow-runners.md Co-authored-by: Chris White <[email protected]> * Update docs/tutorials/docker-flow-runner.md Co-authored-by: Chris White <[email protected]> * Update docs/tutorials/docker-flow-runner.md Co-authored-by: Chris White <[email protected]> * Feedback from review * Minor edits based on feedback. * Update bash examples, removing prompts. * Revise explanation of flow runner operation. * Additional revisions based on feedback. * Additional revision based on feedback. * Minor code revisions. * Revise using a flow runner. * Only retain python test docker images for 1 day The default retention of 90 days is expensive if we build 3 images for every PR commit * Use consistent casing for "task" * Rename file name for clarity * Add CODEOWNERS * Add Dustin * Add Zach and Andrew as Orion server owners * Remove unecesssary conditional It does the same evaluation as the while loop check, oops. * Remove `=`, allows logs to be too big * Disable caching for date_add * Fix release PR to the public repository by resolving merge conflicts automatically * Pull docker image before we create a container * Add release notes for 2.0a8 * Add image pull policy to Docker flow runner * Improve mocking hygiene * Update release notes for implementation in #810 * Add log on image pull * Use the string repr * Use `AutoEnum` and move from orion to prefect utilities * Fixup autoenum usage * Update docs * Update discussion of flow runner types and default flow runners. * Restore circleci config * Drop welcome orb * Minimal circle config? * Remove filter * Fixup job name * Set the asyncio mode to auto * Fix pytest-asyncio failures; increase lower bound since we rely on auto now See pytest-dev/pytest-asyncio#257 Co-authored-by: Craig Harshbarger <[email protected]> Co-authored-by: Terrence Dorsey <[email protected]> Co-authored-by: Andrew Brookins <[email protected]> Co-authored-by: Zach Angell <[email protected]> Co-authored-by: Chris White <[email protected]> Co-authored-by: Andrew Brookins <[email protected]> Co-authored-by: Mariia Kerimova <[email protected]> Co-authored-by: Anna Geller <[email protected]> Co-authored-by: Terrence Dorsey <[email protected]> Co-authored-by: Zach Angell <[email protected]> Co-authored-by: Bill Palombi <[email protected]> Co-authored-by: nicholas <[email protected]> Co-authored-by: Nicholas Brown <[email protected]>
Great example, thanks! It seems that |
Correct. Session-scoped |
Of course Interestingly though, this worked fine in the previous version and all of our tests are working as intended. Perhaps if there's not an event loop |
In https://github.com/madkinsz/pytest-asyncio-257/blob/main/test_event_loop.py I show that the session scoped loop is not actually clobbered during the test run and async tests share the same loop correctly. I'm definitely not familiar with the implementation details of pytest, but it seems like the behavior is correct and the only issue is that the loop is not present when fixture teardown occurs. |
I am seeing something similar with 0.17.2. This happens after the last test has been run.
We also override the event_loop fixture like so: # Override the pytest-asyncio event_loop fixture to make it session scoped. This is required in order to enable
# async test fixtures with a session scope. More info: https://github.com/pytest-dev/pytest-asyncio/issues/68
@pytest.fixture(scope="session")
def event_loop(request):
loop = asyncio.get_event_loop_policy().new_event_loop()
yield loop
loop.close() |
OK, so I found out how to fix this. A our folder structure for the tests is as follows
Our |
I have a similar issue - getting |
@MetRonnie After a brief look at If your project is using both |
@seifertm Thanks, in the end seeing as the project does not have [pytest]
addopts =
-p no:tornado in |
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"expected result" == 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) <https://github.com/pytest-dev/pytest-asyncio/issues/430></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) <https://github.com/pytest-dev/pytest-asyncio/pull/404></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) <https://github.com/pytest-dev/pytest-asyncio/issues/293></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) <https://github.com/pytest-dev/pytest-asyncio/issues/283></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 <https://pypi.org/project/pytest-trio/></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) <https://github.com/pytest-dev/pytest-asyncio/issues/298></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) <https://github.com/pytest-dev/pytest-asyncio/issues/295></code>_</li> <li>Fix a compatibility issue with Hypothesis 6.39.0. <code>[#302](pytest-dev/pytest-asyncio#302) <https://github.com/pytest-dev/pytest-asyncio/issues/302></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) <https://github.com/pytest-dev/pytest-asyncio/issues/286></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) <https://github.com/pytest-dev/pytest-asyncio/issues/275></code>_</li> <li>Support parametrized <code>event_loop</code> fixture. <code>[#278](pytest-dev/pytest-asyncio#278) <https://github.com/pytest-dev/pytest-asyncio/issues/278></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) <https://github.com/pytest-dev/pytest-asyncio/issues/267></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) <https://github.com/pytest-dev/pytest-asyncio/issues/258></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) <https://github.com/pytest-dev/pytest-asyncio/issues/257></code>_</li> <li>Added type annotations. <code>[#198](pytest-dev/pytest-asyncio#198) <https://github.com/pytest-dev/pytest-asyncio/issues/198></code>_</li> <li>Show asyncio mode in pytest report headers. <code>[#266](pytest-dev/pytest-asyncio#266) <https://github.com/pytest-dev/pytest-asyncio/issues/266></code>_</li> <li>Relax <code>asyncio_mode</code> type definition; it allows to support pytest 6.1+. <code>[#262](pytest-dev/pytest-asyncio#262) <https://github.com/pytest-dev/pytest-asyncio/issues/262></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>=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 < 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>
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"expected result" == 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) <https://github.com/pytest-dev/pytest-asyncio/issues/430></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) <https://github.com/pytest-dev/pytest-asyncio/pull/404></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) <https://github.com/pytest-dev/pytest-asyncio/issues/293></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) <https://github.com/pytest-dev/pytest-asyncio/issues/283></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 <https://pypi.org/project/pytest-trio/></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) <https://github.com/pytest-dev/pytest-asyncio/issues/298></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) <https://github.com/pytest-dev/pytest-asyncio/issues/295></code>_</li> <li>Fix a compatibility issue with Hypothesis 6.39.0. <code>[#302](pytest-dev/pytest-asyncio#302) <https://github.com/pytest-dev/pytest-asyncio/issues/302></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) <https://github.com/pytest-dev/pytest-asyncio/issues/286></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) <https://github.com/pytest-dev/pytest-asyncio/issues/275></code>_</li> <li>Support parametrized <code>event_loop</code> fixture. <code>[#278](pytest-dev/pytest-asyncio#278) <https://github.com/pytest-dev/pytest-asyncio/issues/278></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) <https://github.com/pytest-dev/pytest-asyncio/issues/267></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) <https://github.com/pytest-dev/pytest-asyncio/issues/258></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) <https://github.com/pytest-dev/pytest-asyncio/issues/257></code>_</li> <li>Added type annotations. <code>[#198](pytest-dev/pytest-asyncio#198) <https://github.com/pytest-dev/pytest-asyncio/issues/198></code>_</li> <li>Show asyncio mode in pytest report headers. <code>[#266](pytest-dev/pytest-asyncio#266) <https://github.com/pytest-dev/pytest-asyncio/issues/266></code>_</li> <li>Relax <code>asyncio_mode</code> type definition; it allows to support pytest 6.1+. <code>[#262](pytest-dev/pytest-asyncio#262) <https://github.com/pytest-dev/pytest-asyncio/issues/262></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>=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 < 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>
There's a bunch of errors of the form RuntimeError: There is no current event loop in thread 'Dummy-1'. that pop up once in a while on failing integration tests. Example: https://github.com/featurebyte/featurebyte/actions/runs/4320831275/jobs/7541472752 Some googling suggests we can try to avoid this by having some extra handling around the event loop fixture. Related links - https://stackoverflow.com/questions/46727787/runtimeerror-there-is-no-current-event-loop-in-thread-in-async-apscheduler - ultrafunkamsterdam/undetected-chromedriver#373 - pytest-dev/pytest-asyncio#257 I don't think this necessarily solves the underlying issue, but figured it might be worth a try to try to make a short-term patch to alleviate some flaky integration tests.
…ng down the event_loop - using a different policy - fixture event_loop in conftest.py - fixes pytest-dev/pytest-asyncio#257
…ng down the event_loop - using a different policy - fixture event_loop in conftest.py - fixes pytest-dev/pytest-asyncio#257
…ng down the event_loop - using a different policy - fixture event_loop in conftest.py - fixes pytest-dev/pytest-asyncio#257
We use the following to define a session scoped event loop (per #68)
After upgrading to 0.17, our test suite fails with
Modifying the fixture to set the loop with the policy at the end resolves the error
Leaving the loop open or setting the loop with the policy before yielding does not resolve the error.
I'm not sure why this is happening now, not sure if it needs a fix here.
We're using
asyncio_mode = auto
.The text was updated successfully, but these errors were encountered: