2 года назад
История
README.md
FunnyDeco
Collection of useful decorators for python projects
Implements:
- Benchmarking util for methods
- Singleton pattern realisation for classes
- “Static” variables support in functions
Installation:
pip install funnydeco
Examples:
1. Benchmark decorator
from funnydeco.core import benchmark
# noinspection PyUnusedLocal
@benchmark
def long_loop() -> int:
"""
Demo func for example of benchmark
"""
result = 0
for i in range(int(1e7)):
result += i
print('foo')
return result
if __name__ == '__main__':
long_loop(print_benchmark=True, benchmark_name='Long loop procedure')
long_loop()
2. Singleton decorator
from funnydeco import singleton, SingletonReseter
from time import sleep
@singleton
class SlowInitClass(SingletonReseter):
"""
Demo class for example of singleton decorator
"""
def __init__(self):
self.variable = 1
print("I'm sleeping...")
sleep(3)
print("I'v woken up!")
if __name__ == '__main__':
print('First dumbass init:')
dumbass1 = SlowInitClass()
print(f'variable={dumbass1.variable}')
dumbass1.variable = 2
print()
print('Second dumbass init:')
dumbass2 = SlowInitClass()
print(f'variable={dumbass2.variable}')
print()
print('Third dumbass init:')
print('Temporary stopping singleton behaviour')
SlowInitClass().reset_singleton()
dumbass3 = SlowInitClass()
print(f'variable={dumbass3.variable}')
dumbass3.variable = 3
print()
print('Fourth dumbass init:')
dumbass4 = SlowInitClass()
print(f'variable={dumbass4.variable}')
print()
If you do not need to use reset_singleton functionality you may not to inherit your class from SingletonReseter
3. Static variables decorator
from funnydeco import static_vars
@static_vars(baz=False)
def foo(bar) -> None:
"""
Demo func for example of static_vars
"""
print(bar, foo.baz)
foo.baz = not foo.baz
if __name__ == '__main__':
foo(1)
foo(2)
foo(3)
foo(4)
Конвейеры
0 успешных
0 с ошибкой