Improve Type Hinting for Class Variables (#2136)

This commit is contained in:
Bibo-Joshi 2020-10-15 18:50:47 +02:00 committed by GitHub
parent b554f1a85d
commit 9be4c7563b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 67 additions and 65 deletions

View file

@ -23,7 +23,7 @@ from telegram import TelegramObject, ChatPhoto, constants
from .chatpermissions import ChatPermissions
from telegram.utils.types import JSONDict
from typing import Any, Optional, List, TYPE_CHECKING
from typing import Any, Optional, List, TYPE_CHECKING, ClassVar
if TYPE_CHECKING:
from telegram import Bot, Message, ChatMember
@ -92,13 +92,13 @@ class Chat(TelegramObject):
"""
PRIVATE: str = constants.CHAT_PRIVATE
PRIVATE: ClassVar[str] = constants.CHAT_PRIVATE
""":const:`telegram.constants.CHAT_PRIVATE`"""
GROUP: str = constants.CHAT_GROUP
GROUP: ClassVar[str] = constants.CHAT_GROUP
""":const:`telegram.constants.CHAT_GROUP`"""
SUPERGROUP: str = constants.CHAT_SUPERGROUP
SUPERGROUP: ClassVar[str] = constants.CHAT_SUPERGROUP
""":const:`telegram.constants.CHAT_SUPERGROUP`"""
CHANNEL: str = constants.CHAT_CHANNEL
CHANNEL: ClassVar[str] = constants.CHAT_CHANNEL
""":const:`telegram.constants.CHAT_CHANNEL`"""
def __init__(

View file

@ -18,29 +18,30 @@
# You should have received a copy of the GNU Lesser Public License
# along with this program. If not, see [http://www.gnu.org/licenses/].
"""This module contains an object that represents a Telegram ChatAction."""
from typing import ClassVar
from telegram import constants
class ChatAction:
"""Helper class to provide constants for different chat actions."""
FIND_LOCATION: str = constants.CHATACTION_FIND_LOCATION
FIND_LOCATION: ClassVar[str] = constants.CHATACTION_FIND_LOCATION
""":const:`telegram.constants.CHATACTION_FIND_LOCATION`"""
RECORD_AUDIO: str = constants.CHATACTION_RECORD_AUDIO
RECORD_AUDIO: ClassVar[str] = constants.CHATACTION_RECORD_AUDIO
""":const:`telegram.constants.CHATACTION_RECORD_AUDIO`"""
RECORD_VIDEO: str = constants.CHATACTION_RECORD_VIDEO
RECORD_VIDEO: ClassVar[str] = constants.CHATACTION_RECORD_VIDEO
""":const:`telegram.constants.CHATACTION_RECORD_VIDEO`"""
RECORD_VIDEO_NOTE: str = constants.CHATACTION_RECORD_VIDEO_NOTE
RECORD_VIDEO_NOTE: ClassVar[str] = constants.CHATACTION_RECORD_VIDEO_NOTE
""":const:`telegram.constants.CHATACTION_RECORD_VIDEO_NOTE`"""
TYPING: str = constants.CHATACTION_TYPING
TYPING: ClassVar[str] = constants.CHATACTION_TYPING
""":const:`telegram.constants.CHATACTION_TYPING`"""
UPLOAD_AUDIO: str = constants.CHATACTION_UPLOAD_AUDIO
UPLOAD_AUDIO: ClassVar[str] = constants.CHATACTION_UPLOAD_AUDIO
""":const:`telegram.constants.CHATACTION_UPLOAD_AUDIO`"""
UPLOAD_DOCUMENT: str = constants.CHATACTION_UPLOAD_DOCUMENT
UPLOAD_DOCUMENT: ClassVar[str] = constants.CHATACTION_UPLOAD_DOCUMENT
""":const:`telegram.constants.CHATACTION_UPLOAD_DOCUMENT`"""
UPLOAD_PHOTO: str = constants.CHATACTION_UPLOAD_PHOTO
UPLOAD_PHOTO: ClassVar[str] = constants.CHATACTION_UPLOAD_PHOTO
""":const:`telegram.constants.CHATACTION_UPLOAD_PHOTO`"""
UPLOAD_VIDEO: str = constants.CHATACTION_UPLOAD_VIDEO
UPLOAD_VIDEO: ClassVar[str] = constants.CHATACTION_UPLOAD_VIDEO
""":const:`telegram.constants.CHATACTION_UPLOAD_VIDEO`"""
UPLOAD_VIDEO_NOTE: str = constants.CHATACTION_UPLOAD_VIDEO_NOTE
UPLOAD_VIDEO_NOTE: ClassVar[str] = constants.CHATACTION_UPLOAD_VIDEO_NOTE
""":const:`telegram.constants.CHATACTION_UPLOAD_VIDEO_NOTE`"""

View file

@ -23,7 +23,7 @@ from telegram import User, TelegramObject, constants
from telegram.utils.helpers import to_timestamp, from_timestamp
from telegram.utils.types import JSONDict
from typing import Any, Optional, TYPE_CHECKING
from typing import Any, Optional, TYPE_CHECKING, ClassVar
if TYPE_CHECKING:
from telegram import Bot
@ -111,17 +111,17 @@ class ChatMember(TelegramObject):
may add web page previews to his messages.
"""
ADMINISTRATOR: str = constants.CHATMEMBER_ADMINISTRATOR
ADMINISTRATOR: ClassVar[str] = constants.CHATMEMBER_ADMINISTRATOR
""":const:`telegram.constants.CHATMEMBER_ADMINISTRATOR`"""
CREATOR: str = constants.CHATMEMBER_CREATOR
CREATOR: ClassVar[str] = constants.CHATMEMBER_CREATOR
""":const:`telegram.constants.CHATMEMBER_CREATOR`"""
KICKED: str = constants.CHATMEMBER_KICKED
KICKED: ClassVar[str] = constants.CHATMEMBER_KICKED
""":const:`telegram.constants.CHATMEMBER_KICKED`"""
LEFT: str = constants.CHATMEMBER_LEFT
LEFT: ClassVar[str] = constants.CHATMEMBER_LEFT
""":const:`telegram.constants.CHATMEMBER_LEFT`"""
MEMBER: str = constants.CHATMEMBER_MEMBER
MEMBER: ClassVar[str] = constants.CHATMEMBER_MEMBER
""":const:`telegram.constants.CHATMEMBER_MEMBER`"""
RESTRICTED: str = constants.CHATMEMBER_RESTRICTED
RESTRICTED: ClassVar[str] = constants.CHATMEMBER_RESTRICTED
""":const:`telegram.constants.CHATMEMBER_RESTRICTED`"""
def __init__(

View file

@ -19,7 +19,7 @@
# along with this program. If not, see [http://www.gnu.org/licenses/].
"""This module contains an object that represents a Telegram Dice."""
from telegram import TelegramObject, constants
from typing import Any, List
from typing import Any, List, ClassVar
class Dice(TelegramObject):
@ -55,11 +55,11 @@ class Dice(TelegramObject):
self._id_attrs = (self.value, self.emoji)
DICE: str = constants.DICE_DICE
DICE: ClassVar[str] = constants.DICE_DICE
""":const:`telegram.constants.DICE_DICE`"""
DARTS: str = constants.DICE_DARTS
DARTS: ClassVar[str] = constants.DICE_DARTS
""":const:`telegram.constants.DICE_DARTS`"""
BASKETBALL: str = constants.DICE_BASKETBALL
BASKETBALL: ClassVar[str] = constants.DICE_BASKETBALL
""":const:`telegram.constants.DICE_BASKETBALL`"""
ALL_EMOJI: List[str] = constants.DICE_ALL_EMOJI
ALL_EMOJI: ClassVar[List[str]] = constants.DICE_ALL_EMOJI
""":const:`telegram.constants.DICE_ALL_EMOJI`"""

View file

@ -24,7 +24,7 @@ from copy import copy
from telegram import Bot
from typing import DefaultDict, Dict, Any, Tuple, Optional, cast
from typing import DefaultDict, Dict, Any, Tuple, Optional, cast, ClassVar
from telegram.utils.types import ConversationDict
@ -302,5 +302,5 @@ class BasePersistence(ABC):
"""
pass
REPLACED_BOT = 'bot_instance_replaced_by_ptb_persistence'
REPLACED_BOT: ClassVar[str] = 'bot_instance_replaced_by_ptb_persistence'
""":obj:`str`: Placeholder for :class:`telegram.Bot` instances replaced in saved data."""

View file

@ -35,7 +35,7 @@ from telegram.ext import (
from telegram.utils.promise import Promise
from telegram.utils.types import ConversationDict, HandlerArg
from typing import Dict, Any, List, Optional, Tuple, TYPE_CHECKING, cast, NoReturn
from typing import Dict, Any, List, Optional, Tuple, TYPE_CHECKING, cast, NoReturn, ClassVar
if TYPE_CHECKING:
from telegram.ext import Dispatcher, Job
@ -169,11 +169,11 @@ class ConversationHandler(Handler):
"""
END = -1
END: ClassVar[int] = -1
""":obj:`int`: Used as a constant to return when a conversation is ended."""
TIMEOUT = -2
TIMEOUT: ClassVar[int] = -2
""":obj:`int`: Used as a constant to handle state when a conversation is timed out."""
WAITING = -3
WAITING: ClassVar[int] = -3
""":obj:`int`: Used as a constant to handle state when a conversation is still waiting on the
previous ``@run_sync`` decorated running handler to finish."""

View file

@ -44,7 +44,7 @@ if TYPE_CHECKING:
from telegram import Bot
from telegram.ext import JobQueue
DEFAULT_GROUP = 0
DEFAULT_GROUP: int = 0
def run_async(

View file

@ -20,7 +20,7 @@
from telegram import PhotoSize, TelegramObject, constants
from telegram.utils.types import JSONDict
from typing import Any, Optional, List, TYPE_CHECKING
from typing import Any, Optional, List, TYPE_CHECKING, ClassVar
if TYPE_CHECKING:
from telegram import Bot, File
@ -233,13 +233,13 @@ class MaskPosition(TelegramObject):
"""
FOREHEAD: str = constants.STICKER_FOREHEAD
FOREHEAD: ClassVar[str] = constants.STICKER_FOREHEAD
""":const:`telegram.constants.STICKER_FOREHEAD`"""
EYES: str = constants.STICKER_EYES
EYES: ClassVar[str] = constants.STICKER_EYES
""":const:`telegram.constants.STICKER_EYES`"""
MOUTH: str = constants.STICKER_MOUTH
MOUTH: ClassVar[str] = constants.STICKER_MOUTH
""":const:`telegram.constants.STICKER_MOUTH`"""
CHIN: str = constants.STICKER_CHIN
CHIN: ClassVar[str] = constants.STICKER_CHIN
""":const:`telegram.constants.STICKER_CHIN`"""
def __init__(self, point: str, x_shift: float, y_shift: float, scale: float, **kwargs: Any):

View file

@ -50,7 +50,7 @@ from telegram import ParseMode
from telegram.utils.helpers import escape_markdown, to_timestamp, from_timestamp
from telegram.utils.types import JSONDict
from typing import Any, List, Dict, Optional, Union, TYPE_CHECKING
from typing import Any, List, Dict, Optional, Union, TYPE_CHECKING, ClassVar
if TYPE_CHECKING:
from telegram import Bot, InputMedia, GameHighScore
@ -259,7 +259,7 @@ class Message(TelegramObject):
_effective_attachment = _UNDEFINED
ATTACHMENT_TYPES = [
ATTACHMENT_TYPES: ClassVar[List[str]] = [
'audio',
'game',
'animation',
@ -275,7 +275,7 @@ class Message(TelegramObject):
'invoice',
'successful_payment',
]
MESSAGE_TYPES = [
MESSAGE_TYPES: ClassVar[List[str]] = [
'text',
'new_chat_members',
'left_chat_member',

View file

@ -20,7 +20,7 @@
from telegram import User, TelegramObject, constants
from telegram.utils.types import JSONDict
from typing import Any, Optional, List, TYPE_CHECKING
from typing import Any, Optional, List, TYPE_CHECKING, ClassVar
if TYPE_CHECKING:
from telegram import Bot
@ -90,36 +90,36 @@ class MessageEntity(TelegramObject):
return cls(**data)
MENTION: str = constants.MESSAGEENTITY_MENTION
MENTION: ClassVar[str] = constants.MESSAGEENTITY_MENTION
""":const:`telegram.constants.MESSAGEENTITY_MENTION`"""
HASHTAG: str = constants.MESSAGEENTITY_HASHTAG
HASHTAG: ClassVar[str] = constants.MESSAGEENTITY_HASHTAG
""":const:`telegram.constants.MESSAGEENTITY_HASHTAG`"""
CASHTAG: str = constants.MESSAGEENTITY_CASHTAG
CASHTAG: ClassVar[str] = constants.MESSAGEENTITY_CASHTAG
""":const:`telegram.constants.MESSAGEENTITY_CASHTAG`"""
PHONE_NUMBER: str = constants.MESSAGEENTITY_PHONE_NUMBER
PHONE_NUMBER: ClassVar[str] = constants.MESSAGEENTITY_PHONE_NUMBER
""":const:`telegram.constants.MESSAGEENTITY_PHONE_NUMBER`"""
BOT_COMMAND: str = constants.MESSAGEENTITY_BOT_COMMAND
BOT_COMMAND: ClassVar[str] = constants.MESSAGEENTITY_BOT_COMMAND
""":const:`telegram.constants.MESSAGEENTITY_BOT_COMMAND`"""
URL: str = constants.MESSAGEENTITY_URL
URL: ClassVar[str] = constants.MESSAGEENTITY_URL
""":const:`telegram.constants.MESSAGEENTITY_URL`"""
EMAIL: str = constants.MESSAGEENTITY_EMAIL
EMAIL: ClassVar[str] = constants.MESSAGEENTITY_EMAIL
""":const:`telegram.constants.MESSAGEENTITY_EMAIL`"""
BOLD: str = constants.MESSAGEENTITY_BOLD
BOLD: ClassVar[str] = constants.MESSAGEENTITY_BOLD
""":const:`telegram.constants.MESSAGEENTITY_BOLD`"""
ITALIC: str = constants.MESSAGEENTITY_ITALIC
ITALIC: ClassVar[str] = constants.MESSAGEENTITY_ITALIC
""":const:`telegram.constants.MESSAGEENTITY_ITALIC`"""
CODE: str = constants.MESSAGEENTITY_CODE
CODE: ClassVar[str] = constants.MESSAGEENTITY_CODE
""":const:`telegram.constants.MESSAGEENTITY_CODE`"""
PRE: str = constants.MESSAGEENTITY_PRE
PRE: ClassVar[str] = constants.MESSAGEENTITY_PRE
""":const:`telegram.constants.MESSAGEENTITY_PRE`"""
TEXT_LINK: str = constants.MESSAGEENTITY_TEXT_LINK
TEXT_LINK: ClassVar[str] = constants.MESSAGEENTITY_TEXT_LINK
""":const:`telegram.constants.MESSAGEENTITY_TEXT_LINK`"""
TEXT_MENTION: str = constants.MESSAGEENTITY_TEXT_MENTION
TEXT_MENTION: ClassVar[str] = constants.MESSAGEENTITY_TEXT_MENTION
""":const:`telegram.constants.MESSAGEENTITY_TEXT_MENTION`"""
UNDERLINE: str = constants.MESSAGEENTITY_UNDERLINE
UNDERLINE: ClassVar[str] = constants.MESSAGEENTITY_UNDERLINE
""":const:`telegram.constants.MESSAGEENTITY_UNDERLINE`"""
STRIKETHROUGH: str = constants.MESSAGEENTITY_STRIKETHROUGH
STRIKETHROUGH: ClassVar[str] = constants.MESSAGEENTITY_STRIKETHROUGH
""":const:`telegram.constants.MESSAGEENTITY_STRIKETHROUGH`"""
ALL_TYPES: List[str] = constants.MESSAGEENTITY_ALL_TYPES
ALL_TYPES: ClassVar[List[str]] = constants.MESSAGEENTITY_ALL_TYPES
""":const:`telegram.constants.MESSAGEENTITY_ALL_TYPES`\n
List of all the types"""

View file

@ -18,6 +18,7 @@
# You should have received a copy of the GNU Lesser Public License
# along with this program. If not, see [http://www.gnu.org/licenses/].
"""This module contains an object that represents a Telegram Message Parse Modes."""
from typing import ClassVar
from telegram import constants
@ -25,14 +26,14 @@ from telegram import constants
class ParseMode:
"""This object represents a Telegram Message Parse Modes."""
MARKDOWN: str = constants.PARSEMODE_MARKDOWN
MARKDOWN: ClassVar[str] = constants.PARSEMODE_MARKDOWN
""":const:`telegram.constants.PARSEMODE_MARKDOWN`\n
Note:
:attr:`MARKDOWN` is a legacy mode, retained by Telegram for backward compatibility.
You should use :attr:`MARKDOWN_V2` instead.
"""
MARKDOWN_V2: str = constants.PARSEMODE_MARKDOWN_V2
MARKDOWN_V2: ClassVar[str] = constants.PARSEMODE_MARKDOWN_V2
""":const:`telegram.constants.PARSEMODE_MARKDOWN_V2`"""
HTML: str = constants.PARSEMODE_HTML
HTML: ClassVar[str] = constants.PARSEMODE_HTML
""":const:`telegram.constants.PARSEMODE_HTML`"""

View file

@ -25,7 +25,7 @@ import datetime
from telegram import TelegramObject, User, MessageEntity, constants
from telegram.utils.helpers import to_timestamp, from_timestamp
from telegram.utils.types import JSONDict
from typing import Any, Dict, Optional, List, TYPE_CHECKING
from typing import Any, Dict, Optional, List, TYPE_CHECKING, ClassVar
if TYPE_CHECKING:
from telegram import Bot
@ -259,7 +259,7 @@ class Poll(TelegramObject):
if entity.type in types
}
REGULAR: str = constants.POLL_REGULAR
REGULAR: ClassVar[str] = constants.POLL_REGULAR
""":const:`telegram.constants.POLL_REGULAR`"""
QUIZ: str = constants.POLL_QUIZ
QUIZ: ClassVar[str] = constants.POLL_QUIZ
""":const:`telegram.constants.POLL_QUIZ`"""