Abstraction level for object storages.
Project description
file-keeper
Abstraction layer for reading, writing and managing file-like objects.
The package implements drivers for a number of storage types(local filesystem, redis, AWS S3, etc.) and defines a set of tools to simplify building your own drivers for storage you are using.
Read the documentation for a full user guide.
Usage
Initialize storage pointing to /tmp/example folder:
import os
from file_keeper import make_storage
storage = make_storage("sandbox", {
"type": "file_keeper:fs",
"path": "/tmp/example",
# this option creates the folder if it does not exist.
# Without it storage raises an error if folder is missing
"initialize": True,
})
assert os.path.isdir("/tmp/example")
Upload file into the storage initialized in the previous step and play with it a bit:
from file_keeper import make_upload
upload = make_upload(b"hello world")
# save the data and verify its presence in the system
result = storage.upload("hello.txt", upload)
assert result.size == 11
assert os.path.isfile("/tmp/example/hello.txt")
# change location of the file
moved_result = storage.move("moved-hello.txt", result, storage)
assert not os.path.exists("/tmp/example/hello.txt")
assert os.path.isfile("/tmp/example/moved-hello.txt")
# read the file
assert storage.content(moved_result) == b"hello world"
# remove the file
storage.remove(moved_result)
assert not os.path.exists("/tmp/example/moved-hello.txt")
Development
Install dev extras:
pip install -e '.[dev]'
Run unittests:
pytest
Run typecheck:
pyright
License
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file file_keeper-0.1.0a1.tar.gz.
File metadata
- Download URL: file_keeper-0.1.0a1.tar.gz
- Upload date:
- Size: 40.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8cfe43f5333ec741f970f0b84a3be9385b3caceeb6f94f36641fe22b47cdbe2
|
|
| MD5 |
50006be21c4336d37b331863a0197205
|
|
| BLAKE2b-256 |
c92e72c844e968f78eada09cd2df6c1662361c91478e939bb2e93ab7c5a3b3ce
|
File details
Details for the file file_keeper-0.1.0a1-py3-none-any.whl.
File metadata
- Download URL: file_keeper-0.1.0a1-py3-none-any.whl
- Upload date:
- Size: 51.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3444de26ad5b460286e0af763d5889e218fbc0b7b4893143270e1f3c28408636
|
|
| MD5 |
1d588ac08180b6d04c0076371adbdfaa
|
|
| BLAKE2b-256 |
8c53371e9ee48369cc8ae13febd7029efac10ddee1d2b8b6c1fe0a8065c193c9
|