class documentation

Base class for caches.

When using any of the subclasses of this cache, please use something akin to the following pattern:

    key = ...  # some unique hashable key identifying the element
    if cache.has(key):  # cache hit
        element = cache.get(key)
    else:
        element = ...  # get element outside of cache
        cache.push(key)  # always push element unto the cache

This class does not actually implement anything and serves as a superclass that describes the methods.

Method __init__ The default constructor.
Method clear Empty this cache.
Method get Return the element that has been cached for this key.
Method has Return True if an element is cached for the specific key.
Method push Push an element for this key into this cache.
Method remove If an element is cached for key, remove it from the cache.
Instance Variable on_leave a callable expecting two arguments (key, value) that will be called when an element leaves the cache
def __init__(self, on_leave=None):

The default constructor.

Parameters
on_leave:callable or Nonea callable expecting two arguments (key, value) that will be called when an element leaves the cache
def clear(self, call_on_leave=True):

Empty this cache.

Parameters
call_on_leave:boolif nonzero (default), call BaseCache.on_leave for each element cleared
def get(self, key):

Return the element that has been cached for this key.

Parameters
key:hashablekey for the element that should be returned
Returns
same as passed to BaseCache.pushthe element
Raises
KeyErrorif no element was cached for this key
def has(self, key):

Return True if an element is cached for the specific key.

Parameters
key:hashablekey of element that should be checked
Returns
boolTrue if an element has been cached for this key
def push(self, key, element, allow_replacement=True):

Push an element for this key into this cache.

It is up for the cache to decide whether the element will actually be cached or not. If allow_replacement=False is set, no other element should be kicked from the cache.

Re-pushing an already cached element will not update the cached element.

Parameters
key:hashablekey which will be used to identify the element
element:anyelement to cache
allow_replacement:boolif this value is false, do not cache if this would kick another element from the cache
Returns
boolTrue if the element is now cached, False otherwise
def remove(self, key, call_on_leave=True):

If an element is cached for key, remove it from the cache.

Parameters
key:hashablekey of element to remove
call_on_leave:boolif nonzero (default), call BaseCache.on_leave on the removed element
on_leave: callable or None =

a callable expecting two arguments (key, value) that will be called when an element leaves the cache