Skip to main content

Versioned document library for MongoDB built on Pydantic 2 and Beanie 2

Project description

docversion

CI PyPI version PyPI status Python versions Downloads License: AGPL v3 Ruff Checked with mypy

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

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

sysnet_docversion-0.1.0.tar.gz (243.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sysnet_docversion-0.1.0-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file sysnet_docversion-0.1.0.tar.gz.

File metadata

  • Download URL: sysnet_docversion-0.1.0.tar.gz
  • Upload date:
  • Size: 243.5 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

Hashes for sysnet_docversion-0.1.0.tar.gz
Algorithm Hash digest
SHA256 abd4d7da9cbcc87d8e4ca4ea6fcf85709b419d6be2ffa824b4cea059cad7f9a9
MD5 bf64f992bec4f2de70434b0bc13230f8
BLAKE2b-256 047ebaa344dff099e077a04505f4c768d994a9dc6bbebb95b22fe956893ed5ea

See more details on using hashes here.

File details

Details for the file sysnet_docversion-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: sysnet_docversion-0.1.0-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

Hashes for sysnet_docversion-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f55402929ccfd4c9a557a4706c98185de4f8e5b20756077e65586d63e77f6faf
MD5 067236d90ad44a853d4ed605696f35ec
BLAKE2b-256 8a852862f28c924724243209c37ac71f878f1280058742fd798ff6a3a3e1ede0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page