Browse Source

Flatten AsyncIterator.flatten

pull/6628/head
James 4 years ago
committed by GitHub
parent
commit
fe54b3cb92
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 43
      discord/iterators.py

43
discord/iterators.py

@ -72,14 +72,7 @@ class _AsyncIterator:
return _FilteredAsyncIterator(self, predicate)
async def flatten(self):
ret = []
while True:
try:
item = await self.next()
except NoMoreItems:
return ret
else:
ret.append(item)
return [element async for element in self]
def __aiter__(self):
return self
@ -296,26 +289,6 @@ class HistoryIterator(_AsyncIterator):
self.retrieve = r
return r > 0
async def flatten(self):
# this is similar to fill_messages except it uses a list instead
# of a queue to place the messages in.
result = []
channel = await self.messageable._get_channel()
self.channel = channel
while self._get_retrieve():
data = await self._retrieve_messages(self.retrieve)
if len(data) < 100:
self.limit = 0 # terminate the infinite loop
if self.reverse:
data = reversed(data)
if self._filter:
data = filter(self._filter, data)
for element in data:
result.append(self.state.create_message(channel=channel, data=element))
return result
async def fill_messages(self):
if not hasattr(self, 'channel'):
# do the required set up
@ -550,20 +523,6 @@ class GuildIterator(_AsyncIterator):
from .guild import Guild
return Guild(state=self.state, data=data)
async def flatten(self):
result = []
while self._get_retrieve():
data = await self._retrieve_guilds(self.retrieve)
if len(data) < 100:
self.limit = 0
if self._filter:
data = filter(self._filter, data)
for element in data:
result.append(self.create_guild(element))
return result
async def fill_guilds(self):
if self._get_retrieve():
data = await self._retrieve_guilds(self.retrieve)

Loading…
Cancel
Save