A few caching data structures and other lossy things with capped sizes.
Project description
A few caching data structures and other lossy things with capped sizes.
Latest release 20240422.1: ConvCache docstring update.
Class CachingMapping(cs.resources.MultiOpenMixin, collections.abc.MutableMapping)
A caching front end for another mapping. This is intended as a generic superclass for a proxy to a slower mapping such as a database or remote key value store.
Note that this subclasses MultiOpenMixin
to start/stop the worker Thread
.
Users must enclose use of a CachingMapping
in a with
statement.
If subclasses also subclass MultiOpenMixin
their startup_shutdown
method needs to also call our startup_shutdown
method.
Example:
class Store:
""" A key value store with a slower backend.
"""
def __init__(self, mapping:Mapping):
self.mapping = CachingMapping(mapping)
.....
S = Store(slow_mapping)
with S:
... work with S ...
Method CachingMapping.__init__(self, mapping: Mapping, *, max_size=1024, queue_length=1024, delitem_bg: Optional[Callable[[Any], cs.result.Result]] = None, setitem_bg: Optional[Callable[[Any, Any], cs.result.Result]] = None, missing_fallthrough: bool = False)
:
Initialise the cache.
Parameters:
mapping
: the backing store, a mappingmax_size
: optional maximum size for the cache, default 1024queue_length
: option size for the queue to the worker, default 1024delitem_bg
: optional callable to queue a delete of a key in the backing store; if unset then deleted are serialised in the worker threadsetitem_bg
: optional callable to queue setting the value for a key in the backing store; if unset then deleted are serialised in the worker threadmissing_fallthrough
: is true (defaultFalse
) always fall back to the backing mapping if a key is not in the cache
Method CachingMapping.flush(self)
:
Wait for outstanding requests in the queue to complete.
Return the UNIX time of completion.
Method CachingMapping.items(self)
:
Generator yielding (k,v)
pairs.
Method CachingMapping.keys(self)
:
Generator yielding the keys.
Class ConvCache(cs.fs.HasFSPath)
A cache for conversions of file contents such as thumbnails
or transcoded media, etc. This keeps cached results in a file
tree based on a content key, whose default function is
cs.hashutils.file_checksum('sha256')
.
Method ConvCache.__init__(self, fspath: Optional[str] = None, content_key_func=None)
:
Initialise a ConvCache
.
Parameters:
fspath
: optional base path of the cache, default fromConvCache.DEFAULT_CACHE_BASEPATH
; if this does not exist it will be created usingos.mkdir
content_key_func
: optional function to compute a key from the contents of a file, defaultcs.hashindex.file_checksum
(the sha256 hash of the contents)
Method ConvCache.content_key(self, srcpath)
:
Return a content key for the filesystem path srcpath
.
Method ConvCache.content_subpath(self, srcpath)
:
Return the content key based subpath component.
This default assumes the content key is a hash code and
breaks it hex representation into a 3 level hierarchy
such as 'd6/d9/c510785c468c9aa4b7bda343fb79'
.
Method ConvCache.convof(self, srcpath, conv_subpath, conv_func, ext=None)
:
Return the filesystem path of the cached conversion of srcpath
via conv_func
.
Parameters:
srcpath
: the source filesystem pathconv_subpath
: a name for the conversion which encompasses the salient aspaects such as'png/64/64'
for a 64x64 pixel thumbnail in PNG formatconv_func
: a callable of the formconv_func(srcpath,dstpath)
to convert the contents ofsrcpath
and write the result to the filesystem pathdstpath
ext
: an optional filename extension, default from the first component ofconv_subpath
Function convof(srcpath, conv_subpath, conv_func, ext=None)
ConvCache.convof
using the default cache.
Class LRU_Cache
A simple least recently used cache.
Unlike functools.lru_cache
this provides on_add
and on_remove
callbacks.
Method LRU_Cache.__init__(self, max_size, *, on_add=None, on_remove=None)
:
Initialise the LRU_Cache with maximum size max
,
additon callback on_add
and removal callback on_remove
.
Method LRU_Cache.__delitem__(self, key)
:
Delete the specified key
, calling the on_remove callback.
Method LRU_Cache.__setitem__(self, key, value)
:
Store the item in the cache. Prune if necessary.
Method LRU_Cache.flush(self)
:
Clear the cache.
Method LRU_Cache.get(self, key, default=None)
:
Mapping method: get value for key
or default
.
Method LRU_Cache.items(self)
:
Items from the cache.
Method LRU_Cache.keys(self)
:
Keys from the cache.
Function lru_cache(max_size=None, cache=None, on_add=None, on_remove=None)
Enhanced workalike of @functools.lru_cache.
Release Log
Release 20240422.1: ConvCache docstring update.
Release 20240422: New ConvCache and convof: a cache for conversions of file contents such as thumbnails or transcoded media.
Release 20240412:
- New CachingMapping, a caching front end for another mapping.
- LRU_Cache: add keys() and items().
Release 20181228: Initial PyPI release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for cs.cache-20240422.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9c40a16f5f0ff5fb58d74c6ad78249344e689940b114ac9c1a6968e8dae03bb |
|
MD5 | 40513f597a3a95e95f253ccb76aa5935 |
|
BLAKE2b-256 | d808941840e71a588231240607219e9f15dfc7902e149a5c206ebecab0e99279 |