mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Typing in dispatcher package
This commit is contained in:
parent
6bbc01b08b
commit
8e3867fbd7
3 changed files with 20 additions and 8 deletions
|
|
@ -3,15 +3,17 @@ from dataclasses import dataclass, field
|
|||
from functools import partial
|
||||
from typing import Any, Awaitable, Callable, Dict, List, Tuple, Union
|
||||
|
||||
from aiogram.dispatcher.filters.base import BaseFilter
|
||||
|
||||
CallbackType = Callable[[Any], Awaitable[Any]]
|
||||
SyncFilter = Callable[[Any], Any]
|
||||
AsyncFilter = Callable[[Any], Awaitable[Any]]
|
||||
FilterType = Union[SyncFilter, AsyncFilter]
|
||||
FilterType = Union[SyncFilter, AsyncFilter, BaseFilter]
|
||||
|
||||
|
||||
@dataclass
|
||||
class CallableMixin:
|
||||
callback: Callable[[Any], Any]
|
||||
callback: Callable
|
||||
awaitable: bool = field(init=False)
|
||||
spec: inspect.FullArgSpec = field(init=False)
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ from pydantic import ValidationError
|
|||
from ..filters.base import BaseFilter
|
||||
from .handler import CallbackType, FilterObject, FilterType, HandlerObject
|
||||
|
||||
if TYPE_CHECKING:
|
||||
if TYPE_CHECKING: # pragma: no cover
|
||||
from aiogram.dispatcher.router import Router
|
||||
|
||||
|
||||
|
|
@ -87,7 +87,7 @@ class TelegramEventObserver(EventObserver):
|
|||
yield filter_
|
||||
registry.append(filter_)
|
||||
|
||||
def register(self, callback: CallbackType, *filters: FilterType, **bound_filters):
|
||||
def register(self, callback: CallbackType, *filters: FilterType, **bound_filters: Any):
|
||||
resolved_filters = self.resolve_filters(bound_filters)
|
||||
return super().register(callback, *filters, *resolved_filters)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,23 @@
|
|||
from abc import ABC, abstractmethod
|
||||
from typing import Any, Dict, Union
|
||||
from typing import TYPE_CHECKING, Any, Awaitable, Callable, Dict, Union
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class BaseFilter(ABC, BaseModel):
|
||||
@abstractmethod
|
||||
async def __call__(self, *args, **kwargs) -> Union[bool, Dict[str, Any]]:
|
||||
pass
|
||||
if TYPE_CHECKING: # pragma: no cover
|
||||
# This checking type-hint is needed because mypy checks validity of overrides and raises:
|
||||
# error: Signature of "__call__" incompatible with supertype "BaseFilter" [override]
|
||||
# https://mypy.readthedocs.io/en/latest/error_code_list.html#check-validity-of-overrides-override
|
||||
|
||||
__call__: Any
|
||||
else: # pragma: no cover
|
||||
|
||||
@abstractmethod
|
||||
async def __call__(
|
||||
self, *args: Any, **kwargs: Any
|
||||
) -> Callable[[Any], Awaitable[Union[bool, Dict[str, Any]]]]:
|
||||
pass
|
||||
|
||||
def __await__(self):
|
||||
return self.__call__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue