omnipy.util.callable_decorator
Support class-based decorators that behave like callable decorators.
This module exposes a meta-decorator for turning ordinary classes into decorator
factories for callables. It preserves wrapped-function metadata, supports both
@decorator and @decorator(...) syntax, and bridges the gap between Python's
class-level special-method lookup and instance-level decoration state. An optional
hook can disambiguate when a single callable argument should be treated as a
decorator argument instead of as the decorated callable.
| FUNCTION | DESCRIPTION |
|---|---|
callable_decorator_cls |
"Meta-decorator" that allows any class to function as a decorator for a callable. |
callable_decorator_cls
callable_decorator_cls(
cls: Callable[Concatenate[Callable[_CallP, _RetT], _InitP], _DecoratedT],
*,
single_callable_arg_is_decorator_arg: Callable[[object], bool] | None = None,
) -> Callable[_InitP, Callable[[Callable[_CallP, _RetT]], _DecoratedT]]
"Meta-decorator" that allows any class to function as a decorator for a callable.
The only requirements are that the first argument after self of the init() method needs to be annotated as a callable.
Arguments and keyword arguments to the class decorator are supported.
| PARAMETER | DESCRIPTION |
|---|---|
cls
|
Class to adapt into a callable decorator.
TYPE:
|
single_callable_arg_is_decorator_arg
|
Optional disambiguation hook for the
single-argument callable case. Return
TYPE:
|
Source code in src/omnipy/util/callable_decorator.py
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | |