A decorator to cache method call results with similar parameters
Project description
sag_py_cache_decorator
A cache annotation that can be used to cache calls to a method
What it does
- Caches calls to methods if the same parameters are used
- Removes the least recently used cache item if a optional maximum is reached
- Supports sync and async functions
- Possibility to skip the cache by parameter
- Possibility to clear the cache entirely or for one set of parameters
Installation
pip install sag-py-cache-decorator
How to use
from sag_py_cache_decorator import lru_cache
@lru_cache(maxsize=3)
def my_function(str: str, str2: str) -> str:
return f"{str}-{str2}"
This is the regular use case of the cache.
Available decorator arguments:
Argument | Description | Default |
---|---|---|
maxsize | If this size is reached, the least recently used cache item will be removed. Can be set to None to have a unlimited cache. | 128 |
from sag_py_cache_decorator import lru_cache
@lru_cache(maxsize=3)
def my_function(
str: str,
lru_clear_cache: bool = False,
) -> str:
return f"{str}-{str2}"
my_function("one")
my_function("two")
# Before executing the next function the cache is cleared and then
# rebuilt with the results of three and four because of lru_clear_cache = True
my_function("three", lru_clear_cache = True)
my_function("four")
Available function arguments:
Argument | Description | Default |
---|---|---|
lru_use_cache | If set to false, the function call skips the cache. Existing cached items are ignored and new ones are not written for that call. | True |
lru_clear_cache | If set to true, the cache is cleared entirely before executing the method. The result of the call is then cached again. | False |
lru_clear_arg_cache | If set to true, the result for this set of parameters is removed from cache(if present). The result of the call is then cached again. | False |
How to start developing
With vscode
Just install vscode with dev containers extension. All required extensions and configurations are prepared automatically.
With pycharm
- Install latest pycharm
- Install pycharm plugin BlackConnect
- Install pycharm plugin Mypy
- Configure the python interpreter/venv
- pip install requirements-dev.txt
- pip install black[d]
- Ctl+Alt+S => Check Tools => BlackConnect => Trigger when saving changed files
- Ctl+Alt+S => Check Tools => BlackConnect => Trigger on code reformat
- Ctl+Alt+S => Click Tools => BlackConnect => "Load from pyproject.yaml" (ensure line length is 120)
- Ctl+Alt+S => Click Tools => BlackConnect => Configure path to the blackd.exe at the "local instance" config (e.g. C:\Python310\Scripts\blackd.exe)
- Ctl+Alt+S => Click Tools => Actions on save => Reformat code
- Restart pycharm
How to publish
- Update the version in setup.py and commit your change
- Create a tag with the same version number
- Let github do the rest
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
Close
Hashes for sag-py-cache-decorator-0.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0718316c5afcde7a38ba39aadca7684507daf59ae5ffe5180857eb452d080af |
|
MD5 | df7fac03f2e9d7572bf6910f94c5702a |
|
BLAKE2b-256 | 61af329a9944c2f217b1db136a14b293fe2f5de7ba5eb5ecd9ce66871e430fc2 |
Close
Hashes for sag_py_cache_decorator-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb25fd182fa46246768f8e7f1325bdfbdc6188b4b23b81859c3093d3c0da83cc |
|
MD5 | 4a968498a34898965431902a4389d2d4 |
|
BLAKE2b-256 | ab95764a1ddcca7a6bc647a3cdaa10f95ff31bd480499092f99df28809f1a2e5 |