From 00026a29f568a7fac78abd2dfdb6948ce5c5f199 Mon Sep 17 00:00:00 2001 From: vmphase Date: Sat, 10 Jan 2026 17:01:49 +0200 Subject: [PATCH 1/2] fix(types): align request middleware typing with actual return value Refs: #1723 --- aiogram/client/session/base.py | 2 +- aiogram/client/session/middlewares/base.py | 10 +++++----- aiogram/client/session/middlewares/request_logging.py | 4 ++-- docs/api/session/middleware.rst | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/aiogram/client/session/base.py b/aiogram/client/session/base.py index 08c428bd..b33878ea 100644 --- a/aiogram/client/session/base.py +++ b/aiogram/client/session/base.py @@ -256,7 +256,7 @@ class BaseSession(abc.ABC): timeout: int | None = None, ) -> TelegramType: middleware = self.middleware.wrap_middlewares(self.make_request, timeout=timeout) - return cast(TelegramType, await middleware(bot, method)) + return await middleware(bot, method) async def __aenter__(self) -> Self: return self diff --git a/aiogram/client/session/middlewares/base.py b/aiogram/client/session/middlewares/base.py index a933b600..ed55e421 100644 --- a/aiogram/client/session/middlewares/base.py +++ b/aiogram/client/session/middlewares/base.py @@ -7,7 +7,7 @@ from aiogram.methods.base import TelegramType if TYPE_CHECKING: from aiogram.client.bot import Bot - from aiogram.methods import Response, TelegramMethod + from aiogram.methods import TelegramMethod class NextRequestMiddlewareType(Protocol[TelegramType]): # pragma: no cover @@ -15,7 +15,7 @@ class NextRequestMiddlewareType(Protocol[TelegramType]): # pragma: no cover self, bot: Bot, method: TelegramMethod[TelegramType], - ) -> Response[TelegramType]: + ) -> TelegramType: pass @@ -25,7 +25,7 @@ class RequestMiddlewareType(Protocol): # pragma: no cover make_request: NextRequestMiddlewareType[TelegramType], bot: Bot, method: TelegramMethod[TelegramType], - ) -> Response[TelegramType]: + ) -> TelegramType: pass @@ -40,7 +40,7 @@ class BaseRequestMiddleware(ABC): make_request: NextRequestMiddlewareType[TelegramType], bot: Bot, method: TelegramMethod[TelegramType], - ) -> Response[TelegramType]: + ) -> TelegramType: """ Execute middleware @@ -48,5 +48,5 @@ class BaseRequestMiddleware(ABC): :param bot: bot for request making :param method: Request method (Subclass of :class:`aiogram.methods.base.TelegramMethod`) - :return: :class:`aiogram.methods.Response` + :return: Concrete Telegram type (e.g. Message, User, etc.) """ diff --git a/aiogram/client/session/middlewares/request_logging.py b/aiogram/client/session/middlewares/request_logging.py index f46631bf..e6ea6720 100644 --- a/aiogram/client/session/middlewares/request_logging.py +++ b/aiogram/client/session/middlewares/request_logging.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Any from aiogram import loggers from aiogram.methods import TelegramMethod -from aiogram.methods.base import Response, TelegramType +from aiogram.methods.base import TelegramType from .base import BaseRequestMiddleware, NextRequestMiddlewareType @@ -27,7 +27,7 @@ class RequestLogging(BaseRequestMiddleware): make_request: NextRequestMiddlewareType[TelegramType], bot: "Bot", method: TelegramMethod[TelegramType], - ) -> Response[TelegramType]: + ) -> TelegramType: if type(method) not in self.ignore_methods: loggers.middlewares.info( "Make request with method=%r by bot id=%d", diff --git a/docs/api/session/middleware.rst b/docs/api/session/middleware.rst index 5a312c3e..355e0cb4 100644 --- a/docs/api/session/middleware.rst +++ b/docs/api/session/middleware.rst @@ -35,7 +35,7 @@ Register using decorator make_request: NextRequestMiddlewareType[TelegramType], bot: "Bot", method: TelegramMethod[TelegramType], - ) -> Response[TelegramType]: + ) -> TelegramType: # do something with request return await make_request(bot, method) @@ -67,7 +67,7 @@ Function based session middleware make_request: NextRequestMiddlewareType[TelegramType], bot: "Bot", method: TelegramMethod[TelegramType], - ) -> Response[TelegramType]: + ) -> TelegramType: try: # do something with request return await make_request(bot, method) From 60b19cd1379b95c1ccda85252df2b0c267491f34 Mon Sep 17 00:00:00 2001 From: vmphase Date: Sat, 10 Jan 2026 17:28:05 +0200 Subject: [PATCH 2/2] new(changelog) --- CHANGES/1723.bugfix.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 CHANGES/1723.bugfix.rst diff --git a/CHANGES/1723.bugfix.rst b/CHANGES/1723.bugfix.rst new file mode 100644 index 00000000..69202c9e --- /dev/null +++ b/CHANGES/1723.bugfix.rst @@ -0,0 +1 @@ +Fixed type hinting for session middlewares where the return type was incorrectly marked as :class:`aiogram.methods.base.Response` instead of the concrete :class:`aiogram.methods.base.TelegramType`.