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 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.1.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.1-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sysnet_docversion-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 7be7266aa113425badf02e01510688fbff11db725dbfa93a049f103c51114a34
MD5 94f911e5cc8ac5660d48db76fb94f67e
BLAKE2b-256 42ad191df481e56f5c057eaa563cb92511b3ddff07cdbbd073f2820cde97b3d9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sysnet_docversion-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8a3fdc484186cb7acc7d3210b5b2b4c7f569393c2cfbd5908ea0617d560ca2ba
MD5 777cbb76d91a354f4d37cf2354af90b6
BLAKE2b-256 ae77599aa1b6e26381427627c863cc32760df06eb1d921b585c23c8f5a5171b9

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