
⚠️⚠️
Shared is an experimental data exchange and persistence solution based on human-readable files. It serves as a playground to test new ideas and then create stable derivative projects. I recently built a multi-model embedded database for persisting arbitrary-sized data. The project is called Jinbase and I strongly encourage you to give it a try.
⚠️⚠️
Pyrustic Shared
Data exchange and persistence based on human-readable files
Table of contents
Overview
Shared is a Python package created to be the programmer's companion when it comes to storing unstructured application data, managing configuration files, caching data, and exchanging data with other programs.
Under the hood, Shared uses Paradict to encode a dictionary populated with strings, scalars (integer, float, decimal float, complex, booleans), date and time, null value, binary data and nested collections (list, set, and dictionary).
Note: This library does not implement any synchronization mechanisms to prevent simultaneous access to a file, which could lead to data corruption. For a safe, more robust and rich persistence solution, please consider Jinbase.
Example
from shared import Dossier, HOME
from datetime import datetime
from pathlib import Path
with open("/home/alex/image.png", "rb") as file:
photo = file.read()
now = datetime.now()
profile = {"name": "alex", "access_datetime": now, "photo": photo,
"pi": 3.14, "books": ["Seul sur Mars", "The Fall"],
"is_author": True, "fingerprint": None}
path = Path(HOME, "my_dossier")
dossier = Dossier(path)
dossier.set("my_profile", profile)
profile_bis = dossier.get("my_profile")
assert profile == profile_bis
Related projects
- Jinbase: Multi-model transactional embedded database
- LiteDBC: Lite database connector
- KvF: The key-value file format with sections
- Paradict: Streamable multi-format serialization with schema
- Asyncpal: Preemptive concurrency and parallelism for sporadic workloads
Testing and contributing
Feel free to open an issue to report a bug, suggest some changes, show some useful code snippets, or discuss anything related to this project. You can also directly email me.
Setup your development environment
Following are instructions to setup your development environment
python -m venv venv
source venv/bin/activate
git clone https://github.com/pyrustic/shared.git
cd shared
pip install -e .
python -m tests
deactivate
Back to top
Installation
Shared is cross-platform. It is built on Ubuntu and should work on Python 3.5 or newer.
Create and activate a virtual environment
python -m venv venv
source venv/bin/activate
Install for the first time
pip install shared
Upgrade the package
pip install shared --upgrade --upgrade-strategy eager
Deactivate the virtual environment
deactivate
Back to top
About the author
Hello world, I'm Alex (😎️), a tech enthusiast and the architect of Pyrustic ! Feel free to get in touch with me !
Back to top