From 38f823bf8eadf112d0333c92c466dedd505b1eae Mon Sep 17 00:00:00 2001 From: Oleg A Date: Sat, 27 Mar 2021 14:08:28 +0300 Subject: [PATCH] style: module level dunders should be placed before any import statements (all aiogram) --- aiogram/bot/__init__.py | 12 +- aiogram/contrib/fsm_storage/rethinkdb.py | 4 +- aiogram/dispatcher/__init__.py | 22 ++- aiogram/dispatcher/filters/__init__.py | 39 ++--- aiogram/types/__init__.py | 181 +++++++++++++---------- aiogram/types/base.py | 6 +- aiogram/types/fields.py | 5 +- aiogram/utils/mixins.py | 6 +- aiogram/utils/text_decorations.py | 20 +-- 9 files changed, 160 insertions(+), 135 deletions(-) diff --git a/aiogram/bot/__init__.py b/aiogram/bot/__init__.py index 19c051bf..fc6ec94b 100644 --- a/aiogram/bot/__init__.py +++ b/aiogram/bot/__init__.py @@ -1,9 +1,9 @@ +__all__ = [ + 'api', + 'BaseBot', + 'Bot', +] + from . import api from .base import BaseBot from .bot import Bot - -__all__ = ( - 'BaseBot', - 'Bot', - 'api', -) diff --git a/aiogram/contrib/fsm_storage/rethinkdb.py b/aiogram/contrib/fsm_storage/rethinkdb.py index 5bb9062a..b92ea4b1 100644 --- a/aiogram/contrib/fsm_storage/rethinkdb.py +++ b/aiogram/contrib/fsm_storage/rethinkdb.py @@ -1,3 +1,5 @@ +__all__ = ['RethinkDBStorage'] + import asyncio import contextlib import typing @@ -7,8 +9,6 @@ from rethinkdb.asyncio_net.net_asyncio import Connection from ...dispatcher.storage import BaseStorage -__all__ = ('RethinkDBStorage',) - r = rethinkdb.RethinkDB() r.set_loop_type('asyncio') diff --git a/aiogram/dispatcher/__init__.py b/aiogram/dispatcher/__init__.py index e412dd36..616fd85b 100644 --- a/aiogram/dispatcher/__init__.py +++ b/aiogram/dispatcher/__init__.py @@ -1,17 +1,13 @@ -from . import filters -from . import handler -from . import middlewares -from . import storage -from . import webhook -from .dispatcher import Dispatcher, FSMContext, DEFAULT_RATE_LIMIT - -__all__ = ( - 'DEFAULT_RATE_LIMIT', - 'Dispatcher', - 'FSMContext', +__all__ = [ 'filters', 'handler', 'middlewares', 'storage', - 'webhook' -) + 'webhook', + 'DEFAULT_RATE_LIMIT', + 'Dispatcher', + 'FSMContext', +] + +from . import filters, handler, middlewares, storage, webhook +from .dispatcher import DEFAULT_RATE_LIMIT, Dispatcher, FSMContext diff --git a/aiogram/dispatcher/filters/__init__.py b/aiogram/dispatcher/filters/__init__.py index d07d953b..ebafea32 100644 --- a/aiogram/dispatcher/filters/__init__.py +++ b/aiogram/dispatcher/filters/__init__.py @@ -1,12 +1,6 @@ -from .builtin import Command, CommandHelp, CommandPrivacy, CommandSettings, CommandStart, ContentTypeFilter, \ - ExceptionsFilter, HashTag, Regexp, RegexpCommandsFilter, StateFilter, \ - Text, IDFilter, AdminFilter, IsReplyFilter, IsSenderContact, ForwardedMessageFilter, \ - ChatTypeFilter, MediaGroupFilter -from .factory import FiltersFactory -from .filters import AbstractFilter, BoundFilter, Filter, FilterNotPassed, FilterRecord, execute_filter, \ - check_filters, get_filter_spec, get_filters_spec - -__all__ = ( +__all__ = [ + 'AdminFilter', + 'ChatTypeFilter', 'Command', 'CommandHelp', 'CommandPrivacy', @@ -14,26 +8,35 @@ __all__ = ( 'CommandStart', 'ContentTypeFilter', 'ExceptionsFilter', + 'ForwardedMessageFilter', 'HashTag', + 'IDFilter', + 'IsReplyFilter', + 'IsSenderContact', + 'MediaGroupFilter', 'Regexp', 'RegexpCommandsFilter', 'StateFilter', 'Text', - 'IDFilter', - 'AdminFilter', - 'IsReplyFilter', - 'IsSenderContact', - 'ForwardedMessageFilter', - 'ChatTypeFilter', - 'MediaGroupFilter', 'FiltersFactory', 'AbstractFilter', 'BoundFilter', 'Filter', 'FilterNotPassed', 'FilterRecord', - 'execute_filter', 'check_filters', + 'execute_filter', 'get_filter_spec', 'get_filters_spec', -) +] + +from .builtin import (AdminFilter, ChatTypeFilter, Command, CommandHelp, + CommandPrivacy, CommandSettings, CommandStart, + ContentTypeFilter, ExceptionsFilter, + ForwardedMessageFilter, HashTag, IDFilter, IsReplyFilter, + IsSenderContact, MediaGroupFilter, Regexp, + RegexpCommandsFilter, StateFilter, Text, ) +from .factory import FiltersFactory +from .filters import (AbstractFilter, BoundFilter, Filter, FilterNotPassed, + FilterRecord, check_filters, execute_filter, + get_filter_spec, get_filters_spec, ) diff --git a/aiogram/types/__init__.py b/aiogram/types/__init__.py index 1dfa519f..867e8731 100644 --- a/aiogram/types/__init__.py +++ b/aiogram/types/__init__.py @@ -1,81 +1,4 @@ -from . import base -from . import fields -from .animation import Animation -from .audio import Audio -from .auth_widget_data import AuthWidgetData -from .bot_command import BotCommand -from .callback_game import CallbackGame -from .callback_query import CallbackQuery -from .chat import Chat, ChatActions, ChatType -from .chat_invite_link import ChatInviteLink -from .chat_location import ChatLocation -from .chat_member import ChatMember, ChatMemberStatus -from .chat_member_updated import ChatMemberUpdated -from .chat_permissions import ChatPermissions -from .chat_photo import ChatPhoto -from .chosen_inline_result import ChosenInlineResult -from .contact import Contact -from .dice import Dice, DiceEmoji -from .document import Document -from .encrypted_credentials import EncryptedCredentials -from .encrypted_passport_element import EncryptedPassportElement -from .file import File -from .force_reply import ForceReply -from .game import Game -from .game_high_score import GameHighScore -from .inline_keyboard import InlineKeyboardButton, InlineKeyboardMarkup -from .inline_query import InlineQuery -from .inline_query_result import InlineQueryResult, InlineQueryResultArticle, InlineQueryResultAudio, \ - InlineQueryResultCachedAudio, InlineQueryResultCachedDocument, InlineQueryResultCachedGif, \ - InlineQueryResultCachedMpeg4Gif, InlineQueryResultCachedPhoto, InlineQueryResultCachedSticker, \ - InlineQueryResultCachedVideo, InlineQueryResultCachedVoice, InlineQueryResultContact, InlineQueryResultDocument, \ - InlineQueryResultGame, InlineQueryResultGif, InlineQueryResultLocation, InlineQueryResultMpeg4Gif, \ - InlineQueryResultPhoto, InlineQueryResultVenue, InlineQueryResultVideo, InlineQueryResultVoice -from .input_file import InputFile -from .input_media import InputMedia, InputMediaAnimation, InputMediaAudio, InputMediaDocument, InputMediaPhoto, \ - InputMediaVideo, MediaGroup -from .input_message_content import InputContactMessageContent, InputLocationMessageContent, InputMessageContent, \ - InputTextMessageContent, InputVenueMessageContent -from .invoice import Invoice -from .labeled_price import LabeledPrice -from .location import Location -from .login_url import LoginUrl -from .mask_position import MaskPosition -from .message import ContentType, ContentTypes, Message, ParseMode -from .message_auto_delete_timer_changed import MessageAutoDeleteTimerChanged -from .message_entity import MessageEntity, MessageEntityType -from .message_id import MessageId -from .order_info import OrderInfo -from .passport_data import PassportData -from .passport_element_error import PassportElementError, PassportElementErrorDataField, PassportElementErrorFile, \ - PassportElementErrorFiles, PassportElementErrorFrontSide, PassportElementErrorReverseSide, \ - PassportElementErrorSelfie -from .passport_file import PassportFile -from .photo_size import PhotoSize -from .poll import PollOption, Poll, PollAnswer, PollType -from .pre_checkout_query import PreCheckoutQuery -from .proximity_alert_triggered import ProximityAlertTriggered -from .reply_keyboard import KeyboardButton, ReplyKeyboardMarkup, ReplyKeyboardRemove, KeyboardButtonPollType -from .response_parameters import ResponseParameters -from .shipping_address import ShippingAddress -from .shipping_option import ShippingOption -from .shipping_query import ShippingQuery -from .sticker import Sticker -from .sticker_set import StickerSet -from .successful_payment import SuccessfulPayment -from .update import AllowedUpdates, Update -from .user import User -from .user_profile_photos import UserProfilePhotos -from .venue import Venue -from .video import Video -from .video_note import VideoNote -from .voice import Voice -from .voice_chat_ended import VoiceChatEnded -from .voice_chat_participants_invited import VoiceChatParticipantsInvited -from .voice_chat_started import VoiceChatStarted -from .webhook_info import WebhookInfo - -__all__ = ( +__all__ = [ 'AllowedUpdates', 'Animation', 'Audio', @@ -195,4 +118,104 @@ __all__ = ( 'WebhookInfo', 'base', 'fields', -) +] + +from . import base, fields +from .animation import Animation +from .audio import Audio +from .auth_widget_data import AuthWidgetData +from .bot_command import BotCommand +from .callback_game import CallbackGame +from .callback_query import CallbackQuery +from .chat import Chat, ChatActions, ChatType +from .chat_invite_link import ChatInviteLink +from .chat_location import ChatLocation +from .chat_member import ChatMember, ChatMemberStatus +from .chat_member_updated import ChatMemberUpdated +from .chat_permissions import ChatPermissions +from .chat_photo import ChatPhoto +from .chosen_inline_result import ChosenInlineResult +from .contact import Contact +from .dice import Dice, DiceEmoji +from .document import Document +from .encrypted_credentials import EncryptedCredentials +from .encrypted_passport_element import EncryptedPassportElement +from .file import File +from .force_reply import ForceReply +from .game import Game +from .game_high_score import GameHighScore +from .inline_keyboard import InlineKeyboardButton, InlineKeyboardMarkup +from .inline_query import InlineQuery +from .inline_query_result import (InlineQueryResult, + InlineQueryResultArticle, + InlineQueryResultAudio, + InlineQueryResultCachedAudio, + InlineQueryResultCachedDocument, + InlineQueryResultCachedGif, + InlineQueryResultCachedMpeg4Gif, + InlineQueryResultCachedPhoto, + InlineQueryResultCachedSticker, + InlineQueryResultCachedVideo, + InlineQueryResultCachedVoice, + InlineQueryResultContact, + InlineQueryResultDocument, + InlineQueryResultGame, + InlineQueryResultGif, + InlineQueryResultLocation, + InlineQueryResultMpeg4Gif, + InlineQueryResultPhoto, + InlineQueryResultVenue, + InlineQueryResultVideo, + InlineQueryResultVoice, ) +from .input_file import InputFile +from .input_media import (InputMedia, InputMediaAnimation, InputMediaAudio, + InputMediaDocument, InputMediaPhoto, + InputMediaVideo, MediaGroup, ) +from .input_message_content import (InputContactMessageContent, + InputLocationMessageContent, + InputMessageContent, + InputTextMessageContent, + InputVenueMessageContent, ) +from .invoice import Invoice +from .labeled_price import LabeledPrice +from .location import Location +from .login_url import LoginUrl +from .mask_position import MaskPosition +from .message import ContentType, ContentTypes, Message, ParseMode +from .message_auto_delete_timer_changed import MessageAutoDeleteTimerChanged +from .message_entity import MessageEntity, MessageEntityType +from .message_id import MessageId +from .order_info import OrderInfo +from .passport_data import PassportData +from .passport_element_error import (PassportElementError, + PassportElementErrorDataField, + PassportElementErrorFile, + PassportElementErrorFiles, + PassportElementErrorFrontSide, + PassportElementErrorReverseSide, + PassportElementErrorSelfie, ) +from .passport_file import PassportFile +from .photo_size import PhotoSize +from .poll import Poll, PollAnswer, PollOption, PollType +from .pre_checkout_query import PreCheckoutQuery +from .proximity_alert_triggered import ProximityAlertTriggered +from .reply_keyboard import (KeyboardButton, KeyboardButtonPollType, + ReplyKeyboardMarkup, ReplyKeyboardRemove, ) +from .response_parameters import ResponseParameters +from .shipping_address import ShippingAddress +from .shipping_option import ShippingOption +from .shipping_query import ShippingQuery +from .sticker import Sticker +from .sticker_set import StickerSet +from .successful_payment import SuccessfulPayment +from .update import AllowedUpdates, Update +from .user import User +from .user_profile_photos import UserProfilePhotos +from .venue import Venue +from .video import Video +from .video_note import VideoNote +from .voice import Voice +from .voice_chat_ended import VoiceChatEnded +from .voice_chat_participants_invited import VoiceChatParticipantsInvited +from .voice_chat_started import VoiceChatStarted +from .webhook_info import WebhookInfo diff --git a/aiogram/types/base.py b/aiogram/types/base.py index 0ed8579c..426acc9c 100644 --- a/aiogram/types/base.py +++ b/aiogram/types/base.py @@ -1,5 +1,8 @@ from __future__ import annotations +__all__ = ['MetaTelegramObject', 'TelegramObject', 'InputFile', 'String', + 'Integer', 'Float', 'Boolean'] + import io import logging import typing @@ -10,11 +13,10 @@ from babel.support import LazyProxy from .fields import BaseField from ..utils import json from ..utils.mixins import ContextInstanceMixin + if typing.TYPE_CHECKING: from ..bot.bot import Bot -__all__ = ('MetaTelegramObject', 'TelegramObject', 'InputFile', 'String', 'Integer', 'Float', 'Boolean') - PROPS_ATTR_NAME = '_props' VALUES_ATTR_NAME = '_values' ALIASES_ATTR_NAME = '_aliases' diff --git a/aiogram/types/fields.py b/aiogram/types/fields.py index 022b9b72..ea39e7c1 100644 --- a/aiogram/types/fields.py +++ b/aiogram/types/fields.py @@ -1,9 +1,10 @@ +__all__ = ['BaseField', 'Field', 'ListField', 'DateTimeField', 'TextField', + 'ListOfLists'] + import abc import datetime import weakref -__all__ = ('BaseField', 'Field', 'ListField', 'DateTimeField', 'TextField', 'ListOfLists') - class BaseField(metaclass=abc.ABCMeta): """ diff --git a/aiogram/utils/mixins.py b/aiogram/utils/mixins.py index 90ef4edb..0db7ceab 100644 --- a/aiogram/utils/mixins.py +++ b/aiogram/utils/mixins.py @@ -1,7 +1,7 @@ -import contextvars -from typing import TypeVar, Type +__all__ = ['DataMixin', 'ContextInstanceMixin'] -__all__ = ('DataMixin', 'ContextInstanceMixin') +import contextvars +from typing import Type, TypeVar class DataMixin: diff --git a/aiogram/utils/text_decorations.py b/aiogram/utils/text_decorations.py index 09484e3c..afefbe2a 100644 --- a/aiogram/utils/text_decorations.py +++ b/aiogram/utils/text_decorations.py @@ -1,20 +1,20 @@ from __future__ import annotations -import html -import re -from abc import ABC, abstractmethod -from typing import TYPE_CHECKING, Generator, List, Optional, Pattern, cast - -if TYPE_CHECKING: # pragma: no cover - from aiogram.types import MessageEntity - -__all__ = ( +__all__ = [ 'HtmlDecoration', 'MarkdownDecoration', 'TextDecoration', 'html_decoration', 'markdown_decoration', -) +] + +import html +import re +from abc import ABC, abstractmethod +from typing import Generator, List, Optional, Pattern, TYPE_CHECKING, cast + +if TYPE_CHECKING: # pragma: no cover + from aiogram.types import MessageEntity class TextDecoration(ABC):