From 8d91f55ea3141aadc6a1af48a80064c0029e3b8d Mon Sep 17 00:00:00 2001 From: Matthew Vine <32849887+MattTheCuber@users.noreply.github.com> Date: Wed, 7 Oct 2026 07:57:07 -0400 Subject: [PATCH] fix(typing): add typing for decorators --- src/trame_common/decorators/klass.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/trame_common/decorators/klass.py b/src/trame_common/decorators/klass.py index 863e166..7aba102 100644 --- a/src/trame_common/decorators/klass.py +++ b/src/trame_common/decorators/klass.py @@ -1,10 +1,12 @@ import functools import inspect import logging +from collections.abc import Callable +from typing import Any, TypeVar -logger = logging.getLogger(__name__) +F = TypeVar("F", bound=Callable[..., Any]) -# logging.basicConfig(level=logging.DEBUG) +logger = logging.getLogger(__name__) def can_be_decorated(x): @@ -102,10 +104,10 @@ def wrapped_init(instance, *args, **kwargs): return klass -def change(*args): +def change(*args: str) -> Callable[[F], F]: """Method decorator for state change""" - def decorate(f): + def decorate(f: F) -> F: if not hasattr(f, "_trame_state_change"): f._trame_state_change = [] f._trame_state_change.extend(args) @@ -114,10 +116,10 @@ def decorate(f): return decorate -def trigger(*args): +def trigger(*args: str) -> Callable[[F], F]: """Method decorator to assign a trigger name to a function""" - def decorate(f): + def decorate(f: F) -> F: if not hasattr(f, "_trame_trigger_names"): f._trame_trigger_names = [] f._trame_trigger_names.extend(args)