Versioned document library for MongoDB built on Pydantic 2 and Beanie 2
Project description
docversion
Python knihovna pro správu verzí dokumentů postavená na Pydantic 2, Beanie 2 a MongoDB. Navržena pro použití ve FastAPI projektech.
Požadavky
- Python ≥ 3.11
- MongoDB ≥ 6
- pymongo ≥ 4.9 (přímé async rozhraní bez Motor)
Instalace
pip install sysnet-docversion
Nebo s uv:
uv add sysnet-docversion
Rychlý start
1. Definujte model dokumentu
from docversion import VersionedDocument
class Clanek(VersionedDocument):
nazev: str
obsah: str
class Settings:
name = "clanky"
2. Inicializujte databázi
from docversion import init_db
await init_db("mongodb://localhost:27017", "moje_db", [Clanek])
3. Práce s verzemi
# Vytvoření dokumentu
clanek = Clanek(nazev="Úvod", obsah="Hello, world!")
await clanek.insert()
# Uložení s verzí
clanek.obsah = "Upravený obsah"
await clanek.save_version(author="alice", message="první úprava")
# Výpis verzí
verze = await clanek.list_versions()
for v in verze:
print(f"v{v.version} — {v.author}: {v.message}")
# Načtení konkrétní verze
snapshot = await clanek.get_version(1)
print(snapshot.data)
# Návrat k předchozí verzi
await clanek.revert_to_version(1, author="bob", message="vrátit k v1")
4. Soft-delete
# Smazání (soft)
await clanek.soft_delete(deleted_by="alice")
# Obnovení
await clanek.restore(restored_by="bob")
Konfigurace
Přepínání verzování
Verzování lze vypnout na úrovni třídy nebo prostřednictvím proměnné prostředí:
class Clanek(VersionedDocument):
class Settings:
name = "clanky"
versioning = False # vypnuto pro celou třídu
DOCVERSION_ENABLED=0 # vypnuto globálně
Pro jednorázové volání bez verze:
await clanek.save_version(versioning=False)
Přepínání soft-delete
class Clanek(VersionedDocument):
class Settings:
name = "clanky"
soft_delete = False # vždy fyzické smazání
DOCVERSION_SOFT_DELETE_ENABLED=0
API
VersionedDocument
| Metoda | Popis |
|---|---|
save_version(author, message, *, versioning) |
Uloží dokument a volitelně zaznamená snapshot verze |
list_versions() |
Vrátí seznam metadat verzí seřazených vzestupně |
get_version(version) |
Načte plný snapshot dané verze |
revert_to_version(to_version, author, message) |
Obnoví pole dokumentu do stavu dané verze; vytvoří nový snapshot |
soft_delete(deleted_by, *, soft_delete) |
Označí dokument jako smazaný (nebo fyzicky odstraní) |
restore(restored_by) |
Obnoví soft-smazaný dokument |
DocumentVersion
Neměnný snapshot uložený v kolekci document_versions. Obsahuje pole data (dict), version (int), author, message a created_at.
init_db(mongodb_uri, database, document_models)
Inicializuje Beanie ODM. Musí být zavoláno před jakýmikoli DB operacemi.
Závislosti
- Beanie — asynchronní ODM pro MongoDB
- Pydantic v2 — validace dat
- pymongo ≥ 4.9 —
AsyncMongoClient(bez Motor) - sysnet-soft-delete — mixin pro soft-delete
Licence
Tento projekt je licencován pod GNU Affero General Public License v3.0.
Project details
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 sysnet_docversion-0.1.2.tar.gz.
File metadata
- Download URL: sysnet_docversion-0.1.2.tar.gz
- Upload date:
- Size: 244.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.0 {"installer":{"name":"uv","version":"0.11.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ac0595bd0ad55b1c8844cbfacba77fdfdaccf29f6123f73df9a4d88367b9434
|
|
| MD5 |
7448a15c3bbe75c1a8a0a8c5b276129f
|
|
| BLAKE2b-256 |
b6ea40bbb7129c7f899c080bf3aed9ca3b3dbed0fc1d2745b2b4ae545abf9ec6
|
File details
Details for the file sysnet_docversion-0.1.2-py3-none-any.whl.
File metadata
- Download URL: sysnet_docversion-0.1.2-py3-none-any.whl
- Upload date:
- Size: 13.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.0 {"installer":{"name":"uv","version":"0.11.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf93a7099198b28981c2ab89c8a41803ad83d2a8f24e7966fc01892a92f2c6de
|
|
| MD5 |
53314cfe424aa3c7b3ba8f02b096c94f
|
|
| BLAKE2b-256 |
23151df09be2c9ed0ca75f6e95c78fcace9cf6e906261aa54c5926756da7ec57
|