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.3.tar.gz (85.3 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.3-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sysnet_docversion-0.1.3.tar.gz
  • Upload date:
  • Size: 85.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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":true}

File hashes

Hashes for sysnet_docversion-0.1.3.tar.gz
Algorithm Hash digest
SHA256 d0291944eff7c2bdac8ac274888132f89e42dd03334c548602d3fe3d8d53d8fb
MD5 51a4ff9977758870d7665779b9563dbb
BLAKE2b-256 50911c545e36d79ec5800338b75ba11c8a308a7f9d94afbe54fa093dba942a22

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sysnet_docversion-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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":true}

File hashes

Hashes for sysnet_docversion-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ad5cfa38fb4f2d9a62bbfaee0accff8fd9a7a92290e457f67f4c5d1a2a50bb2b
MD5 cdf57e01e43715b877bbc52e44442c5c
BLAKE2b-256 dadd38e88a6ac7df6075a835823a1717efa68ec6191f60945ccac591c1eba243

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