Flatten AsyncIterator.flatten
This commit is contained in:
parent
54288879e2
commit
fe54b3cb92
@ -72,14 +72,7 @@ class _AsyncIterator:
|
|||||||
return _FilteredAsyncIterator(self, predicate)
|
return _FilteredAsyncIterator(self, predicate)
|
||||||
|
|
||||||
async def flatten(self):
|
async def flatten(self):
|
||||||
ret = []
|
return [element async for element in self]
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
item = await self.next()
|
|
||||||
except NoMoreItems:
|
|
||||||
return ret
|
|
||||||
else:
|
|
||||||
ret.append(item)
|
|
||||||
|
|
||||||
def __aiter__(self):
|
def __aiter__(self):
|
||||||
return self
|
return self
|
||||||
@ -296,26 +289,6 @@ class HistoryIterator(_AsyncIterator):
|
|||||||
self.retrieve = r
|
self.retrieve = r
|
||||||
return r > 0
|
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):
|
async def fill_messages(self):
|
||||||
if not hasattr(self, 'channel'):
|
if not hasattr(self, 'channel'):
|
||||||
# do the required set up
|
# do the required set up
|
||||||
@ -550,20 +523,6 @@ class GuildIterator(_AsyncIterator):
|
|||||||
from .guild import Guild
|
from .guild import Guild
|
||||||
return Guild(state=self.state, data=data)
|
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):
|
async def fill_guilds(self):
|
||||||
if self._get_retrieve():
|
if self._get_retrieve():
|
||||||
data = await self._retrieve_guilds(self.retrieve)
|
data = await self._retrieve_guilds(self.retrieve)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user