A file-based value store for bytes and strings.
Keeper is a filesystem-based, content-addressable value store for Python 3.
$ pip install keeper
Keeper is constructed with a Storage object. This example uses FileStorage:
from keeper import FileStorage, Keeper
Pass a directory path to a FileStorage instance, and then pass the Storage instance to the Keeper:
with FileStorage("/some/directory/") as storage: with Keeper(storage) as k: ...
Add string or bytes objects, and get a key in return:
key = self.keeper.add("The quick brown fox jumped over the lazy dog")
Use the key to retrieve the string:
value = keeper[key].as_string()
Add another string with some metadata:
key = keeper.add(text, mime="text/plain", filename="foo.txt", author="Joe Bloggs")
Add a binary stream you can write to:
with keeper.add_stream() as stream: stream.write(b'A large number of bytes')
After the stream has closed, retrieve the key:
key = stream.key
On slow filesystems, such as USB flash drives, it’s possible to buffer writes in RAM, using a storage intermediary called WriteCacheStorage. Use it like this:
from keeper import FileStorage, WriteCacheStorage, Keeper with FileStorage("/some/directory/") as file_storage: with WriteCacheStorage(file_storage) as cached_storage: with Keeper(cached_storage) as k: ...
Closing the WriteCacheStorage instance will block until all pending writes have been committed to the underlying FileStorage.
To build and deploy a package to PyPI:
$ bumpversion patch $ python setup.py sdist bdist_wheel $ twine upload dist/*
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.