diff --git a/telethon/tl/custom/message.py b/telethon/tl/custom/message.py index 4dcde78a..f089d061 100644 --- a/telethon/tl/custom/message.py +++ b/telethon/tl/custom/message.py @@ -8,7 +8,7 @@ from ... import utils, errors # TODO Figure out a way to have the code generator error on missing fields # Maybe parsing the init function alone if that's possible. -class Message(abc.ABC, TLObject, ChatGetter, SenderGetter): +class Message(ChatGetter, SenderGetter, TLObject, abc.ABC): """ This custom class aggregates both :tl:`Message` and :tl:`MessageService` to ease accessing their members. diff --git a/telethon/tl/tlobject.py b/telethon/tl/tlobject.py index 772a9ea3..234b33e0 100644 --- a/telethon/tl/tlobject.py +++ b/telethon/tl/tlobject.py @@ -3,7 +3,7 @@ import struct from datetime import datetime, date, timedelta -class TLObject(abc.ABC): +class TLObject: CONSTRUCTOR_ID = None SUBCLASS_OF_ID = None @@ -141,21 +141,18 @@ class TLObject(abc.ABC): def stringify(self): return TLObject.pretty_format(self, indent=0) - @abc.abstractmethod def to_dict(self): raise NotImplementedError - @abc.abstractmethod def __bytes__(self): raise NotImplementedError @classmethod - @abc.abstractmethod def from_reader(cls, reader): raise NotImplementedError -class TLRequest(abc.ABC, TLObject): +class TLRequest(TLObject): """ Represents a content-related `TLObject` (a request that can be sent). """ diff --git a/telethon/utils.py b/telethon/utils.py index b5affe9b..8e280739 100644 --- a/telethon/utils.py +++ b/telethon/utils.py @@ -7,12 +7,13 @@ import math import mimetypes import os import re -import types from collections import UserList from mimetypes import guess_extension +from types import GeneratorType from .extensions import markdown, html from .helpers import add_surrogate, del_surrogate +from .tl import types from .tl.types import ( Channel, ChannelForbidden, Chat, ChatEmpty, ChatForbidden, ChatFull, ChatPhoto, InputPeerChannel, InputPeerChat, InputPeerUser, InputPeerEmpty, @@ -23,7 +24,7 @@ from .tl.types import ( MessageMediaUnsupported, MessageMediaVenue, InputMediaContact, InputMediaDocument, InputMediaEmpty, InputMediaGame, InputMediaGeoPoint, InputMediaPhoto, InputMediaVenue, InputDocument, - DocumentEmpty, InputDocumentEmpty, Message, GeoPoint, InputGeoPoint, + DocumentEmpty, InputDocumentEmpty, GeoPoint, InputGeoPoint, GeoPointEmpty, InputGeoPointEmpty, Photo, InputPhoto, PhotoEmpty, InputPhotoEmpty, FileLocation, ChatPhotoEmpty, UserProfilePhotoEmpty, FileLocationUnavailable, InputMediaUploadedDocument, ChannelFull, @@ -256,7 +257,7 @@ def get_input_document(document): if isinstance(document, MessageMediaDocument): return get_input_document(document.document) - if isinstance(document, Message): + if isinstance(document, types.Message): return get_input_document(document.media) _raise_cast_fail(document, 'InputDocument') @@ -299,7 +300,7 @@ def get_input_geo(geo): if isinstance(geo, MessageMediaGeo): return get_input_geo(geo.geo) - if isinstance(geo, Message): + if isinstance(geo, types.Message): return get_input_geo(geo.media) _raise_cast_fail(geo, 'InputGeoPoint') @@ -390,7 +391,7 @@ def get_input_media(media, is_photo=False): ChatPhotoEmpty, UserProfilePhotoEmpty, FileLocationUnavailable)): return InputMediaEmpty() - if isinstance(media, Message): + if isinstance(media, types.Message): return get_input_media(media.media, is_photo=is_photo) _raise_cast_fail(media, 'InputMedia') @@ -549,7 +550,7 @@ def get_input_location(location): except AttributeError: _raise_cast_fail(location, 'InputFileLocation') - if isinstance(location, Message): + if isinstance(location, types.Message): location = location.media if isinstance(location, MessageMediaDocument): @@ -622,7 +623,7 @@ def is_list_like(obj): other things), so just support the commonly known list-like objects. """ return isinstance(obj, (list, tuple, set, dict, - UserList, types.GeneratorType)) + UserList, GeneratorType)) def parse_phone(phone):