# Copyright 2022 Amethyst Reese # Licensed under the MIT license import inspect import sys from typing import Awaitable, Union from .types import T if sys.version_info < (3, 8): # pragma: no cover from typing_extensions import Protocol else: # pragma: no cover from typing import Protocol class Orderable(Protocol): # pragma: no cover def __lt__(self, other): ... def __gt__(self, other): ... async def maybe_await(object: Union[Awaitable[T], T]) -> T: if inspect.isawaitable(object): return await object # type: ignore return object # type: ignore