Skip to main content

Easily strip decorator from function or class method

Project description

strip-deco

license pypi pyversions badge Downloads


strip-deco easily strip decorator from function or class method

Installation

pip3 install strip-deco

Prototype

def stripdeco(obj: Any, depth: int = None, **kwargs) -> None:
    ...
  • obj: Function or Class method
  • depth: If your function is wrapped in multiple decorators, you can set how many decorators to disable through the depth parameter.
  • kwargs: Arguments that obj have to receive

Example of normal function

from strip_deco import stripdeco


def deco(func):
    def _deco(*args, **kwargs):
        result = func(*args, **kwargs)
        return result
    return _deco
    
@deco
def test():
    pass
    

stripdeco(obj=test)


@deco
@deco
@deco
def test():
    pass
    

stripdeco(obj=test)
stripdeco(obj=test, depth=1)  # Only strip one 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
    @deco
    def run(self):
        pass
    
    @deco
    @deco
    def run_with_arguments(self, user_id):
        pass


stripdeco(obj=Service().run)
stripdeco(obj=Service().run, depth=1)  # Only strip one decorator

stripdeco(obj=Service().run_with_arguments, user_id=1)  # Case of other arguments
stripdeco(obj=Service().run_with_arguments, depth=1, user_id=1)  # Only strip one decorator

Example of class method with init

from strip_deco import stripdeco


def deco(func):
    def _deco(*args, **kwargs):
        result = func(*args, **kwargs)
        return result
    return _deco


class Service:
    def __init__(self, repo):
        self.repo = repo

    @deco
    @deco
    def run(self):
        pass
    
    @deco
    @deco
    def run_with_arguments(self, user_id):
        pass

        
stripdeco(obj=Service(repo="repo").run)
stripdeco(obj=Service(repo="repo").run, depth=1)  # Only strip one decorator

stripdeco(obj=Service(repo="repo").run_with_arguments, user_id=1)  # Case of other arguments
stripdeco(obj=Service(repo="repo").run_with_arguments, depth=1, user_id=1)  # Only strip one decorator
  • 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


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.9.tar.gz (3.5 kB view details)

Uploaded Source

File details

Details for the file strip-deco-0.0.9.tar.gz.

File metadata

  • Download URL: strip-deco-0.0.9.tar.gz
  • Upload date:
  • Size: 3.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for strip-deco-0.0.9.tar.gz
Algorithm Hash digest
SHA256 828e75fdc88d714b24188e1c96879c25b734e6faaddb938e037b279661ff3075
MD5 0ce6199f3f106aa998e189f26a9256c3
BLAKE2b-256 a67f40ee9474a6ea559291f0b7dbba60cd6ab26804d7c74508d7c538fffdafe6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page