b.l.LRUSizeCache(LRUCache) : class documentation

Part of bzrlib.lru_cache View In Hierarchy

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 __setitem__ 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 add 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 as_dict Get a new dict with the same key:value pairs as the cache
Method clear Clear out all of the cache.
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 __setitem__(self, key, value):
Add a new value to the cache
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):
Undocumented
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 Bazaar, generated by pydoctor at 2022-06-16 00:25:16.