diff --git a/tests/asyncio_legacy.py b/tests/asyncio_legacy.py deleted file mode 100644 index bc054b7e36e..00000000000 --- a/tests/asyncio_legacy.py +++ /dev/null @@ -1,128 +0,0 @@ -"""Minimal legacy asyncio.coroutine.""" - -# flake8: noqa -# stubbing out for integrations that have -# not yet been updated for python 3.11 -# but can still run on python 3.10 -# -# Remove this once rflink, fido, and blackbird -# have had their libraries updated to remove -# asyncio.coroutine -from asyncio import base_futures, constants, format_helpers -from asyncio.coroutines import _is_coroutine -import collections.abc -import functools -import inspect -import logging -import traceback -import types -import warnings - -logger = logging.getLogger(__name__) - - -class CoroWrapper: - # Wrapper for coroutine object in _DEBUG mode. - - def __init__(self, gen, func=None): - assert inspect.isgenerator(gen) or inspect.iscoroutine(gen), gen - self.gen = gen - self.func = func # Used to unwrap @coroutine decorator - self._source_traceback = format_helpers.extract_stack(sys._getframe(1)) - self.__name__ = getattr(gen, "__name__", None) - self.__qualname__ = getattr(gen, "__qualname__", None) - - def __iter__(self): - return self - - def __next__(self): - return self.gen.send(None) - - def send(self, value): - return self.gen.send(value) - - def throw(self, type, value=None, traceback=None): - return self.gen.throw(type, value, traceback) - - def close(self): - return self.gen.close() - - @property - def gi_frame(self): - return self.gen.gi_frame - - @property - def gi_running(self): - return self.gen.gi_running - - @property - def gi_code(self): - return self.gen.gi_code - - def __await__(self): - return self - - @property - def gi_yieldfrom(self): - return self.gen.gi_yieldfrom - - def __del__(self): - # Be careful accessing self.gen.frame -- self.gen might not exist. - gen = getattr(self, "gen", None) - frame = getattr(gen, "gi_frame", None) - if frame is not None and frame.f_lasti == -1: - msg = f"{self!r} was never yielded from" - tb = getattr(self, "_source_traceback", ()) - if tb: - tb = "".join(traceback.format_list(tb)) - msg += ( - f"\nCoroutine object created at " - f"(most recent call last, truncated to " - f"{constants.DEBUG_STACK_DEPTH} last lines):\n" - ) - msg += tb.rstrip() - logger.error(msg) - - -def legacy_coroutine(func): - """Decorator to mark coroutines. - If the coroutine is not yielded from before it is destroyed, - an error message is logged. - """ - warnings.warn( - '"@coroutine" decorator is deprecated since Python 3.8, use "async def" instead', - DeprecationWarning, - stacklevel=2, - ) - if inspect.iscoroutinefunction(func): - # In Python 3.5 that's all we need to do for coroutines - # defined with "async def". - return func - - if inspect.isgeneratorfunction(func): - coro = func - else: - - @functools.wraps(func) - def coro(*args, **kw): - res = func(*args, **kw) - if ( - base_futures.isfuture(res) - or inspect.isgenerator(res) - or isinstance(res, CoroWrapper) - ): - res = yield from res - else: - # If 'res' is an awaitable, run it. - try: - await_meth = res.__await__ - except AttributeError: - pass - else: - if isinstance(res, collections.abc.Awaitable): - res = yield from await_meth() - return res - - wrapper = types.coroutine(coro) - wrapper._is_coroutine = _is_coroutine # For iscoroutinefunction(). - return wrapper diff --git a/tests/conftest.py b/tests/conftest.py index 0307e65d272..32b6f98ca72 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -11,7 +11,6 @@ import itertools import logging import sqlite3 import ssl -import sys import threading from typing import TYPE_CHECKING, Any, ParamSpec, TypeVar, cast from unittest.mock import AsyncMock, MagicMock, Mock, patch @@ -108,11 +107,6 @@ asyncio.set_event_loop_policy(runner.HassEventLoopPolicy(False)) # Disable fixtures overriding our beautiful policy asyncio.set_event_loop_policy = lambda policy: None -if sys.version_info[:2] >= (3, 11): - from .asyncio_legacy import legacy_coroutine - - setattr(asyncio, "coroutine", legacy_coroutine) - def _utcnow() -> datetime.datetime: """Make utcnow patchable by freezegun."""