0.2.5 Release Notes
Klepto extends python's lru_cache
to utilize different keymaps and alternate caching algorithms, such as lfu_cache
and mru_cache
. While caching is meant for fast access to saved results, klepto also has archiving capabilities, for longer-term storage. Klepto uses a simple dictionary-sytle interface for all caches and archives, and all caches can be applied to any python function as a decorator. Keymaps are algorithms for converting a function's input signature to a unique dictionary, where the function's results are the dictionary value. Thus for y = f(x)
, y
will be stored in cache[x]
(e.g. {x:y}
).
Klepto provides both standard and 'safe' caching, where safe caches are slower but can recover from hashing errors. Klepto is intended to be used for distributed and parallel computing, where several of the keymaps serialize the stored objects. Caches and archives are intended to be read/write accessible from different threads and processes. Klepto enables a user to decorate a function, save the results to a file or database archive, close the interpreter, start a new session, and reload the function and it's cache.
Klepto installs with pip:
$ pip install klepto
Klepto requires:
- python or pypy, >=3.8
- dill, >=0.3.8
- pox, >=0.3.4
Optional requirements:
- sqlalchemy, >=1.4.0
(install with $ pip install klepto[archives]
)
- h5py, >=2.8.0
(install with $ pip install klepto[archives]
)
- pandas, >=0.17.0
(install with $ pip install klepto[archives]
)
Klepto is licensed under 3-clause BSD:
>>> import klepto
>>> print (klepto.license())
To cite klepto:
>>> import klepto
>>> print (klepto.citation())
What's Changed
- get hash algorithms via
hashlib.algorithms_available
by @IvanaGyro in #113 - replace negative with underscore in fname by @mmckerns in #114
- drop formal support for python 3.7 by @mmckerns in #115
- if archive is missing, use null_archive by @mmckerns in #116
- define html_theme as rtd workaround by @mmckerns in #117
- update install doc in tests by @mmckerns in #119
- formal support for python 3.12, initial for 3.13 by @mmckerns in #120
- add build to rtfd config by @mmckerns in #121
- updated copyright for 2024 by @mmckerns in #122
- Bump jinja2 from 3.1.1 to 3.1.3 in /docs by @dependabot in #123
- update sphinx to 6.2.1 by @mmckerns in #124
- Bump readthedocs-sphinx-search from 0.3.1 to 0.3.2 in /docs by @dependabot in #125
New Contributors
- @IvanaGyro made their first contribution in #113
Full Changelog: klepto-0.2.4...0.2.5