Simple and useful decorator utilities.
Project description
decorator-utils
Installation
python3 -m pip install decorator-utils
Usage
Without context
from random import randint
from decorator_utils import function_wrapper
@function_wrapper(pre_cb=lambda i: print(f'Calling with param {i}'),
post_cb=lambda r, i: print(f'Function call result `{r}` with param `{i}`'))
def random_int(increment):
number = randint(0, 10)
print(f'-> Generated number {number}')
return number + increment
if __name__ == '__main__':
n = randint(0, 10)
random_int(n)
With context
from random import randint
from time import perf_counter_ns
from typing import final
from decorator_utils import DecoratorContext
class TraceCall(DecoratorContext):
__time: int
@final
def pre_cb(self, *args, **kwargs) -> None:
self.__time = perf_counter_ns()
print(f'Starting function call with args `{args}` and kwargs `{kwargs}`.')
@final
def post_cb(self, result, *args, **kwargs) -> None:
elapsed_time = (perf_counter_ns() - self.__time) / 1e+9
print(f'Function took {elapsed_time} seconds to return value `{result}`.')
@TraceCall
def random_int(increment):
number = randint(0, 10)
print(f'-> Generated number {number}')
return number + increment
if __name__ == '__main__':
n = randint(0, 10)
random_int(n)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
decorator_utils-1.1.1.tar.gz
(5.2 kB
view hashes)
Built Distribution
Close
Hashes for decorator_utils-1.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0fa057019f080ac541a142a0aa54377fc372364aa688c8bfd63bc596a59829f8 |
|
MD5 | 9e6a7209defd425b26fc810bb843a46f |
|
BLAKE2b-256 | 59491676516f19ae31f14b80594eb56affb37bf12232471f04dd4547a04c7129 |