From 44c74a367cdd109de7c25c5446c62f5acd595c2b Mon Sep 17 00:00:00 2001 From: Nikita <43146729+gabbhack@users.noreply.github.com> Date: Sun, 30 Dec 2018 16:01:53 +0500 Subject: [PATCH 1/2] Fix Text filter for InlineQuery --- aiogram/dispatcher/filters/builtin.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/aiogram/dispatcher/filters/builtin.py b/aiogram/dispatcher/filters/builtin.py index 0cb41544..04a4132c 100644 --- a/aiogram/dispatcher/filters/builtin.py +++ b/aiogram/dispatcher/filters/builtin.py @@ -6,7 +6,7 @@ from typing import Any, Dict, Iterable, Optional, Union from aiogram import types from aiogram.dispatcher.filters.filters import BoundFilter, Filter -from aiogram.types import CallbackQuery, Message +from aiogram.types import CallbackQuery, Message, InlineQuery from aiogram.utils.deprecated import warn_deprecated @@ -159,11 +159,13 @@ class Text(Filter): elif 'text_endswith' in full_config: return {'endswith': full_config.pop('text_endswith')} - async def check(self, obj: Union[Message, CallbackQuery]): + async def check(self, obj: Union[Message, CallbackQuery, InlineQuery]): if isinstance(obj, Message): text = obj.text or obj.caption or '' elif isinstance(obj, CallbackQuery): text = obj.data + elif isinstance(obj, InlineQuery): + text = obj.query else: return False From 5aa34625c6436a595d22ba933279a21eafc38eb5 Mon Sep 17 00:00:00 2001 From: balki <189196+balki@users.noreply.github.com> Date: Mon, 31 Dec 2018 23:05:44 -0500 Subject: [PATCH 2/2] Add typehint for IDE autocomplete --- aiogram/utils/mixins.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/aiogram/utils/mixins.py b/aiogram/utils/mixins.py index dba2f2cd..aa248cd9 100644 --- a/aiogram/utils/mixins.py +++ b/aiogram/utils/mixins.py @@ -1,4 +1,7 @@ import contextvars +from typing import TypeVar, Type + +__all__ = ('DataMixin', 'ContextInstanceMixin') class DataMixin: @@ -23,19 +26,22 @@ class DataMixin: return self.data.get(key, default) +T = TypeVar('T') + + class ContextInstanceMixin: def __init_subclass__(cls, **kwargs): cls.__context_instance = contextvars.ContextVar('instance_' + cls.__name__) return cls @classmethod - def get_current(cls, no_error=True): + def get_current(cls: Type[T], no_error=True) -> T: if no_error: return cls.__context_instance.get(None) return cls.__context_instance.get() @classmethod - def set_current(cls, value): + def set_current(cls: Type[T], value: T): if not isinstance(value, cls): raise TypeError(f"Value should be instance of '{cls.__name__}' not '{type(value).__name__}'") cls.__context_instance.set(value)