diff options
| author | Rapptz <[email protected]> | 2017-02-12 12:13:23 -0500 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2017-02-12 12:13:23 -0500 |
| commit | 47ef657fbd84d3fc89d9ef012c4c5c8d4318d4fd (patch) | |
| tree | 451d6652cdbe5d59e162063ea6bb911d46421713 /discord/iterators.py | |
| parent | Implement utilities for AsyncIterator. (diff) | |
| download | discord.py-47ef657fbd84d3fc89d9ef012c4c5c8d4318d4fd.tar.xz discord.py-47ef657fbd84d3fc89d9ef012c4c5c8d4318d4fd.zip | |
Implement async checks. Fixes #380.
Diffstat (limited to 'discord/iterators.py')
| -rw-r--r-- | discord/iterators.py | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/discord/iterators.py b/discord/iterators.py index 31d72569..97d9c27b 100644 --- a/discord/iterators.py +++ b/discord/iterators.py @@ -30,18 +30,11 @@ import aiohttp import datetime from .errors import NoMoreItems -from .utils import time_snowflake +from .utils import time_snowflake, maybe_coroutine from .object import Object PY35 = sys.version_info >= (3, 5) -def _probably_coroutine(f, e): - if asyncio.iscoroutinefunction(f): - return (yield from f(e)) - else: - return f(e) - class _AsyncIterator: __slots__ = () @@ -67,7 +60,7 @@ class _AsyncIterator: except NoMoreItems: return None - ret = yield from _probably_coroutine(predicate, elem) + ret = yield from maybe_coroutine(predicate, elem) if ret: return elem @@ -114,7 +107,7 @@ class _MappedAsyncIterator(_AsyncIterator): def get(self): # this raises NoMoreItems and will propagate appropriately item = yield from self.iterator.get() - return (yield from _probably_coroutine(self.func, item)) + return (yield from maybe_coroutine(self.func, item)) class _FilteredAsyncIterator(_AsyncIterator): def __init__(self, iterator, predicate): @@ -132,7 +125,7 @@ class _FilteredAsyncIterator(_AsyncIterator): while True: # propagate NoMoreItems similar to _MappedAsyncIterator item = yield from getter() - ret = yield from _probably_coroutine(pred, item) + ret = yield from maybe_coroutine(pred, item) if ret: return item |