Skip to content

Commit ab7a903

Browse files
committed
feat: Silenced deprecations in Python 3.14.
1 parent cbc5b21 commit ab7a903

File tree

6 files changed

+55
-15
lines changed

6 files changed

+55
-15
lines changed

changelog.d/1025.added.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Support for Python 3.14

docs/how-to-guides/multiple_loops_example.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import asyncio
2-
from asyncio import DefaultEventLoopPolicy
2+
import warnings
3+
4+
with warnings.catch_warnings():
5+
warnings.simplefilter("ignore", DeprecationWarning)
6+
from asyncio import DefaultEventLoopPolicy
37

48
import pytest
59

@@ -20,5 +24,6 @@ def event_loop_policy(request):
2024

2125

2226
@pytest.mark.asyncio
27+
@pytest.mark.filterwarnings("ignore::DeprecationWarning")
2328
async def test_uses_custom_event_loop_policy():
2429
assert isinstance(asyncio.get_event_loop_policy(), CustomEventLoopPolicy)

docs/reference/fixtures/event_loop_policy_example.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
import asyncio
2+
import warnings
3+
4+
with warnings.catch_warnings():
5+
warnings.simplefilter("ignore", DeprecationWarning)
6+
from asyncio import DefaultEventLoopPolicy
27

38
import pytest
49

510

6-
class CustomEventLoopPolicy(asyncio.DefaultEventLoopPolicy):
11+
class CustomEventLoopPolicy(DefaultEventLoopPolicy):
712
pass
813

914

@@ -13,5 +18,6 @@ def event_loop_policy(request):
1318

1419

1520
@pytest.mark.asyncio(loop_scope="module")
21+
@pytest.mark.filterwarnings("ignore::DeprecationWarning")
1622
async def test_uses_custom_event_loop_policy():
1723
assert isinstance(asyncio.get_event_loop_policy(), CustomEventLoopPolicy)

docs/reference/fixtures/event_loop_policy_parametrized_example.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
import asyncio
2-
from asyncio import DefaultEventLoopPolicy
2+
import warnings
3+
4+
with warnings.catch_warnings():
5+
warnings.simplefilter("ignore", DeprecationWarning)
6+
from asyncio import DefaultEventLoopPolicy
37

48
import pytest
59

610

7-
class CustomEventLoopPolicy(asyncio.DefaultEventLoopPolicy):
11+
class CustomEventLoopPolicy(DefaultEventLoopPolicy):
812
pass
913

1014

@@ -19,5 +23,6 @@ def event_loop_policy(request):
1923

2024

2125
@pytest.mark.asyncio
26+
@pytest.mark.filterwarnings("ignore::DeprecationWarning")
2227
async def test_uses_custom_event_loop_policy():
2328
assert isinstance(asyncio.get_event_loop_policy(), DefaultEventLoopPolicy)

docs/reference/markers/class_scoped_loop_custom_policies_strict_mode_example.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1-
import asyncio
1+
import warnings
2+
3+
with warnings.catch_warnings():
4+
warnings.simplefilter("ignore", DeprecationWarning)
5+
from asyncio import DefaultEventLoopPolicy
26

37
import pytest
48

59

610
@pytest.fixture(
711
params=[
8-
asyncio.DefaultEventLoopPolicy(),
9-
asyncio.DefaultEventLoopPolicy(),
12+
DefaultEventLoopPolicy(),
13+
DefaultEventLoopPolicy(),
1014
]
1115
)
1216
def event_loop_policy(request):

pytest_asyncio/plugin.py

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import socket
1212
import sys
1313
import warnings
14-
from asyncio import AbstractEventLoopPolicy
14+
from asyncio import AbstractEventLoop, AbstractEventLoopPolicy
1515
from collections.abc import (
1616
AsyncIterator,
1717
Awaitable,
@@ -675,17 +675,17 @@ def pytest_collectstart(collector: pytest.Collector) -> None:
675675

676676
@contextlib.contextmanager
677677
def _temporary_event_loop_policy(policy: AbstractEventLoopPolicy) -> Iterator[None]:
678-
old_loop_policy = asyncio.get_event_loop_policy()
678+
old_loop_policy = _get_event_loop_policy()
679679
try:
680680
old_loop = _get_event_loop_no_warn()
681681
except RuntimeError:
682682
old_loop = None
683-
asyncio.set_event_loop_policy(policy)
683+
_set_event_loop_policy(policy)
684684
try:
685685
yield
686686
finally:
687-
asyncio.set_event_loop_policy(old_loop_policy)
688-
asyncio.set_event_loop(old_loop)
687+
_set_event_loop_policy(old_loop_policy)
688+
_set_event_loop(old_loop)
689689

690690

691691
@pytest.hookimpl(tryfirst=True)
@@ -719,6 +719,18 @@ def pytest_generate_tests(metafunc: Metafunc) -> None:
719719
)
720720

721721

722+
def _get_event_loop_policy() -> AbstractEventLoopPolicy:
723+
with warnings.catch_warnings():
724+
warnings.simplefilter("ignore", DeprecationWarning)
725+
return asyncio.get_event_loop_policy()
726+
727+
728+
def _set_event_loop_policy(policy: AbstractEventLoopPolicy) -> None:
729+
with warnings.catch_warnings():
730+
warnings.simplefilter("ignore", DeprecationWarning)
731+
asyncio.set_event_loop_policy(policy)
732+
733+
722734
def _get_event_loop_no_warn(
723735
policy: AbstractEventLoopPolicy | None = None,
724736
) -> asyncio.AbstractEventLoop:
@@ -730,6 +742,12 @@ def _get_event_loop_no_warn(
730742
return asyncio.get_event_loop()
731743

732744

745+
def _set_event_loop(loop: AbstractEventLoop | None) -> None:
746+
with warnings.catch_warnings():
747+
warnings.simplefilter("ignore", DeprecationWarning)
748+
asyncio.set_event_loop(loop)
749+
750+
733751
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
734752
def pytest_pyfunc_call(pyfuncitem: Function) -> object | None:
735753
"""
@@ -906,7 +924,7 @@ def _scoped_event_loop(
906924
_temporary_event_loop_policy(new_loop_policy),
907925
_provide_event_loop() as loop,
908926
):
909-
asyncio.set_event_loop(loop)
927+
_set_event_loop(loop)
910928
yield loop
911929

912930
return _scoped_event_loop
@@ -920,7 +938,8 @@ def _scoped_event_loop(
920938

921939
@contextlib.contextmanager
922940
def _provide_event_loop() -> Iterator[asyncio.AbstractEventLoop]:
923-
loop = asyncio.get_event_loop_policy().new_event_loop()
941+
policy = _get_event_loop_policy()
942+
loop = policy.new_event_loop()
924943
try:
925944
yield loop
926945
finally:
@@ -937,7 +956,7 @@ def _provide_event_loop() -> Iterator[asyncio.AbstractEventLoop]:
937956
@pytest.fixture(scope="session", autouse=True)
938957
def event_loop_policy() -> AbstractEventLoopPolicy:
939958
"""Return an instance of the policy used to create asyncio event loops."""
940-
return asyncio.get_event_loop_policy()
959+
return _get_event_loop_policy()
941960

942961

943962
def is_async_test(item: Item) -> bool:

0 commit comments

Comments
 (0)