mirror of
				https://github.com/Rapptz/discord.py.git
				synced 2025-11-03 23:12:56 +00:00 
			
		
		
		
	Flatten AsyncIterator.flatten
This commit is contained in:
		@@ -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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user