diff options
| author | Rapptz <[email protected]> | 2018-06-10 18:09:14 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2018-06-10 18:10:00 -0400 |
| commit | f25091efe1281aebe70189c61f9cac405b21a72f (patch) | |
| tree | d0d13dad1a89de9f45845a36ea475098b7a0b494 /discord/utils.py | |
| parent | Add Message.jump_to_url (diff) | |
| download | discord.py-f25091efe1281aebe70189c61f9cac405b21a72f.tar.xz discord.py-f25091efe1281aebe70189c61f9cac405b21a72f.zip | |
Drop support for Python 3.4 and make minimum version 3.5.2.
Diffstat (limited to 'discord/utils.py')
| -rw-r--r-- | discord/utils.py | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/discord/utils.py b/discord/utils.py index ee612ecc..5c939922 100644 --- a/discord/utils.py +++ b/discord/utils.py @@ -29,6 +29,7 @@ from .errors import InvalidArgument import datetime from base64 import b64encode from email.utils import parsedate_to_datetime +from inspect import isawaitable as _isawaitable import asyncio import json import warnings, functools @@ -264,27 +265,23 @@ def _parse_ratelimit_header(request): reset = datetime.datetime.fromtimestamp(int(request.headers['X-Ratelimit-Reset']), datetime.timezone.utc) return (reset - now).total_seconds() -def maybe_coroutine(f, *args, **kwargs): +async def maybe_coroutine(f, *args, **kwargs): value = f(*args, **kwargs) - if asyncio.iscoroutine(value): - return (yield from value) + if _isawaitable(value): + return (await value) else: return value -def async_all(gen): - check = asyncio.iscoroutine +async def async_all(gen, *, check=_isawaitable): for elem in gen: if check(elem): - elem = yield from elem + elem = await elem if not elem: return False return True -def sane_wait_for(futures, *, timeout, loop): - done, pending = yield from asyncio.wait(futures, timeout=timeout, loop=loop) +async def sane_wait_for(futures, *, timeout, loop): + done, pending = await asyncio.wait(futures, timeout=timeout, loop=loop) if len(pending) != 0: raise asyncio.TimeoutError() |