From 360fdfc4d8a94baf47acacc24915a951fbc303bd Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 15 Jun 2020 23:54:06 +0300 Subject: [PATCH 1/3] Fix parse_mode in Message aliases --- aiogram/api/types/message.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/aiogram/api/types/message.py b/aiogram/api/types/message.py index 589de26e..67470b66 100644 --- a/aiogram/api/types/message.py +++ b/aiogram/api/types/message.py @@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, List, Optional, Union from pydantic import Field from ...utils import helper -from .base import TelegramObject +from .base import UNSET, TelegramObject if TYPE_CHECKING: # pragma: no cover from .animation import Animation @@ -256,7 +256,7 @@ class Message(TelegramObject): height: Optional[int] = None, thumb: Optional[Union[InputFile, str]] = None, caption: Optional[str] = None, - parse_mode: Optional[str] = None, + parse_mode: Optional[str] = UNSET, disable_notification: Optional[bool] = None, reply_markup: Optional[ Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] @@ -300,7 +300,7 @@ class Message(TelegramObject): height: Optional[int] = None, thumb: Optional[Union[InputFile, str]] = None, caption: Optional[str] = None, - parse_mode: Optional[str] = None, + parse_mode: Optional[str] = UNSET, disable_notification: Optional[bool] = None, reply_markup: Optional[ Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] @@ -340,7 +340,7 @@ class Message(TelegramObject): self, audio: Union[InputFile, str], caption: Optional[str] = None, - parse_mode: Optional[str] = None, + parse_mode: Optional[str] = UNSET, duration: Optional[int] = None, performer: Optional[str] = None, title: Optional[str] = None, @@ -384,7 +384,7 @@ class Message(TelegramObject): self, audio: Union[InputFile, str], caption: Optional[str] = None, - parse_mode: Optional[str] = None, + parse_mode: Optional[str] = UNSET, duration: Optional[int] = None, performer: Optional[str] = None, title: Optional[str] = None, @@ -499,7 +499,7 @@ class Message(TelegramObject): document: Union[InputFile, str], thumb: Optional[Union[InputFile, str]] = None, caption: Optional[str] = None, - parse_mode: Optional[str] = None, + parse_mode: Optional[str] = UNSET, disable_notification: Optional[bool] = None, reply_markup: Optional[ Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] @@ -534,7 +534,7 @@ class Message(TelegramObject): document: Union[InputFile, str], thumb: Optional[Union[InputFile, str]] = None, caption: Optional[str] = None, - parse_mode: Optional[str] = None, + parse_mode: Optional[str] = UNSET, disable_notification: Optional[bool] = None, reply_markup: Optional[ Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] @@ -877,7 +877,7 @@ class Message(TelegramObject): def reply( self, text: str, - parse_mode: Optional[str] = None, + parse_mode: Optional[str] = UNSET, disable_web_page_preview: Optional[bool] = None, disable_notification: Optional[bool] = None, reply_markup: Optional[ @@ -909,7 +909,7 @@ class Message(TelegramObject): def answer( self, text: str, - parse_mode: Optional[str] = None, + parse_mode: Optional[str] = UNSET, disable_web_page_preview: Optional[bool] = None, disable_notification: Optional[bool] = None, reply_markup: Optional[ @@ -942,7 +942,7 @@ class Message(TelegramObject): self, photo: Union[InputFile, str], caption: Optional[str] = None, - parse_mode: Optional[str] = None, + parse_mode: Optional[str] = UNSET, disable_notification: Optional[bool] = None, reply_markup: Optional[ Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] @@ -974,7 +974,7 @@ class Message(TelegramObject): self, photo: Union[InputFile, str], caption: Optional[str] = None, - parse_mode: Optional[str] = None, + parse_mode: Optional[str] = UNSET, disable_notification: Optional[bool] = None, reply_markup: Optional[ Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] @@ -1011,7 +1011,7 @@ class Message(TelegramObject): allows_multiple_answers: Optional[bool] = None, correct_option_id: Optional[int] = None, explanation: Optional[str] = None, - explanation_parse_mode: Optional[str] = None, + explanation_parse_mode: Optional[str] = UNSET, open_period: Optional[int] = None, close_date: Optional[Union[datetime.datetime, datetime.timedelta, int]] = None, is_closed: Optional[bool] = None, @@ -1067,7 +1067,7 @@ class Message(TelegramObject): allows_multiple_answers: Optional[bool] = None, correct_option_id: Optional[int] = None, explanation: Optional[str] = None, - explanation_parse_mode: Optional[str] = None, + explanation_parse_mode: Optional[str] = UNSET, open_period: Optional[int] = None, close_date: Optional[Union[datetime.datetime, datetime.timedelta, int]] = None, is_closed: Optional[bool] = None, @@ -1308,7 +1308,7 @@ class Message(TelegramObject): height: Optional[int] = None, thumb: Optional[Union[InputFile, str]] = None, caption: Optional[str] = None, - parse_mode: Optional[str] = None, + parse_mode: Optional[str] = UNSET, supports_streaming: Optional[bool] = None, disable_notification: Optional[bool] = None, reply_markup: Optional[ @@ -1355,7 +1355,7 @@ class Message(TelegramObject): height: Optional[int] = None, thumb: Optional[Union[InputFile, str]] = None, caption: Optional[str] = None, - parse_mode: Optional[str] = None, + parse_mode: Optional[str] = UNSET, supports_streaming: Optional[bool] = None, disable_notification: Optional[bool] = None, reply_markup: Optional[ @@ -1468,7 +1468,7 @@ class Message(TelegramObject): self, voice: Union[InputFile, str], caption: Optional[str] = None, - parse_mode: Optional[str] = None, + parse_mode: Optional[str] = UNSET, duration: Optional[int] = None, disable_notification: Optional[bool] = None, reply_markup: Optional[ @@ -1503,7 +1503,7 @@ class Message(TelegramObject): self, voice: Union[InputFile, str], caption: Optional[str] = None, - parse_mode: Optional[str] = None, + parse_mode: Optional[str] = UNSET, duration: Optional[int] = None, disable_notification: Optional[bool] = None, reply_markup: Optional[ From 46d01a6ae707d3517c13fc1dd50fe0d25d823404 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 27 Jun 2020 16:59:21 +0300 Subject: [PATCH 2/3] Fix explanation_parse_mode validation --- aiogram/api/client/bot.py | 2 +- aiogram/api/methods/base.py | 5 +++-- aiogram/api/methods/send_poll.py | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/aiogram/api/client/bot.py b/aiogram/api/client/bot.py index 5a78e589..ce12de07 100644 --- a/aiogram/api/client/bot.py +++ b/aiogram/api/client/bot.py @@ -1214,7 +1214,7 @@ class Bot(ContextInstanceMixin["Bot"]): allows_multiple_answers: Optional[bool] = None, correct_option_id: Optional[int] = None, explanation: Optional[str] = None, - explanation_parse_mode: Optional[str] = None, + explanation_parse_mode: Optional[str] = UNSET, open_period: Optional[int] = None, close_date: Optional[Union[datetime.datetime, datetime.timedelta, int]] = None, is_closed: Optional[bool] = None, diff --git a/aiogram/api/methods/base.py b/aiogram/api/methods/base.py index 1ad41445..dfdfda34 100644 --- a/aiogram/api/methods/base.py +++ b/aiogram/api/methods/base.py @@ -56,8 +56,9 @@ class TelegramMethod(abc.ABC, BaseModel, Generic[T]): a model initialization from `Bot.method_name`, so we must take care of it and remove it before fields validation. """ - if "parse_mode" in values and values["parse_mode"] is UNSET: - values.pop("parse_mode") + for parse_mode_attribute in {"parse_mode", "explanation_parse_mode"}: + if parse_mode_attribute in values and values[parse_mode_attribute] is UNSET: + values.pop(parse_mode_attribute) return values @property diff --git a/aiogram/api/methods/send_poll.py b/aiogram/api/methods/send_poll.py index 0868d0b2..b716a9c8 100644 --- a/aiogram/api/methods/send_poll.py +++ b/aiogram/api/methods/send_poll.py @@ -9,6 +9,7 @@ from ..types import ( Message, ReplyKeyboardMarkup, ReplyKeyboardRemove, + UNSET, ) from .base import Request, TelegramMethod, prepare_parse_mode @@ -44,7 +45,7 @@ class SendPoll(TelegramMethod[Message]): explanation: Optional[str] = None """Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing""" - explanation_parse_mode: Optional[str] = None + explanation_parse_mode: Optional[str] = UNSET """Mode for parsing entities in the explanation. See formatting options for more details.""" open_period: Optional[int] = None """Amount of time in seconds the poll will be active after creation, 5-600. Can't be used From 6f53f15577e3b05a0268b78efdfb410e95672429 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 27 Jun 2020 16:59:52 +0300 Subject: [PATCH 3/3] Reformat code --- aiogram/api/methods/send_poll.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aiogram/api/methods/send_poll.py b/aiogram/api/methods/send_poll.py index b716a9c8..35fa45be 100644 --- a/aiogram/api/methods/send_poll.py +++ b/aiogram/api/methods/send_poll.py @@ -4,12 +4,12 @@ import datetime from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union from ..types import ( + UNSET, ForceReply, InlineKeyboardMarkup, Message, ReplyKeyboardMarkup, ReplyKeyboardRemove, - UNSET, ) from .base import Request, TelegramMethod, prepare_parse_mode