fix mypy errors

This commit is contained in:
Vitaly312 2026-04-07 12:02:42 +03:00
parent b1676451f8
commit 0dfec1f24a
4 changed files with 24 additions and 18 deletions

View file

@ -292,10 +292,13 @@ class Dispatcher(Router):
event: TelegramObject, event: TelegramObject,
**kwargs: Any, **kwargs: Any,
) -> Any: ) -> Any:
if self.tracer is None: if (
self.tracer is None
or (tracer_manager := self.tracer.get_trigger_span_manager(event)) is None
):
return await super()._propagate_event(observer, update_type, event, **kwargs) return await super()._propagate_event(observer, update_type, event, **kwargs)
async with self.tracer.get_trigger_span_manager(event): async with tracer_manager:
return await super()._propagate_event(observer, update_type, event, **kwargs) return await super()._propagate_event(observer, update_type, event, **kwargs)
@classmethod @classmethod

View file

@ -136,10 +136,12 @@ class TelegramEventObserver:
handler_manager := tracer_instance.get_handler_span_manager(handler) handler_manager := tracer_instance.get_handler_span_manager(handler)
): ):
@functools.wraps(handler.callback) @functools.wraps(handler.call)
async def handler_wrapper(event, **kwargs): async def handler_wrapper(
event: TelegramObject, *args: Any, **kwargs: Any
) -> Any:
async with handler_manager: # noqa: B023 async with handler_manager: # noqa: B023
return await handler.call(event, **kwargs) # noqa: B023 return await handler.call(event, *args, **kwargs) # noqa: B023
handler_call = handler_wrapper handler_call = handler_wrapper
wrapped_inner = self.outer_middleware.wrap_middlewares( wrapped_inner = self.outer_middleware.wrap_middlewares(

View file

@ -58,15 +58,15 @@ class MiddlewareManager(Sequence[MiddlewareType[TelegramObject]]):
async def middleware_step( async def middleware_step(
tracer_instance: AbstractTracer, tracer_instance: AbstractTracer,
middleware: MiddlewareType[TelegramObject], middleware: MiddlewareType[TelegramObject],
handler, handler: CallbackType,
event: TelegramObject, event: TelegramObject,
data, kwargs: dict[str, Any],
) -> Any: ) -> Any:
manager = tracer_instance.get_middleware_span_manager(middleware) manager = tracer_instance.get_middleware_span_manager(middleware)
if manager is None: if manager is None:
return await middleware(handler, event, data) return await middleware(handler, event, kwargs)
async with manager: async with manager:
return await middleware(handler, event, data) return await middleware(handler, event, kwargs)
@staticmethod @staticmethod
def wrap_middlewares( def wrap_middlewares(
@ -80,10 +80,10 @@ class MiddlewareManager(Sequence[MiddlewareType[TelegramObject]]):
tracer_instance = tracer.get() tracer_instance = tracer.get()
if tracer_instance is None: if tracer_instance is None:
for m in reversed(middlewares): for m in reversed(middlewares):
middleware = functools.partial(m, middleware) middleware = functools.partial(m, middleware) # type: ignore[assignment]
else: else:
for m in reversed(middlewares): for m in reversed(middlewares):
middleware = functools.partial( middleware = functools.partial( # type: ignore[assignment]
MiddlewareManager.middleware_step, tracer_instance, m, middleware MiddlewareManager.middleware_step, tracer_instance, m, middleware
) )
return middleware return middleware

View file

@ -5,35 +5,36 @@ from contextlib import AbstractAsyncContextManager
from contextvars import ContextVar from contextvars import ContextVar
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from aiogram.dispatcher.event.bases import MiddlewareEventType, MiddlewareType
if TYPE_CHECKING: if TYPE_CHECKING:
from aiogram import BaseMiddleware from aiogram.dispatcher.event.handler import HandlerObject
from aiogram.dispatcher.event.handler import CallbackType, HandlerObject
from aiogram.types import TelegramObject from aiogram.types import TelegramObject
class AbstractTracer(ABC): class AbstractTracer(ABC):
@abstractmethod @abstractmethod
def get_middleware_span_manager( def get_middleware_span_manager(
self, middleware: BaseMiddleware self, middleware: MiddlewareType[MiddlewareEventType]
) -> AbstractAsyncContextManager | None: ) -> AbstractAsyncContextManager[None] | None:
pass pass
@abstractmethod @abstractmethod
def get_handler_span_manager( def get_handler_span_manager(
self, handler: HandlerObject self, handler: HandlerObject
) -> AbstractAsyncContextManager | None: ) -> AbstractAsyncContextManager[None] | None:
pass pass
@abstractmethod @abstractmethod
def get_trigger_span_manager( def get_trigger_span_manager(
self, event: TelegramObject self, event: TelegramObject
) -> AbstractAsyncContextManager | None: ) -> AbstractAsyncContextManager[None] | None:
pass pass
@abstractmethod @abstractmethod
def get_filter_span_manager( def get_filter_span_manager(
self, handler: HandlerObject self, handler: HandlerObject
) -> AbstractAsyncContextManager | None: ) -> AbstractAsyncContextManager[None] | None:
pass pass