aboutsummaryrefslogtreecommitdiff
path: root/discord/utils.py
diff options
context:
space:
mode:
authorRapptz <[email protected]>2018-06-10 18:09:14 -0400
committerRapptz <[email protected]>2018-06-10 18:10:00 -0400
commitf25091efe1281aebe70189c61f9cac405b21a72f (patch)
treed0d13dad1a89de9f45845a36ea475098b7a0b494 /discord/utils.py
parentAdd Message.jump_to_url (diff)
downloaddiscord.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.py19
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()