microcache

Really! Small! Cache!


Keywords
cache, microcache, memoize, development
License
MIT
Install
pip install microcache==1.0

Documentation

microcache

Latest Version Build Status

A Really! Small! Cache! for python 2 and 3.

Why?

Working on a totally separate project, I found myself wanting to use funcy.memoize...a lot. There was a major problem, though: I couldn't test with it. There was no (obvious) way to turn it off. It was making me crazy, so I spent a few hours writing a small module (even smaller than this, originally) to suit the memoization needs, with a hook to turn it off for testing. When I got to the end of my feature sprint for that project, I decided it made more sense to spin it out into its own project, so here we are!

Current features

  • Simple upsert and get workflow
  • TTLs for expiring cache items
  • Decorator for "memoization"
  • Enabling and disabling functionality, including a context manager
  • Work directly on the imported module... no additional instantiation (unless you want to)

Installation

pip install microcache

Examples

Basic usage

>>> import microcache
>>> microcache.has('key')
False
>>> microcache.get('key')
CACHE_MISS
>>> microcache.get('key', default='default')
'default'
>>> microcache.upsert('key', 'value')
>>> microcache.get('key')
'value'
>>> microcache.disable()
>>> microcache.get('key')
CACHE_DISABLED

Decorator and context manager

import microcache
import time

@microcache.this
def somefunc():
    time.sleep(5)
    return "this will be cached, and you won't have to wait a second time!"

def test_somefunc():
    somefunc()
    somefunc()
    with microcache.temporarily_disabled():
        # now we'll have to wait again
        somefunc()