From 90d9fdae01f2f71b129dc12285f6ff2c994362b0 Mon Sep 17 00:00:00 2001 From: andrew000 <11490628+andrew000@users.noreply.github.com> Date: Tue, 23 Dec 2025 13:49:14 +0200 Subject: [PATCH] Code optimization --- aiogram/dispatcher/event/handler.py | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/aiogram/dispatcher/event/handler.py b/aiogram/dispatcher/event/handler.py index 12c41d13..204a548d 100644 --- a/aiogram/dispatcher/event/handler.py +++ b/aiogram/dispatcher/event/handler.py @@ -17,6 +17,12 @@ from aiogram.utils.warnings import Recommendation CallbackType = Callable[..., Any] +_ACCEPTED_PARAM_KINDS = { + inspect.Parameter.POSITIONAL_ONLY, + inspect.Parameter.POSITIONAL_OR_KEYWORD, + inspect.Parameter.KEYWORD_ONLY, +} + @dataclass class CallableObject: @@ -42,19 +48,16 @@ class CallableObject: self.varkw = False return - self.params = { - p.name - for p in signature.parameters.values() - if p.kind - in ( - inspect.Parameter.POSITIONAL_ONLY, - inspect.Parameter.POSITIONAL_OR_KEYWORD, - inspect.Parameter.KEYWORD_ONLY, - ) - } - self.varkw = any( - p.kind == inspect.Parameter.VAR_KEYWORD for p in signature.parameters.values() - ) + params: set[str] = set() + varkw: bool = False + + for p in signature.parameters.values(): + if p.kind in _ACCEPTED_PARAM_KINDS: + params.add(p.name) + elif p.kind == inspect.Parameter.VAR_KEYWORD: + varkw = True + self.params = params + self.varkw = varkw def _prepare_kwargs(self, kwargs: dict[str, Any]) -> dict[str, Any]: if self.varkw: