dyncache

Dynamic input-output caching for deterministic functions


Keywords
function, cache, dataset, ai, machine, learning
License
MIT
Install
pip install dyncache==0.1.1

Documentation

Dynamic input-output caching for deterministic functions

PyPI Read the Docs License

Features

  • Keep It Simple, Stupid: A single decorator that does everything for you
  • Automagically detects if the decorated function is changed and transparently updates cache accordingly without ever returning cached results of the old function.

Installation

pip3 install dyncache

Examples

# Import the class
from dyncache import Cache


# Use with default options. It will create a file "circle_area.dyncache" into
# the current directory.
@Cache()
def circle_area(radius):
    return 3.14159 * (radius ** 2)


# Empty parentheses are not required for the decorator.
@Cache
def circle_area(radius):
    return 3.14159 * (radius ** 2)


circle_area(2)  # Calculates and returns
circle_area(3)  # Calculates and returns
circle_area(2)  # Returns from cache


# Saves the cache to /tmp/hello.world.
@Cache(root="/tmp", filename="hello.world")
def circle_area(radius):
    ...


# Use for function with large input/output -values.
@Cache(largeitems=True)
def load_all_api_data_for_a_day(day):
    ...


# When items are small and cache would update too often, setting autowrite to
# False lets you control when the cached data is written to the file.
cache = Cache(autowrite=False)
@cache
def really_frequent_function(a, b):
    ...
...
cache.write()  # Write cache data to the file
sys.exit(0)

Contributing

  • Send any issues to GitHub's issue tracker.
  • Before sending a pull request, format it with Black (-Sl79)
  • Any changes must be updated to the documentation
  • All pull requests must be tested with tox (if you are using pyenv, add the installed versions for py35-py38 and pypy3 to .python-version at the root of this repository before running tox)