# A decorator that modifies the arguments and keyword arguments of a function based on the calling instance's attributes.
## Tested against Windows / Python 3.11 / Anaconda
## pip install argskwargsmodifierclass
```python
A decorator that modifies the arguments and keyword arguments of a function based on the calling instance's attributes.
Args:
f_py (function, optional): Reserved for the function; do not use this argument explicitly.
args_and_function (tuple of tuples): A tuple of tuples where each tuple contains an argument
name and a function to transform the argument.
The decorator will apply the specified function to each argument with a matching name.
Each transformation function takes three arguments: the argument value,
a dictionary of keyword arguments, and the instance that called the decorated method.
Returns:
function: The decorated function.
Example:
from argskwargsmodifierclass import change_args_kwargs
class ADBTEST:
def __init__(self, stripit=True):
self.stripit = stripit
@change_args_kwargs(
args_and_function=(
(
"text",
lambda arg, argdict, instance: arg.strip("x")
if instance.stripit
else arg,
),
)
)
def onefunction(self, text,number=10):
print(f"{text=}")
print(f"{number=}")
t = ADBTEST(stripit=True)
t.onefunction("bibib xxxx",number=20)
t.onefunction("bibibx xxxx",15)
t2 = ADBTEST(stripit=False)
t2.onefunction(text="aaabibib", number=0x5)
t2.onefunction("aaaabibibx xx")
t.stripit = False
t.onefunction("bibib xxxx")
t.onefunction("bibibx xxxx")
t2.stripit = True
t2.onefunction("aaabibib xxx")
t2.onefunction("aaaabibibx xx")
# text='bibib '
# number=20
# text='bibibx '
# number=15
# text='aaabibib'
# number=5
# text='aaaabibibx xx'
# number=10
# text='bibib xxxx'
# number=10
# text='bibibx xxxx'
# number=10
# text='aaabibib '
# number=10
# text='aaaabibibx '
# number=10
The `change_args_kwargs` decorator allows you to modify function arguments and keyword arguments based on
the attributes of the calling instance.
It takes a tuple of argument transformations, each of which is defined as a tuple containing an argument name,
a transformation function, and the instance that called the decorated method.
The decorator dynamically adjusts the arguments according to the instance's attributes,
providing fine-grained control over argument modification.
```
Raw data
{
"_id": null,
"home_page": "https://github.com/hansalemaos/argskwargsmodifierclass",
"name": "argskwargsmodifierclass",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "decorator,args,kwargs",
"author": "Johannes Fischer",
"author_email": "aulasparticularesdealemaosp@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/02/18/2f24c82d1aa9c6991218b94b2496ef639996deefa613ce4624bcfb1251c3/argskwargsmodifierclass-0.10.tar.gz",
"platform": null,
"description": "\r\n# A decorator that modifies the arguments and keyword arguments of a function based on the calling instance's attributes.\r\n\r\n## Tested against Windows / Python 3.11 / Anaconda\r\n\r\n## pip install argskwargsmodifierclass\r\n\r\n```python\r\nA decorator that modifies the arguments and keyword arguments of a function based on the calling instance's attributes.\r\n\r\nArgs:\r\n\tf_py (function, optional): Reserved for the function; do not use this argument explicitly.\r\n\r\n\targs_and_function (tuple of tuples): A tuple of tuples where each tuple contains an argument\r\n\tname and a function to transform the argument.\r\n\tThe decorator will apply the specified function to each argument with a matching name.\r\n\tEach transformation function takes three arguments: the argument value,\r\n\ta dictionary of keyword arguments, and the instance that called the decorated method.\r\n\r\nReturns:\r\n\tfunction: The decorated function.\r\n\r\nExample:\r\n\tfrom argskwargsmodifierclass import change_args_kwargs\r\n\tclass ADBTEST:\r\n\t\tdef __init__(self, stripit=True):\r\n\t\t\tself.stripit = stripit\r\n\r\n\t\t@change_args_kwargs(\r\n\t\t\targs_and_function=(\r\n\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\"text\",\r\n\t\t\t\t\t\t\tlambda arg, argdict, instance: arg.strip(\"x\")\r\n\t\t\t\t\t\t\tif instance.stripit\r\n\t\t\t\t\t\t\telse arg,\r\n\t\t\t\t\t),\r\n\t\t\t)\r\n\t\t)\r\n\t\tdef onefunction(self, text,number=10):\r\n\t\t\tprint(f\"{text=}\")\r\n\t\t\tprint(f\"{number=}\")\r\n\r\n\r\n\tt = ADBTEST(stripit=True)\r\n\tt.onefunction(\"bibib xxxx\",number=20)\r\n\tt.onefunction(\"bibibx xxxx\",15)\r\n\r\n\tt2 = ADBTEST(stripit=False)\r\n\tt2.onefunction(text=\"aaabibib\", number=0x5)\r\n\tt2.onefunction(\"aaaabibibx xx\")\r\n\r\n\tt.stripit = False\r\n\tt.onefunction(\"bibib xxxx\")\r\n\tt.onefunction(\"bibibx xxxx\")\r\n\r\n\tt2.stripit = True\r\n\tt2.onefunction(\"aaabibib xxx\")\r\n\tt2.onefunction(\"aaaabibibx xx\")\r\n\r\n\t# text='bibib '\r\n\t# number=20\r\n\t# text='bibibx '\r\n\t# number=15\r\n\t# text='aaabibib'\r\n\t# number=5\r\n\t# text='aaaabibibx xx'\r\n\t# number=10\r\n\t# text='bibib xxxx'\r\n\t# number=10\r\n\t# text='bibibx xxxx'\r\n\t# number=10\r\n\t# text='aaabibib '\r\n\t# number=10\r\n\t# text='aaaabibibx '\r\n\t# number=10\r\n\r\n\r\nThe `change_args_kwargs` decorator allows you to modify function arguments and keyword arguments based on\r\nthe attributes of the calling instance.\r\nIt takes a tuple of argument transformations, each of which is defined as a tuple containing an argument name,\r\na transformation function, and the instance that called the decorated method.\r\nThe decorator dynamically adjusts the arguments according to the instance's attributes,\r\nproviding fine-grained control over argument modification.\r\n\r\n```\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A decorator that modifies the arguments and keyword arguments of a function based on the calling instance's attributes.",
"version": "0.10",
"project_urls": {
"Homepage": "https://github.com/hansalemaos/argskwargsmodifierclass"
},
"split_keywords": [
"decorator",
"args",
"kwargs"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c6f6a572390b6cc4ca95a84f22e80a4b7d423bb71ed12b5f4739608d33117f26",
"md5": "a35ab76dc61abc7e3ea4659bcf717921",
"sha256": "bbb506d1a64ed0c571ef5875ca9a7d375f7f55ee12c73f208188d4e073a409b4"
},
"downloads": -1,
"filename": "argskwargsmodifierclass-0.10-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a35ab76dc61abc7e3ea4659bcf717921",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 5922,
"upload_time": "2023-10-27T02:37:03",
"upload_time_iso_8601": "2023-10-27T02:37:03.688410Z",
"url": "https://files.pythonhosted.org/packages/c6/f6/a572390b6cc4ca95a84f22e80a4b7d423bb71ed12b5f4739608d33117f26/argskwargsmodifierclass-0.10-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "02182f24c82d1aa9c6991218b94b2496ef639996deefa613ce4624bcfb1251c3",
"md5": "00a2bca2ddc2fc17fe7e4ec3e988362a",
"sha256": "6afb519cd14dbfb0fe961a81a559a787b864c4a35542974a725bced2c8b763fe"
},
"downloads": -1,
"filename": "argskwargsmodifierclass-0.10.tar.gz",
"has_sig": false,
"md5_digest": "00a2bca2ddc2fc17fe7e4ec3e988362a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3980,
"upload_time": "2023-10-27T02:37:05",
"upload_time_iso_8601": "2023-10-27T02:37:05.529590Z",
"url": "https://files.pythonhosted.org/packages/02/18/2f24c82d1aa9c6991218b94b2496ef639996deefa613ce4624bcfb1251c3/argskwargsmodifierclass-0.10.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-27 02:37:05",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hansalemaos",
"github_project": "argskwargsmodifierclass",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "argskwargsmodifierclass"
}