The following is using cachier version 3.0.1 with python version 3.12.4 (system rpm package) on linux (Fedora 40 x86_64)
I have a function which accepts a variable number of arguments via *args, and after applying the @cachier decorator all calls to the function regardless of the passed arguments return which ever result was first cached, eg
Will return the same result for users as for domains.
Setting the stale_after value to 0 seconds causes the expected data to be return (but obviously at the cost of not using the cache).
Additionally adding cachier__skip_cache=True to the calls throws a TypeError :
Traceback (most recent call last):
File "........./script.py", line 65, in <module>
'domains': get_gam_dataframe('print', 'domains', cachier__skip_cache=True),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "......./python3.12/site-packages/cachier/core.py", line 251, in func_wrapper
else func(**kwargs)
^^^^^^^^^^^^^^
TypeError: gam_get_dataframe() got an unexpected keyword argument 'args'
In this case I'm able to work around the issue by simply changing the call signature to avoid using a variable argument list for the cached function, but the behavior with *args seems to be unexpected/a bug.
The following is using cachier version 3.0.1 with python version 3.12.4 (system rpm package) on linux (Fedora 40 x86_64)
I have a function which accepts a variable number of arguments via
*args
, and after applying the@cachier
decorator all calls to the function regardless of the passed arguments return which ever result was first cached, egWill return the same result for
users
as fordomains
. Setting the stale_after value to 0 seconds causes the expected data to be return (but obviously at the cost of not using the cache). Additionally addingcachier__skip_cache=True
to the calls throws a TypeError :In this case I'm able to work around the issue by simply changing the call signature to avoid using a variable argument list for the cached function, but the behavior with
*args
seems to be unexpected/a bug.