Remove __slots__ from Pyrogram types

This commit is contained in:
Dan 2019-08-02 00:33:48 +02:00
parent aa135ea457
commit 67112a34e9
51 changed files with 3 additions and 144 deletions

View File

@ -25,7 +25,5 @@ class CallbackGame(Object):
Use BotFather to set up your game.
"""
__slots__ = []
def __init__(self):
super().__init__()

View File

@ -61,8 +61,6 @@ class CallbackQuery(Object, Update):
"""
__slots__ = ["id", "from_user", "chat_instance", "message", "inline_message_id", "data", "game_short_name"]
def __init__(
self,
*,

View File

@ -37,8 +37,6 @@ class ForceReply(Object):
2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.
"""
__slots__ = ["selective"]
def __init__(
self,
selective: bool = None

View File

@ -37,8 +37,6 @@ class GameHighScore(Object):
Position in high score table for the game.
"""
__slots__ = ["user", "score", "position"]
def __init__(
self,
*,

View File

@ -59,10 +59,6 @@ class InlineKeyboardButton(Object):
# TODO: Add callback_game and pay fields
__slots__ = [
"text", "url", "callback_data", "switch_inline_query", "switch_inline_query_current_chat", "callback_game"
]
def __init__(
self,
text: str,

View File

@ -32,8 +32,6 @@ class InlineKeyboardMarkup(Object):
List of button rows, each represented by a List of InlineKeyboardButton objects.
"""
__slots__ = ["inline_keyboard"]
def __init__(
self,
inline_keyboard: List[List[InlineKeyboardButton]]

View File

@ -41,8 +41,6 @@ class KeyboardButton(Object):
Available in private chats only.
"""
__slots__ = ["text", "request_contact", "request_location"]
def __init__(
self,
text: str,

View File

@ -50,8 +50,6 @@ class ReplyKeyboardMarkup(Object):
select the new language. Other users in the group don't see the keyboard.
"""
__slots__ = ["keyboard", "resize_keyboard", "one_time_keyboard", "selective"]
def __init__(
self,
keyboard: List[List[Union[KeyboardButton, str]]],

View File

@ -38,8 +38,6 @@ class ReplyKeyboardRemove(Object):
keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.
"""
__slots__ = ["selective"]
def __init__(
self,
selective: bool = None

View File

@ -48,7 +48,6 @@ class InlineQuery(Object, Update):
location (:obj:`Location`. *optional*):
Sender location, only for bots that request user location.
"""
__slots__ = ["id", "from_user", "query", "offset", "location"]
def __init__(
self,

View File

@ -53,8 +53,6 @@ class InlineQueryResult(Object):
- :obj:`InlineQueryResultAnimation`
"""
__slots__ = ["type", "id", "input_message_content", "reply_markup"]
def __init__(
self,
type: str,

View File

@ -68,11 +68,6 @@ class InlineQueryResultAnimation(InlineQueryResult):
Content of the message to be sent instead of the photo.
"""
__slots__ = [
"animation_url", "thumb_url", "title", "description", "caption", "parse_mode", "reply_markup",
"input_message_content"
]
def __init__(
self,
animation_url: str,

View File

@ -49,8 +49,6 @@ class InlineQueryResultArticle(InlineQueryResult):
Inline keyboard attached to the message.
"""
__slots__ = ["title", "url", "description", "thumb_url"]
def __init__(
self,
title: str,

View File

@ -68,11 +68,6 @@ class InlineQueryResultPhoto(InlineQueryResult):
Content of the message to be sent instead of the photo.
"""
__slots__ = [
"photo_url", "thumb_url", "title", "description", "caption", "parse_mode", "reply_markup",
"input_message_content"
]
def __init__(
self,
photo_url: str,

View File

@ -30,7 +30,6 @@ class InputMedia(Object):
- :obj:`InputMediaPhoto`
- :obj:`InputMediaVideo`
"""
__slots__ = ["media", "caption", "parse_mode"]
def __init__(self, media: str, caption: str, parse_mode: str):
super().__init__()

View File

@ -56,8 +56,6 @@ class InputMediaAnimation(InputMedia):
Animation duration.
"""
__slots__ = ["thumb", "width", "height", "duration"]
def __init__(
self,
media: str,

View File

@ -58,8 +58,6 @@ class InputMediaAudio(InputMedia):
Title of the audio
"""
__slots__ = ["thumb", "duration", "performer", "title"]
def __init__(
self,
media: str,

View File

@ -47,8 +47,6 @@ class InputMediaDocument(InputMedia):
Pass None to completely disable style parsing.
"""
__slots__ = ["thumb"]
def __init__(
self,
media: str,

View File

@ -43,8 +43,6 @@ class InputMediaPhoto(InputMedia):
Pass None to completely disable style parsing.
"""
__slots__ = []
def __init__(
self,
media: str,

View File

@ -61,8 +61,6 @@ class InputMediaVideo(InputMedia):
Pass True, if the uploaded video is suitable for streaming.
"""
__slots__ = ["thumb", "width", "height", "duration", "supports_streaming"]
def __init__(
self,
media: str,

View File

@ -37,8 +37,6 @@ class InputPhoneContact(Object):
Contact's last name
"""
__slots__ = []
def __init__(self, phone: str, first_name: str, last_name: str = ""):
super().__init__(None)

View File

@ -31,8 +31,6 @@ class InputMessageContent(Object):
- :obj:`InputTextMessageContent`
"""
__slots__ = []
def __init__(self):
super().__init__()

View File

@ -41,8 +41,6 @@ class InputTextMessageContent(InputMessageContent):
Disables link previews for links in this message.
"""
__slots__ = ["message_text", "parse_mode", "disable_web_page_preview"]
def __init__(self, message_text: str, parse_mode: Union[str, None] = object, disable_web_page_preview: bool = None):
super().__init__()

View File

@ -58,8 +58,6 @@ class Animation(Object):
Animation thumbnails.
"""
__slots__ = ["file_id", "file_name", "mime_type", "file_size", "date", "width", "height", "duration", "thumbs"]
def __init__(
self,
*,

View File

@ -58,10 +58,6 @@ class Audio(Object):
Thumbnails of the music file album cover.
"""
__slots__ = [
"file_id", "file_name", "mime_type", "file_size", "date", "duration", "performer", "title", "thumbs"
]
def __init__(
self,
*,

View File

@ -42,8 +42,6 @@ class Contact(Object):
Additional data about the contact in the form of a vCard.
"""
__slots__ = ["phone_number", "first_name", "last_name", "user_id", "vcard"]
def __init__(
self,
*,

View File

@ -49,8 +49,6 @@ class Document(Object):
Document thumbnails as defined by sender.
"""
__slots__ = ["file_id", "file_name", "mime_type", "file_size", "date", "thumbs"]
def __init__(
self,
*,

View File

@ -48,8 +48,6 @@ class Game(Object):
Upload via BotFather.
"""
__slots__ = ["id", "title", "short_name", "description", "photo", "animation"]
def __init__(
self,
*,

View File

@ -33,8 +33,6 @@ class Location(Object):
Latitude as defined by sender.
"""
__slots__ = ["longitude", "latitude"]
def __init__(
self,
*,

View File

@ -264,17 +264,6 @@ class Message(Object, Update):
# TODO: Add game missing field. Also invoice, successful_payment, connected_website
__slots__ = [
"message_id", "date", "chat", "from_user", "forward_from", "forward_sender_name", "forward_from_chat",
"forward_from_message_id", "forward_signature", "forward_date", "reply_to_message", "mentioned", "empty",
"service", "media", "edit_date", "media_group_id", "author_signature", "text", "entities", "caption_entities",
"audio", "document", "photo", "sticker", "animation", "game", "video", "voice", "video_note", "caption",
"contact", "location", "venue", "web_page", "poll", "new_chat_members", "left_chat_member", "new_chat_title",
"new_chat_photo", "delete_chat_photo", "group_chat_created", "supergroup_chat_created", "channel_chat_created",
"migrate_to_chat_id", "migrate_from_chat_id", "pinned_message", "game_high_score", "views", "via_bot",
"outgoing", "matches", "command", "reply_markup"
]
def __init__(
self,
*,

View File

@ -47,8 +47,6 @@ class MessageEntity(Object):
For "text_mention" only, the mentioned user.
"""
__slots__ = ["type", "offset", "length", "url", "user"]
ENTITIES = {
types.MessageEntityMention.ID: "mention",
types.MessageEntityHashtag.ID: "hashtag",

View File

@ -49,8 +49,6 @@ class Photo(Object):
Available thumbnails of this photo.
"""
__slots__ = ["file_id", "width", "height", "file_size", "date", "thumbs"]
def __init__(
self,
*,

View File

@ -48,8 +48,6 @@ class Poll(Object, Update):
Index of your chosen option (0-9), None in case you haven't voted yet.
"""
__slots__ = ["id", "question", "options", "is_closed", "total_voters", "chosen_option"]
def __init__(
self,
*,

View File

@ -35,8 +35,6 @@ class PollOption(Object):
The data this poll option is holding.
"""
__slots__ = ["text", "voter_count", "data"]
def __init__(
self,
*,

View File

@ -65,10 +65,6 @@ class Sticker(Object):
# TODO: Add mask position
__slots__ = [
"file_id", "file_name", "mime_type", "file_size", "date", "width", "height", "emoji", "set_name", "thumbs"
]
def __init__(
self,
*,

View File

@ -29,8 +29,6 @@ class StrippedThumbnail(Object):
Thumbnail data
"""
__slots__ = ["data"]
def __init__(
self,
*,

View File

@ -43,8 +43,6 @@ class Thumbnail(Object):
File size.
"""
__slots__ = ["file_id", "width", "height", "file_size"]
def __init__(
self,
*,

View File

@ -44,8 +44,6 @@ class Venue(Object):
"""
__slots__ = ["location", "title", "address", "foursquare_id", "foursquare_type"]
def __init__(
self,
*,

View File

@ -61,11 +61,6 @@ class Video(Object):
Video thumbnails.
"""
__slots__ = [
"file_id", "width", "height", "duration", "file_name", "mime_type", "supports_streaming", "file_size", "date",
"thumbs"
]
def __init__(
self,
*,

View File

@ -52,8 +52,6 @@ class VideoNote(Object):
Video thumbnails.
"""
__slots__ = ["file_id", "mime_type", "file_size", "date", "length", "duration", "thumbs"]
def __init__(
self,
*,

View File

@ -47,8 +47,6 @@ class Voice(Object):
Date the voice was sent in Unix time.
"""
__slots__ = ["file_id", "duration", "waveform", "mime_type", "file_size", "date"]
def __init__(
self,
*,

View File

@ -83,12 +83,6 @@ class WebPage(Object):
Author of the webpage, eg the Twitter user for a tweet, or the author in an article.
"""
__slots__ = [
"id", "url", "display_url", "type", "site_name", "title", "description",
"audio", "document", "photo", "animation", "video",
"embed_url", "embed_type", "embed_width", "embed_height", "duration", "author"
]
def __init__(
self,
*,

View File

@ -29,8 +29,6 @@ class Meta(type, metaclass=type("", (type,), {"__str__": lambda _: "~hi"})):
class Object(metaclass=Meta):
__slots__ = ["_client"]
def __init__(self, client: "pyrogram.BaseClient" = None):
self._client = client
@ -50,7 +48,7 @@ class Object(metaclass=Meta):
else (attr, str(datetime.fromtimestamp(getattr(obj, attr))))
if attr.endswith("date")
else (attr, getattr(obj, attr))
for attr in getattr(obj, "__slots__", [])
for attr in filter(lambda x: not x.startswith("_"), obj.__dict__)
if getattr(obj, attr) is not None
]
)
@ -63,13 +61,13 @@ class Object(metaclass=Meta):
self.__class__.__name__,
", ".join(
"{}={}".format(attr, repr(getattr(self, attr)))
for attr in self.__slots__
for attr in filter(lambda x: not x.startswith("_"), self.__dict__)
if getattr(self, attr) is not None
)
)
def __eq__(self, other: "Object") -> bool:
for attr in self.__slots__:
for attr in self.__dict__:
try:
if getattr(self, attr) != getattr(other, attr):
return False

View File

@ -26,8 +26,6 @@ class ContinuePropagation(StopIteration):
class Update:
__slots__ = []
def stop_propagation(self):
raise StopPropagation

View File

@ -95,12 +95,6 @@ class Chat(Object):
Information about the chat default permissions, for groups and supergroups.
"""
__slots__ = [
"id", "type", "is_verified", "is_restricted", "is_scam", "is_support", "title", "username", "first_name",
"last_name", "photo", "description", "invite_link", "pinned_message", "sticker_set_name", "can_set_sticker_set",
"members_count", "restriction_reason", "permissions"
]
def __init__(
self,
*,

View File

@ -54,8 +54,6 @@ class ChatMember(Object):
Information about the member permissions.
"""
__slots__ = ["user", "status", "date", "is_member", "invited_by", "promoted_by", "restricted_by", "permissions"]
def __init__(
self,
*,

View File

@ -94,13 +94,6 @@ class ChatPermissions(Object):
True, if polls can be sent, implies can_send_media_messages.
"""
__slots__ = [
"until_date", "can_be_edited", "can_change_info", "can_post_messages", "can_edit_messages",
"can_delete_messages", "can_restrict_members", "can_invite_users", "can_pin_messages", "can_promote_members",
"can_send_messages", "can_send_media_messages", "can_send_other_messages", "can_add_web_page_previews",
"can_send_polls"
]
def __init__(
self,
*,

View File

@ -35,8 +35,6 @@ class ChatPhoto(Object):
Unique file identifier of big (640x640) chat photo. This file_id can be used only for photo download.
"""
__slots__ = ["small_file_id", "big_file_id"]
def __init__(
self,
*,

View File

@ -45,8 +45,6 @@ class ChatPreview(Object):
Preview of some of the chat members.
"""
__slots__ = ["title", "type", "members_count", "photo", "members"]
def __init__(
self,
*,

View File

@ -47,8 +47,6 @@ class Dialog(Object):
True, if the dialog is pinned.
"""
__slots__ = ["chat", "top_message", "unread_messages_count", "unread_mentions_count", "unread_mark", "is_pinned"]
def __init__(
self,
*,

View File

@ -106,12 +106,6 @@ class User(Object, Update):
This field is available only in case *is_restricted* is True.
"""
__slots__ = [
"id", "is_self", "is_contact", "is_mutual_contact", "is_deleted", "is_bot", "is_verified", "is_restricted",
"is_scam", "is_support", "first_name", "last_name", "status", "last_online_date", "next_offline_date",
"username", "language_code", "dc_id", "phone_number", "photo", "restriction_reason"
]
def __init__(
self,
*,