An LRUCache that removes things based on the size of the values.

This differs in that it doesn't care how many actual items there are, it just restricts the cache to be cleaned up after so much data is stored.

The size of items added will be computed using compute_size(value), which defaults to len() if not supplied.

Method __init__ Create a new LRUSizeCache.
Method add Add a new value to the cache.
Method cleanup Clear the cache until it shrinks to the requested size.
Method resize Change the number of bytes that will be cached.
Method _remove_node Undocumented
Method _update_max_size Undocumented

Inherited from LRUCache:

Method __contains__ Undocumented
Method __getitem__ Undocumented
Method __len__ Undocumented
Method cache_size Get the number of entries we will cache.
Method get Undocumented
Method keys Get the list of keys currently cached.
Method items Get the key:value pairs as a dict.
Method __setitem__ Add a value to the cache, there will be no cleanup function.
Method clear Clear out all of the cache.
Method _walk_lru Walk the LRU list, only meant to be used in tests.
Method _record_access Record that key was accessed.
Method _remove_lru Remove one entry from the lru, and handle consequences.
Method _update_max_cache Undocumented
def __init__(self, max_size=1024 * 1024, after_cleanup_size=None, compute_size=None):
Create a new LRUSizeCache.
Parametersmax_sizeThe max number of bytes to store before we start clearing out entries.
after_cleanup_sizeAfter cleaning up, shrink everything to this size.
compute_sizeA function to compute the size of the values. We use a function here, so that you can pass 'len' if you are just using simple strings, or a more complex function if you are using something like a list of strings, or even a custom object. The function should take the form "compute_size(value) => integer". If not supplied, it defaults to 'len()'
def add(self, key, value, cleanup=None):

Add a new value to the cache.

Also, if the entry is ever removed from the cache, call cleanup(key, value).

ParameterskeyThe key to store it under
valueThe object to store
cleanupNone or a function taking (key, value) to indicate 'value' should be cleaned up.
def cleanup(self):

Clear the cache until it shrinks to the requested size.

This does not completely wipe the cache, just makes sure it is under the after_cleanup_size.

def _remove_node(self, node):
def resize(self, max_size, after_cleanup_size=None):
Change the number of bytes that will be cached.
def _update_max_size(self, max_size, after_cleanup_size=None):
Undocumented
API Documentation for Dulwich, generated by pydoctor at 2018-11-17 19:05:54.