Yet another Python cache library
Project description
cachepot
Yet another Python cache library. This has Python 3 typing hints.
Installation
$ pip install cachepot
Usage
>>> from cachepot.store import CacheStore
>>> from cachepot.backend.filesystem import FileSystemCacheBackend
>>> from cachepot.serializer.pickle import PickleSerializer
>>> store = CacheStore(
... namespace='testing',
... key_serializer=PickleSerializer(),
... value_serializer=PickleSerializer(),
... backend=FileSystemCacheBackend('/tmp'),
... default_expire_seconds=3600,
... )
>>> store.put({'some': 'key'}, {'some': 'value'})
>>> store.get({'some': 'key'})
{'some': 'value'}
>>> store.put({'some': 'short expiring key'}, {'some': 'value'}, expire_seconds=10)
Proxy method
result = store.proxy(some_func)(some_args)
is the equivalent of
result = store.get(some_arg)
if result is None:
result = some_func(some_args)
store.set(result)
In short, this works as proxy. This helps to make codes straight forward.
proxy method can be passed two arguments cache_key
and expire_seconds
.
Core idea
Serializers convert python objects into bytes. Backends save/load bytes. So serializers and backends are independent. CacheStore is the facade of them.
- Python3 typing supports
- namespaces
- Proxy method
Features
Serializers
- str ... cachepot.serializer.str.StringSerializer
- pickle ... cachepot.serializer.pickle.PickleSerializer
- JSON ... cachepot.serializer.json.JSONSerializer
And more serializers you can define.
Backends
- Save to files ... cachepot.backend.filesystem.FileSystemCacheBackend
- Save to SQLite3 DB records ... cachepot.backend.sqlite.SQLiteCacheBackend
- Save to Redis DB ... cachepot.backend.redis.RedisCacheBackend
Of course you can define own backend.
Development
You can install requirements with poetry.
$ poetry install
Test
$ poetry poe check # lint and type check
$ poetry poe test # run tests
LICENSE
The 3-Clause BSD License. See also LICENSE file.
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
File details
Details for the file cachepot-0.4.0.tar.gz
.
File metadata
- Download URL: cachepot-0.4.0.tar.gz
- Upload date:
- Size: 33.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 690f1f028dd28b1d9fff3dc2c2c7774e1ba2875992014bd9fe41a8613580a124 |
|
MD5 | afde69ed619e6a4ab9278b8fcbcb9dfa |
|
BLAKE2b-256 | fa88db63d9780847639cd52c067ace4823d36466b508b93bb5447b5b47e2cf7a |
File details
Details for the file cachepot-0.4.0-py3-none-any.whl
.
File metadata
- Download URL: cachepot-0.4.0-py3-none-any.whl
- Upload date:
- Size: 13.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d0ed4951dad9e50383f4332821b9b58f6f5a5b8fb7338f86549c5ec02c15fb9 |
|
MD5 | 4a2d015d9dd658773ace39203e6f2a24 |
|
BLAKE2b-256 | 2a890e7fb87cc7ce3b87548fa7617fd8f9e20636d2bcea5b08e9f5d1dc7d85a5 |