Signature-preserving function delegation
Project description
delegatefn
A Python package for adding the parameters of a delegatee function to a delegator function, while keeping the original parameters of the delegator function.
Installation
To install delegatefn, use pip:
pip install delegatefn
Usage
To use the delegate decorator function, import it from delegatefn:
from delegatefn import delegate
Then, decorate your delegator function with the delegate decorator, passing in the delegatee function as an argument:
@delegate(delegatee)
def delegator(c: int, d: int, e: int, **kwargs):
...
The delegator function will now have the parameters of delegatee added to it, while keeping its original parameters.
You can also customize the behavior of the delegate decorator by passing in the following keyword arguments:
-
kwonly: A boolean value indicating whether the parameters of delegatee should be converted to keyword-only arguments. The default value isTrue. -
delegate_docstring: A boolean value indicating whether the docstring of delegatee should be used as the docstring of the delegator function. The default value isTrue. -
ignore: A set of strings containing the names of the parameters of delegatee that should be ignored. The default value is an empty set.
Here is an example of how to use these keyword arguments:
@delegate(delegatee, kwonly=True, delegate_docstring=True, ignore={"a", "b"})
def delegator(c: int, d: int, e: int, **kwargs):
...
Example
Here is an example of how to use the delegate decorator:
from delegatefn import delegate
def delegatee(a: int, b: int, **kwargs):
...
@delegate(delegatee)
def delegator(c: int, d: int, e: int, **kwargs):
...
The delegator function will now have the parameters a: int, b: int, and kwargs added to it, in addition to its original parameters c: int, d: int, and e: int.
Acknowledgements
This approach was inspired by fast.ai.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file delegatefn-0.3.4.tar.gz.
File metadata
- Download URL: delegatefn-0.3.4.tar.gz
- Upload date:
- Size: 4.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.1 CPython/3.11.1 Darwin/22.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84f1044b5e83239b722de212aeb472cd090cd5891f3fba3d113448e6cc26b2da
|
|
| MD5 |
b2d089fcf8ee63093021fdea8fdf0db2
|
|
| BLAKE2b-256 |
b736bb4561087b70c22e30cbe5bcc346e9ed92be0a3acb76fe6edb61d826c92d
|
File details
Details for the file delegatefn-0.3.4-py3-none-any.whl.
File metadata
- Download URL: delegatefn-0.3.4-py3-none-any.whl
- Upload date:
- Size: 4.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.1 CPython/3.11.1 Darwin/22.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32f1e171b448d322d5478e0d34526b7f3eb6d7c4176cce277f6b390222d1225c
|
|
| MD5 |
2f5948f3f0170d763e4c3e1b505ed27c
|
|
| BLAKE2b-256 |
7ffd7f515958576d3dd4cfbdac0956e8b684a76ec26c582e835edcdd600385f9
|