From d392939018713b8fbef646bf76786e34998ffebe Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Fri, 5 Oct 2018 14:20:50 +0200 Subject: [PATCH] Create a default module to use as a sentinel value This looks better in the documentation than utils.Default, cleans the utils with specific stuff like this, and users may use it more easily. --- telethon/client/messageparse.py | 6 +++--- telethon/client/messages.py | 8 ++++---- telethon/client/uploads.py | 8 ++++---- telethon/default.py | 5 +++++ telethon/helpers.py | 1 - telethon/tl/custom/draft.py | 7 ++++--- telethon/tl/custom/inline.py | 12 ++++++------ telethon/utils.py | 8 -------- 8 files changed, 26 insertions(+), 29 deletions(-) create mode 100644 telethon/default.py diff --git a/telethon/client/messageparse.py b/telethon/client/messageparse.py index 1e71605b..0adea5d6 100644 --- a/telethon/client/messageparse.py +++ b/telethon/client/messageparse.py @@ -2,8 +2,8 @@ import itertools import re from .users import UserMethods -from .. import utils -from ..tl import types, custom +from .. import default, utils +from ..tl import types class MessageParseMethods(UserMethods): @@ -62,7 +62,7 @@ class MessageParseMethods(UserMethods): """ Returns a (parsed message, entities) tuple depending on ``parse_mode``. """ - if parse_mode == utils.Default: + if parse_mode == default: parse_mode = self._parse_mode else: parse_mode = utils.sanitize_parse_mode(parse_mode) diff --git a/telethon/client/messages.py b/telethon/client/messages.py index 0c7a203a..88aeeaa7 100644 --- a/telethon/client/messages.py +++ b/telethon/client/messages.py @@ -8,8 +8,8 @@ from async_generator import async_generator, yield_ from .messageparse import MessageParseMethods from .uploads import UploadMethods from .buttons import ButtonMethods -from .. import utils, helpers -from ..tl import types, functions, custom +from .. import default, helpers, utils +from ..tl import types, functions __log__ = logging.getLogger(__name__) @@ -360,7 +360,7 @@ class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods): async def send_message( self, entity, message='', *, reply_to=None, - parse_mode=utils.Default, link_preview=True, file=None, + parse_mode=default, link_preview=True, file=None, force_document=False, clear_draft=False, buttons=None, silent=None): """ @@ -584,7 +584,7 @@ class MessageMethods(UploadMethods, ButtonMethods, MessageParseMethods): async def edit_message( self, entity, message=None, text=None, - *, parse_mode=utils.Default, link_preview=True, file=None, + *, parse_mode=default, link_preview=True, file=None, buttons=None): """ Edits the given message ID (to change its contents or disable preview). diff --git a/telethon/client/uploads.py b/telethon/client/uploads.py index 6854a669..c1075b07 100644 --- a/telethon/client/uploads.py +++ b/telethon/client/uploads.py @@ -5,11 +5,11 @@ import os import pathlib import re from io import BytesIO -from mimetypes import guess_type +from .buttons import ButtonMethods from .messageparse import MessageParseMethods from .users import UserMethods -from .buttons import ButtonMethods +from .. import default from .. import utils, helpers from ..tl import types, functions, custom @@ -23,7 +23,7 @@ class UploadMethods(ButtonMethods, MessageParseMethods, UserMethods): async def send_file( self, entity, file, *, caption='', force_document=False, progress_callback=None, reply_to=None, attributes=None, - thumb=None, allow_cache=True, parse_mode=utils.Default, + thumb=None, allow_cache=True, parse_mode=default, voice_note=False, video_note=False, buttons=None, silent=None, **kwargs): """ @@ -180,7 +180,7 @@ class UploadMethods(ButtonMethods, MessageParseMethods, UserMethods): async def _send_album(self, entity, files, caption='', progress_callback=None, reply_to=None, - parse_mode=utils.Default, silent=None): + parse_mode=default, silent=None): """Specialized version of .send_file for albums""" # We don't care if the user wants to avoid cache, we will use it # anyway. Why? The cached version will be exactly the same thing diff --git a/telethon/default.py b/telethon/default.py new file mode 100644 index 00000000..6ba4ad80 --- /dev/null +++ b/telethon/default.py @@ -0,0 +1,5 @@ +""" +Sentinel module to signify that a parameter should use its default value. + +Useful when the default value or ``None`` are both valid options. +""" diff --git a/telethon/helpers.py b/telethon/helpers.py index 861e56ea..5033adef 100644 --- a/telethon/helpers.py +++ b/telethon/helpers.py @@ -1,6 +1,5 @@ """Various helpers not related to the Telegram API itself""" import asyncio -import collections import os import struct from hashlib import sha1, sha256 diff --git a/telethon/tl/custom/draft.py b/telethon/tl/custom/draft.py index 6e931dbc..6d6002f1 100644 --- a/telethon/tl/custom/draft.py +++ b/telethon/tl/custom/draft.py @@ -3,9 +3,10 @@ import datetime from .. import TLObject from ..functions.messages import SaveDraftRequest from ..types import UpdateDraftMessage, DraftMessage +from ... import default from ...errors import RPCError from ...extensions import markdown -from ...utils import Default, get_peer_id, get_input_peer +from ...utils import get_peer_id, get_input_peer class Draft: @@ -116,7 +117,7 @@ class Draft: return not self._text async def set_message( - self, text=None, reply_to=0, parse_mode=Default, + self, text=None, reply_to=0, parse_mode=default, link_preview=None): """ Changes the draft message on the Telegram servers. The changes are @@ -163,7 +164,7 @@ class Draft: return result - async def send(self, clear=True, parse_mode=Default): + async def send(self, clear=True, parse_mode=default): """ Sends the contents of this draft to the dialog. This is just a wrapper around ``send_message(dialog.input_entity, *args, **kwargs)``. diff --git a/telethon/tl/custom/inline.py b/telethon/tl/custom/inline.py index 75a81b94..1983056e 100644 --- a/telethon/tl/custom/inline.py +++ b/telethon/tl/custom/inline.py @@ -1,7 +1,7 @@ import hashlib from .. import functions, types -from ... import utils +from ... import default, utils class InlineBuilder: @@ -55,7 +55,7 @@ class InlineBuilder: async def article( self, title, description=None, *, url=None, thumb=None, content=None, - id=None, text=None, parse_mode=utils.Default, link_preview=True, + id=None, text=None, parse_mode=default, link_preview=True, geo=None, period=60, contact=None, game=False, buttons=None ): """ @@ -105,7 +105,7 @@ class InlineBuilder: async def photo( self, file, *, id=None, - text=None, parse_mode=utils.Default, link_preview=True, + text=None, parse_mode=default, link_preview=True, geo=None, period=60, contact=None, game=False, buttons=None ): """ @@ -144,7 +144,7 @@ class InlineBuilder: self, file, title=None, *, description=None, type=None, mime_type=None, attributes=None, force_document=False, voice_note=False, video_note=False, use_cache=True, id=None, - text=None, parse_mode=utils.Default, link_preview=True, + text=None, parse_mode=default, link_preview=True, geo=None, period=60, contact=None, game=False, buttons=None ): """ @@ -219,7 +219,7 @@ class InlineBuilder: async def game( self, short_name, *, id=None, - text=None, parse_mode=utils.Default, link_preview=True, + text=None, parse_mode=default, link_preview=True, geo=None, period=60, contact=None, game=False, buttons=None ): """ @@ -247,7 +247,7 @@ class InlineBuilder: async def _message( self, *, - text=None, parse_mode=utils.Default, link_preview=True, + text=None, parse_mode=default, link_preview=True, geo=None, period=60, contact=None, game=False, buttons=None ): if sum(1 for x in (text, geo, contact, game) if x) != 1: diff --git a/telethon/utils.py b/telethon/utils.py index 4f98fbc3..de0d9900 100644 --- a/telethon/utils.py +++ b/telethon/utils.py @@ -45,14 +45,6 @@ VALID_USERNAME_RE = re.compile( ) -class Default: - """ - Sentinel value to indicate that the default value should be used. - Currently used for the ``parse_mode``, where a ``None`` mode should - be considered different from using the default. - """ - - def chunks(iterable, size=100): """ Turns the given iterable into chunks of the specified size,