Skip to main content

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

Project description

docversion

PyPI version PyPI status Python versions Downloads License: AGPL v3 Ruff 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.2.tar.gz (244.9 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.2-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

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

Hashes for sysnet_docversion-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2ac0595bd0ad55b1c8844cbfacba77fdfdaccf29f6123f73df9a4d88367b9434
MD5 7448a15c3bbe75c1a8a0a8c5b276129f
BLAKE2b-256 b6ea40bbb7129c7f899c080bf3aed9ca3b3dbed0fc1d2745b2b4ae545abf9ec6

See more details on using hashes here.

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

Hashes for sysnet_docversion-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cf93a7099198b28981c2ab89c8a41803ad83d2a8f24e7966fc01892a92f2c6de
MD5 53314cfe424aa3c7b3ba8f02b096c94f
BLAKE2b-256 23151df09be2c9ed0ca75f6e95c78fcace9cf6e906261aa54c5926756da7ec57

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