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.
This commit is contained in:
Lonami Exo 2018-10-05 14:20:50 +02:00
parent 0fcc2e5e52
commit d392939018
8 changed files with 26 additions and 29 deletions

View File

@ -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)

View File

@ -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).

View File

@ -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

5
telethon/default.py Normal file
View File

@ -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.
"""

View File

@ -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

View File

@ -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)``.

View File

@ -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:

View File

@ -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,