From 5846d3a6c2aa8ae9b60b86247d4cf200d8c0a01a Mon Sep 17 00:00:00 2001 From: Suren Khorenyan Date: Sat, 10 Aug 2019 18:41:29 +0300 Subject: [PATCH] More minor refactoring --- aiogram/dispatcher/dispatcher.py | 49 +++++++++++++++++--------- aiogram/dispatcher/filters/__init__.py | 2 +- aiogram/dispatcher/filters/builtin.py | 4 +-- aiogram/dispatcher/filters/factory.py | 2 +- aiogram/dispatcher/filters/filters.py | 2 +- aiogram/dispatcher/handler.py | 7 ++-- 6 files changed, 42 insertions(+), 24 deletions(-) diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index 8236118e..24e13801 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -85,39 +85,56 @@ class Dispatcher(DataMixin, ContextInstanceMixin): filters_factory.bind(StateFilter, exclude_event_handlers=[ self.errors_handlers, - self.poll_handlers + self.poll_handlers, ]) filters_factory.bind(ContentTypeFilter, event_handlers=[ - self.message_handlers, self.edited_message_handlers, - self.channel_post_handlers, self.edited_channel_post_handlers, + self.message_handlers, + self.edited_message_handlers, + self.channel_post_handlers, + self.edited_channel_post_handlers, ]), filters_factory.bind(Command, event_handlers=[ - self.message_handlers, self.edited_message_handlers + self.message_handlers, + self.edited_message_handlers ]) filters_factory.bind(Text, event_handlers=[ - self.message_handlers, self.edited_message_handlers, - self.channel_post_handlers, self.edited_channel_post_handlers, - self.callback_query_handlers, self.poll_handlers, self.inline_query_handlers, + self.message_handlers, + self.edited_message_handlers, + self.channel_post_handlers, + self.edited_channel_post_handlers, + self.callback_query_handlers, + self.poll_handlers, + self.inline_query_handlers, ]) filters_factory.bind(HashTag, event_handlers=[ - self.message_handlers, self.edited_message_handlers, - self.channel_post_handlers, self.edited_channel_post_handlers, + self.message_handlers, + self.edited_message_handlers, + self.channel_post_handlers, + self.edited_channel_post_handlers, ]) filters_factory.bind(Regexp, event_handlers=[ - self.message_handlers, self.edited_message_handlers, - self.channel_post_handlers, self.edited_channel_post_handlers, - self.callback_query_handlers, self.poll_handlers, self.inline_query_handlers, + self.message_handlers, + self.edited_message_handlers, + self.channel_post_handlers, + self.edited_channel_post_handlers, + self.callback_query_handlers, + self.poll_handlers, + self.inline_query_handlers, ]) filters_factory.bind(RegexpCommandsFilter, event_handlers=[ - self.message_handlers, self.edited_message_handlers, + self.message_handlers, + self.edited_message_handlers, ]) filters_factory.bind(ExceptionsFilter, event_handlers=[ self.errors_handlers, ]) filters_factory.bind(IdFilter, event_handlers=[ - self.message_handlers, self.edited_message_handlers, - self.channel_post_handlers, self.edited_channel_post_handlers, - self.callback_query_handlers, self.inline_query_handlers + self.message_handlers, + self.edited_message_handlers, + self.channel_post_handlers, + self.edited_channel_post_handlers, + self.callback_query_handlers, + self.inline_query_handlers, ]) def __del__(self): diff --git a/aiogram/dispatcher/filters/__init__.py b/aiogram/dispatcher/filters/__init__.py index eb4a5a52..374bcf2a 100644 --- a/aiogram/dispatcher/filters/__init__.py +++ b/aiogram/dispatcher/filters/__init__.py @@ -27,5 +27,5 @@ __all__ = [ 'get_filter_spec', 'get_filters_spec', 'execute_filter', - 'check_filters' + 'check_filters', ] diff --git a/aiogram/dispatcher/filters/builtin.py b/aiogram/dispatcher/filters/builtin.py index 9a44de23..b0324290 100644 --- a/aiogram/dispatcher/filters/builtin.py +++ b/aiogram/dispatcher/filters/builtin.py @@ -558,9 +558,9 @@ class IdFilter(Filter): if self.user_id and self.chat_id: return user_id in self.user_id and chat_id in self.chat_id - elif self.user_id: + if self.user_id: return user_id in self.user_id - elif self.chat_id: + if self.chat_id: return chat_id in self.chat_id return False diff --git a/aiogram/dispatcher/filters/factory.py b/aiogram/dispatcher/filters/factory.py index 89e3e792..13b188ff 100644 --- a/aiogram/dispatcher/filters/factory.py +++ b/aiogram/dispatcher/filters/factory.py @@ -70,4 +70,4 @@ class FiltersFactory: yield filter_ if full_config: - raise NameError('Invalid filter name(s): \'' + '\', '.join(full_config.keys()) + '\'') + raise NameError("Invalid filter name(s): '" + "', ".join(full_config.keys()) + "'") diff --git a/aiogram/dispatcher/filters/filters.py b/aiogram/dispatcher/filters/filters.py index 4806c55a..220ef96c 100644 --- a/aiogram/dispatcher/filters/filters.py +++ b/aiogram/dispatcher/filters/filters.py @@ -82,7 +82,7 @@ class FilterRecord: Filters record for factory """ - def __init__(self, callback: typing.Callable, + def __init__(self, callback: typing.Union[typing.Callable, 'AbstractFilter'], validator: typing.Optional[typing.Callable] = None, event_handlers: typing.Optional[typing.Iterable[Handler]] = None, exclude_event_handlers: typing.Optional[typing.Iterable[Handler]] = None): diff --git a/aiogram/dispatcher/handler.py b/aiogram/dispatcher/handler.py index 889dc8d6..cd5e9b50 100644 --- a/aiogram/dispatcher/handler.py +++ b/aiogram/dispatcher/handler.py @@ -1,7 +1,7 @@ import inspect from contextvars import ContextVar from dataclasses import dataclass -from typing import Optional, Iterable +from typing import Optional, Iterable, List ctx_data = ContextVar('ctx_handler_data') current_handler = ContextVar('current_handler') @@ -41,11 +41,10 @@ class Handler: self.dispatcher = dispatcher self.once = once - self.handlers = [] + self.handlers: List[Handler.HandlerObj] = [] self.middleware_key = middleware_key def register(self, handler, filters=None, index=None): - from .filters import get_filters_spec """ Register callback @@ -55,6 +54,8 @@ class Handler: :param filters: list of filters :param index: you can reorder handlers """ + from .filters import get_filters_spec + spec = _get_spec(handler) if filters and not isinstance(filters, (list, tuple, set)):