fix: default asyncio_default_fixture_loop_scope to "function"#1462
fix: default asyncio_default_fixture_loop_scope to "function"#1462sridhar-3009 wants to merge 3 commits into
Conversation
The configuration option was previously left unset (None), causing pytest-asyncio to emit a PytestDeprecationWarning on every run and fall back to fixture-caching scope — the old deprecated behaviour. Set the default to "function" as documented in the issue roadmap. Remove the now-unreachable _DEFAULT_FIXTURE_LOOP_SCOPE_UNSET constant and its associated warning emission in pytest_configure. Tests that explicitly set `asyncio_default_fixture_loop_scope = function` in pytester configs are still correct; removing those redundant settings is left as a follow-up. Closes pytest-dev#924
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1462 +/- ##
==========================================
+ Coverage 94.50% 94.87% +0.36%
==========================================
Files 2 2
Lines 510 507 -3
Branches 62 61 -1
==========================================
- Hits 482 481 -1
+ Misses 22 21 -1
+ Partials 6 5 -1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
Quick heads-up: there are two other open PRs against the same issue (#924):
This PR is closest in shape to #1381 (drop the warning block, set the default), and the diff overlaps almost entirely with the plugin.py change in #1444. To keep things tidy for the maintainers, would you be open to either:
If you spotted a behaviour gap that #1444 doesn't cover, that's worth flagging on the issue thread so all three PRs converge on the same target rather than triaging the same default change three times. |
|
Closing in favour of #1444 which is further along and has maintainer feedback applied. Will follow that PR instead. |
Summary
Closes #924.
The
asyncio_default_fixture_loop_scopeini option was leftNoneby default, which triggered aPytestDeprecationWarningon every test run and caused async fixtures to fall back to the old fixture-caching scope behaviour.This PR completes the deprecation by:
"function"— the value the deprecation warning was telling users to set explicitly._DEFAULT_FIXTURE_LOOP_SCOPE_UNSET— the warning constant is now unreachable since the default is no longer falsy.if not default_fixture_loop_scope: warnings.warn(...)block inpytest_configure.Before
After
Follow-up
Tests that explicitly set
asyncio_default_fixture_loop_scope = functionin pytester configs are now setting the default redundantly. Cleaning those up is a separate, mechanical follow-up.