tokencrawler/.venv/lib/python3.9/site-packages/anyio/abc/_testing.py
2022-03-17 22:16:30 +01:00

37 lines
1.1 KiB
Python

import types
from abc import ABCMeta, abstractmethod
from typing import Any, Awaitable, Callable, Dict, Optional, Type, TypeVar
_T = TypeVar("_T")
class TestRunner(metaclass=ABCMeta):
"""
Encapsulates a running event loop. Every call made through this object will use the same event
loop.
"""
def __enter__(self) -> 'TestRunner':
return self
def __exit__(self, exc_type: Optional[Type[BaseException]],
exc_val: Optional[BaseException],
exc_tb: Optional[types.TracebackType]) -> Optional[bool]:
self.close()
return None
@abstractmethod
def close(self) -> None:
"""Close the event loop."""
@abstractmethod
def call(self, func: Callable[..., Awaitable[_T]],
*args: object, **kwargs: Dict[str, Any]) -> _T:
"""
Call the given function within the backend's event loop.
:param func: a callable returning an awaitable
:param args: positional arguments to call ``func`` with
:param kwargs: keyword arguments to call ``func`` with
:return: the return value of ``func``
"""