Skip to content

josh/lru-cache-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lru-cache

A simple persisted LRU cache Python module.

Pretty much shelve, but self evicting. Design to work well when persisting data between GitHub Action runs with actions/cache.

Usage

import lru_cache

with lru_cache.open("cache.pickle", max_bytesize=lru_cache.bytesize(kb=5)) as cache:
    cache["answer"] = 42

Or using click with it's resource manager:

import click
import lru_cache

@click.group()
@click.option("--cache-path", default="cache.pickle", type=click.Path(writable=True))
@click.pass_context
def cli(ctx, cache_path):
    ctx.obj = ctx.with_resource(lru_cache.open(cache_path))

@cli.command()
@click.pass_obj
def incr(cache: lru_cache.LRUCache):
    cache["count"] = count = cache.get("count", 0) + 1
    click.echo(f"count: {count}")

Installation

Not officially published on Python Package Index (PyPI), but you can install it directly from GitHub:

$ pip install https://github.com/josh/py-lru-cache/releases/download/v1.0.1/lru_cache-1.0.1-py3-none-any.whl

or just download the file:

$ curl -L https://github.com/josh/lru-cache-python/releases/download/v1.0.1/lru_cache.py >lru_cache.py

About

Persisted LRU cache Python module

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages