Python Function Caching Skill
Purpose
- •Caching the function result. Works for pure functions that depend only on their inputs and have no side effects.
- •Perfect for expensive calls (calculations, or calls to external services like LLM's).
Workflow
- •Copy the contents of the file
assets/disk_cache.pyinto the project. - •In the file update the
project_namein the linecache = Cache("~/.cache/project_name")to be the appropriate name. Also replaceproject_namefurther down in the docstring. - •Use
@diskcache_decoratoror@diskcache_decorator(seconds-till-expired)for any function the user wants cached.- •By default, the cache should not expire.
- •If it makes sense that it should expire, 1 hour (3600 seconds seconds), 1 day (86400 seconds), or 1 week (604800 seconds) are common settings.
- •Tricky part is invoking tests to make sure that the cache isn't used. Tests should use the
ignore_cache=Trueto get around this unless otherwise requested by the user.
Behavior
- •Uses the function arguments to compute the hash
- •Unless
ignore_cacheisTrue, the result is returned right away. - •If the function is called, the result is always stored in the cache.
- •Current code does not have an eviction policy.