Easily strip decorator from function or class method
Project description
strip-deco
strip-deco easily strip decorator from function or class method
Installation
pip3 install strip-deco
Example of function decorator
from strip_deco import stripdeco
def deco(func):
def _deco(*args, **kwargs):
result = func(*args, **kwargs)
return result
return _deco
@deco
def test():
pass
original_func = stripdeco(obj=test)
@deco
@deco
@deco
def test():
pass
original_func = stripdeco(obj=test, depth=2) # It will only strip two decorator
Example of Class decorator
from strip_deco import stripdeco
class Deco:
def __call__(self, func):
def deco(*args, **kwargs):
return func(*args, **kwargs)
return deco
@Deco()
def test():
pass
original_func = stripdeco(obj=test)
@Deco()
@Deco()
@Deco()
def test():
pass
original_func = stripdeco(obj=test, depth=2) # It will only strip two decorator
Example of class method
from strip_deco import stripdeco
def deco(func):
def _deco(*args, **kwargs):
result = func(*args, **kwargs)
return result
return _deco
class Service:
@deco
def run(self):
pass
@deco
def run_with_arguments(self, user_id):
pass
original_func = stripdeco(obj=Service().run)
original_func(Service) # Must add class through first argument
original_func = stripdeco(obj=Service().run_with_arguments)
original_func(Service, user_id=1) # Case of other arguments
Note
- strip-deco automatically removes any kind of decorators. (class/function)
- It supports both decorator,
functools wraps
and non functools wraps . - If you specify depth paramater, it will strip order by outside.
- The class argument is required when executing class method.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
strip-deco-0.0.2.tar.gz
(3.3 kB
view hashes)