Flexible data and file storage, retrieval and caching system for Python applications
Project description
Vault
Vault is a flexible and lightweight data/file storage, retrieval, and caching system for Python applications.
It enables developers to manage any Python object (given a proper Datatype implementation), store them locally or remotely, organize them by type, and access them efficiently using an in-memory cache, all this with just a few lines of code.
Vault has only two dependencies (psutil and requests), encourages memory usage monitoring, and will support non-blocking I/O operations.
I. Project Structure
Vault is split into two libraries:
vault– Core data storage library, which also includes the ability to connect to remote Vaults.vault-fastapi– Library for building custom servers that expose Vault storage over the network.
There are also two usage examples: one for local use-cases where Vault is used within the same Python process, and one for remote use-cases where Vault is run on a separate machine.
Additionally, the datatypes/ directory contains example wrappers for using Python types from common libraries with Vault.
II. Architecture
(todo)
III. Milestones
A main issue with Vault is the absence of ways to scale Vaults across multiple servers: those issue will be solved with Vault 2.0, which will introduce Scalable Storage, Disk Caching and Data Streaming.
These changes are intended to support large-scale applications and will likely require breaking changes; we are planning to recieve feedback and fix bugs during the 1.0 development cycle in order to have a stable base to build upon, before starting the 2.0 development cycle.
Before that, a key improvement planned for 1.x is support for non-blocking data operations, either through async-compatible methods for the already implement classes or async-specific variants of existing classes.
A smaller improvement that could be done for programs that use large amounts of files is adding an optional feature for keeping track of files in a separate register (most likely sqlite) in order to remove the need to list all files in the directories when the Vault is loaded. This additional database could also be used to add data integrity checks (checksum).
IV. Vault API
The Remote API specification for Vault 1.0 is available in VAULT_API.md.
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 pyvault_client-0.1.1.tar.gz.
File metadata
- Download URL: pyvault_client-0.1.1.tar.gz
- Upload date:
- Size: 19.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0afa05a15d3b464987baf298d8f0f04f2b4a319daa14ed60b1f2a344e27b984a
|
|
| MD5 |
6be6e32ebd0996b2a6fddbce11075c66
|
|
| BLAKE2b-256 |
a3dc39162bbff2a39ca658a2a7ccab7709d21b3df49bc9b89fe21beec99d3ae3
|
File details
Details for the file pyvault_client-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pyvault_client-0.1.1-py3-none-any.whl
- Upload date:
- Size: 19.6 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 |
fb7ce660b89c30c4ece607bb0c855e091b1f1256fdee5c4561bbdfaee2ecfc72
|
|
| MD5 |
3c0a19d5de8be3cba4aa91edc155dbd6
|
|
| BLAKE2b-256 |
2331ad64af9492b3c81e42e0afae95191dc2737e59bb6f5b6a78f97d178d081e
|