Creating decorators with arguments made easy.
Project description
decfunc
Creating decorators with arguments made easy.
Creating decorators in Python is easy, unless you want to use arguments. The aim of this library to abstract away some code that makes argument-ed decorators work.
Documentation
This library only contains one class: wrapper
. The mutate
method of this class is responsible for your business logic.
You can simply use a class inheriting from wrapper
as the
decorator. For example:
from decfunc import wrapper
class square_root(wrapper):
def mutate(self, wrapped, *args, **kwargs):
return wrapped(*args, **kwargs) ** (1 / 2)
@square_root
def get_number(*args, **kwargs):
return 4
get_number() # 2.0
In this example, decorated function's return value is mutated so
that its square root is returned instead. As you can see
mutate
method takes a wrapped
, which is the decorated
class or function, and *args
, **kwargs
, which correspond
to given args and kwargs of the decorated function/class
(you may also use the signature of the decorated callable).
Now lets change this a bit so that we can give pass
an argument named n
, which will denote to nth root, instead
of square root.
from decfunc import wrapper
class nth_root(wrapper):
def __init__(self, n=2):
self.n = n
def mutate(self, wrapped, *args, **kwargs):
return wrapped(*args, **kwargs) ** (1 / self.n)
@nth_root(n=3)
def get_number(*args, **kwargs):
return 27
@nth_root
def get_another_number(*args, **kwargs):
return 16
get_number() # 3.0
get_another_number() # 4.0
As you can see, in order to add arguments to the decorator
you can use __init__
, whose signature will be the signature
of the decorator.
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
Built Distribution
File details
Details for the file decfunc-1.0.0.tar.gz
.
File metadata
- Download URL: decfunc-1.0.0.tar.gz
- Upload date:
- Size: 3.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2245d3c29cfa7756059dbfd2a20247a91eb9c5b1155eac715fe665ad63b3fa8d |
|
MD5 | 5de3bdea9e9b70a8a1f3e2f960f431c7 |
|
BLAKE2b-256 | d3b06dee1b86f6c79aafc60a5a7842885b4ad2c3cae66aacb6eca0a406c20634 |
File details
Details for the file decfunc-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: decfunc-1.0.0-py3-none-any.whl
- Upload date:
- Size: 3.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9cd39a4cac99b5409ee663ab6f4f1e0708980201483b0adb6c059ea615463f66 |
|
MD5 | 9cd5ede17ca4778c82be38dc0d426f6e |
|
BLAKE2b-256 | c65eb78961bdfe0911ce45017f0b881491405831ad324bd34c7a290d7fab9352 |