mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-25 19:03:46 +03:00
Return helpers.TotalList instances on client.get_ methods
This commit is contained in:
parent
a1837431b6
commit
7cce7aa3e4
|
@ -27,6 +27,15 @@ telethon\.utils module
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
|
|
||||||
|
|
||||||
|
telethon\.helpers module
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
.. automodule:: telethon.helpers
|
||||||
|
:members:
|
||||||
|
:undoc-members:
|
||||||
|
:show-inheritance:
|
||||||
|
|
||||||
|
|
||||||
telethon\.events package
|
telethon\.events package
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ class BotMethods(UserMethods):
|
||||||
geo_point=geo_point
|
geo_point=geo_point
|
||||||
))
|
))
|
||||||
|
|
||||||
# TODO Custom InlineResults(UserList) class with more information
|
# TODO Custom InlineResults(list) class with more information
|
||||||
return [
|
return [
|
||||||
custom.InlineResult(self, x, query_id=result.query_id)
|
custom.InlineResult(self, x, query_id=result.query_id)
|
||||||
for x in result.results
|
for x in result.results
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
from collections import UserList
|
|
||||||
|
|
||||||
from async_generator import async_generator, yield_
|
from async_generator import async_generator, yield_
|
||||||
|
|
||||||
from .users import UserMethods
|
from .users import UserMethods
|
||||||
from .. import utils
|
from .. import utils, helpers
|
||||||
from ..tl import types, functions
|
from ..tl import types, functions
|
||||||
|
|
||||||
|
|
||||||
|
@ -169,12 +167,12 @@ class ChatMethods(UserMethods):
|
||||||
|
|
||||||
async def get_participants(self, *args, **kwargs):
|
async def get_participants(self, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
Same as :meth:`iter_participants`, but returns a list instead
|
Same as `iter_participants`, but returns a
|
||||||
with an additional ``.total`` attribute on the list.
|
`TotalList <telethon.helpers.TotalList>` instead.
|
||||||
"""
|
"""
|
||||||
total = [0]
|
total = [0]
|
||||||
kwargs['_total'] = total
|
kwargs['_total'] = total
|
||||||
participants = UserList()
|
participants = helpers.TotalList()
|
||||||
async for x in self.iter_participants(*args, **kwargs):
|
async for x in self.iter_participants(*args, **kwargs):
|
||||||
participants.append(x)
|
participants.append(x)
|
||||||
participants.total = total[0]
|
participants.total = total[0]
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
import itertools
|
import itertools
|
||||||
from collections import UserList
|
|
||||||
|
|
||||||
from async_generator import async_generator, yield_
|
from async_generator import async_generator, yield_
|
||||||
|
|
||||||
from .users import UserMethods
|
from .users import UserMethods
|
||||||
from .. import utils
|
from .. import utils, helpers
|
||||||
from ..tl import types, functions, custom
|
from ..tl import types, functions, custom
|
||||||
|
|
||||||
|
|
||||||
|
@ -124,12 +123,12 @@ class DialogMethods(UserMethods):
|
||||||
|
|
||||||
async def get_dialogs(self, *args, **kwargs):
|
async def get_dialogs(self, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
Same as :meth:`iter_dialogs`, but returns a list instead
|
Same as `iter_dialogs`, but returns a
|
||||||
with an additional ``.total`` attribute on the list.
|
`TotalList <telethon.helpers.TotalList>` instead.
|
||||||
"""
|
"""
|
||||||
total = [0]
|
total = [0]
|
||||||
kwargs['_total'] = total
|
kwargs['_total'] = total
|
||||||
dialogs = UserList()
|
dialogs = helpers.TotalList()
|
||||||
async for x in self.iter_dialogs(*args, **kwargs):
|
async for x in self.iter_dialogs(*args, **kwargs):
|
||||||
dialogs.append(x)
|
dialogs.append(x)
|
||||||
dialogs.total = total[0]
|
dialogs.total = total[0]
|
||||||
|
|
|
@ -2,14 +2,13 @@ import asyncio
|
||||||
import itertools
|
import itertools
|
||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
from collections import UserList
|
|
||||||
|
|
||||||
from async_generator import async_generator, yield_
|
from async_generator import async_generator, yield_
|
||||||
|
|
||||||
from .messageparse import MessageParseMethods
|
from .messageparse import MessageParseMethods
|
||||||
from .uploads import UploadMethods
|
from .uploads import UploadMethods
|
||||||
from .buttons import ButtonMethods
|
from .buttons import ButtonMethods
|
||||||
from .. import utils
|
from .. import utils, helpers
|
||||||
from ..tl import types, functions, custom
|
from ..tl import types, functions, custom
|
||||||
|
|
||||||
__log__ = logging.getLogger(__name__)
|
__log__ = logging.getLogger(__name__)
|
||||||
|
@ -323,8 +322,8 @@ class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods):
|
||||||
|
|
||||||
async def get_messages(self, *args, **kwargs):
|
async def get_messages(self, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
Same as :meth:`iter_messages`, but returns a list instead
|
Same as `iter_messages`, but returns a
|
||||||
with an additional ``.total`` attribute on the list.
|
`TotalList <telethon.helpers.TotalList>` instead.
|
||||||
|
|
||||||
If the `limit` is not set, it will be 1 by default unless both
|
If the `limit` is not set, it will be 1 by default unless both
|
||||||
`min_id` **and** `max_id` are set (as *named* arguments), in
|
`min_id` **and** `max_id` are set (as *named* arguments), in
|
||||||
|
@ -346,7 +345,7 @@ class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods):
|
||||||
else:
|
else:
|
||||||
kwargs['limit'] = 1
|
kwargs['limit'] = 1
|
||||||
|
|
||||||
msgs = UserList()
|
msgs = helpers.TotalList()
|
||||||
async for x in self.iter_messages(*args, **kwargs):
|
async for x in self.iter_messages(*args, **kwargs):
|
||||||
msgs.append(x)
|
msgs.append(x)
|
||||||
msgs.total = total[0]
|
msgs.total = total[0]
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
"""Various helpers not related to the Telegram API itself"""
|
"""Various helpers not related to the Telegram API itself"""
|
||||||
|
import collections
|
||||||
import os
|
import os
|
||||||
import struct
|
import struct
|
||||||
from hashlib import sha1, sha256
|
from hashlib import sha1, sha256
|
||||||
|
@ -65,3 +66,25 @@ def get_password_hash(pw, current_salt):
|
||||||
return sha256(pw_hash).digest()
|
return sha256(pw_hash).digest()
|
||||||
|
|
||||||
# endregion
|
# endregion
|
||||||
|
|
||||||
|
# region Custom Classes
|
||||||
|
|
||||||
|
class TotalList(list):
|
||||||
|
"""
|
||||||
|
A list with an extra `total` property, which may not match its `len`
|
||||||
|
since the total represents the total amount of items *available*
|
||||||
|
somewhere else, not the items *in this list*.
|
||||||
|
"""
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.total = 0
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return '[{}, total={}]'.format(
|
||||||
|
', '.join(str(x) for x in self), self.total)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return '[{}, total={}]'.format(
|
||||||
|
', '.join(repr(x) for x in self), self.total)
|
||||||
|
|
||||||
|
# endregion
|
||||||
|
|
|
@ -10,7 +10,6 @@ import mimetypes
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import struct
|
import struct
|
||||||
from collections import UserList
|
|
||||||
from mimetypes import guess_extension
|
from mimetypes import guess_extension
|
||||||
from types import GeneratorType
|
from types import GeneratorType
|
||||||
|
|
||||||
|
@ -603,8 +602,7 @@ def is_list_like(obj):
|
||||||
enough. Things like ``open()`` are also iterable (and probably many
|
enough. Things like ``open()`` are also iterable (and probably many
|
||||||
other things), so just support the commonly known list-like objects.
|
other things), so just support the commonly known list-like objects.
|
||||||
"""
|
"""
|
||||||
return isinstance(obj, (list, tuple, set, dict,
|
return isinstance(obj, (list, tuple, set, dict, GeneratorType))
|
||||||
UserList, GeneratorType))
|
|
||||||
|
|
||||||
|
|
||||||
def parse_phone(phone):
|
def parse_phone(phone):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user