CacheToolsUtils
Stackable cache classes for sharing, encryption, statistics and more on top of cachetools, redis and memcached.
Module Contents
For our purpose, a cache is a key-value store, aka a dictionary, possibly with
some constraints on keys (type, size) and values (size, serialization).
This module provides new caches, wrappers and other utilities suitable to use
with cachetools. Example:
import redis
import CacheToolsUtils as ctu
import config
redis_storage = redis.Redis(**config.REDIS_SERVER)
storage = ctu.RedisCache(redis_storage, raw=True, ttl=120)
crypto = ctu.EncryptedCache(storage, config.CACHE_KEY)
cache = ctu.ToBytesCache(crypto)
@ctu.cached(ctu.AutoPrefixedCache(cache), key=ctu.json_key)
def repeat(s: str, n: int) -> str:
return s * n
@ctu.cached(ctu.AutoPrefixedCache(cache), key=ctu.json_key)
def banged(s: str, n: int) -> str:
return repeat(s, n) + "!"
@ctu.cached(ctu.AutoPrefixedCache(cache), key=ctu.json_key)
def question(s: str, n: int) -> str:
return repeat(s, n) + "?"
print(banged("aa", 3)) # add 2 cache entries
print(question("aa", 3)) # add 1 entry, 1 hit
print(repeat("aa", 3)) # cache hit!
print(banged("aa", 3)) # cache hit!
assert cache.hits() > 0
Cache classes
RedisCacheallows to see a Redis server as a python cache by wrapping aredis.Redisinstance.MemCacheddoes the same for a Memcached server. The utility classJsonSerdeis a convenient JSON serializer-deserializer class for Memcached.DictCachea very simpledictcache.
Wrappers to extend cache capabilities
PrefixedCache,PrefixedMemCachedandPrefixedRedisCacheadd a prefix to distinguish sources on a shared cache.AutoPrefixedCacheadd a counter-based prefix.StatsCache,MemCachedandRedisCacheadd ahitsmethod to report the cache hit rate,statsto report statistics andresetto reset statistics.LockedCacheuse a (thread) lock to control cache accesses.TwoLevelCacheallows to combine two caches.DebugCacheto trace cache calls usinglogging.EncryptedCachea cache with key hashing and value encryption.ToBytesCachemap keys and values to bytes.BytesCachemap bytes keys and values to strings.
Cache utilities
cacheddecorator: a cachetools replacement which allows to test if a function result is in cache, and to delete such an entry.cacheFunctionsandcacheMethods: add caching to functions or methods.json_key,hash_json_key,full_hash_key: convenient JSON-based cache key serialization functions forcached.
License
This code is Public Domain.
All software has bug, this is software, hence… Beware that you may lose your hairs or your friends because of it. If you like it, feel free to send a postcard to the author.
More
See the documentation, sources and issues on GitHub.
See packages on PyPI.
Metadata
Release files for CacheToolsUtils 11.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cachetoolsutils-11.0.tar.gz | 11.9 kB | Without provenance | Details for cachetoolsutils-11.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| cachetoolsutils-11.0-py3-none-any.whl | Python 3 | none | any | Details for cachetoolsutils-11.0-py3-none-any.whl |
Total release size: 22.1 kB
Release files / cachetoolsutils-11.0.tar.gz
| Download URL | cachetoolsutils-11.0.tar.gz |
|---|---|
| Size | 11.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4606e53a4526f1f51dc3ee3336fc68afc2e2284cb880f84d7c191ad8fc098d16
|
|
BLAKE2b-256 checksum How to use checksums |
4464fb656abc52ace12006e273881c50bfe653904cbcaf45dfbe63a4cf3a0065
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / cachetoolsutils-11.0-py3-none-any.whl
| Download URL | cachetoolsutils-11.0-py3-none-any.whl |
|---|---|
| Size | 10.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d3644c214f29b19619750ba9f3b06df4792822d535aed1ee60b31b0bc42245c8
|
|
BLAKE2b-256 checksum How to use checksums |
2af77fcc7b23fab403794044ec145a498ad92a8a3d6e54fb0cc4f87ca0e52fe6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Security for CacheToolsUtils 11.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.