Skip to main content

Versioned key-value store with git-like commit, branch, and merge semantics.

Project description

kvgit 🔀

Git-style versioning for your data. Commits, branches, and merges -- backed by a dict-like MutableMapping.

Features Description
Dict interface MutableMapping[str, Any] -- reads and writes work like a dict
Commits Immutable, content-addressable snapshots with rollback
Branches Cheap forks with CAS-based optimistic concurrency
Three-way merge Auto-merges non-overlapping changes; pluggable merge fns for conflicts
Eviction High/low water rebase drops least-recently-used keys automatically
Pluggable backends In-memory, disk (diskcache), git (GitPython), IndexedDB (Pyodide/browser), or bring your own KVStore

Install

pip install kvgit            # in-memory only
pip install kvgit[disk]      # adds disk backend via diskcache
pip install kvgit[git]       # adds git backend via GitPython (requires git on PATH)
# IndexedDB backend is available automatically in Pyodide (browser) environments

Quick example

import kvgit

main = kvgit.store()

main["user"] = "alice"
main["score"] = 0
main.commit()

# Branch and diverge
dev = main.create_branch("dev")
dev["score"] = 999
dev.commit()

print(main["score"])  # 0   (main unchanged)
print(dev["score"])   # 999 (dev branch)

Part of the agex stack

kvgit provides versioned agent memory in agex with branching and rollback. It also works as a versioned backing store for monkeyfs virtual filesystems -- pass a Staged instance anywhere a dict is expected.

Development

uv sync --extra dev
uv run pytest

Documentation

See docs/ for detailed documentation:

  • Quick Start -- common patterns with runnable examples
  • API Reference -- full reference for all classes, methods, and types

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

kvgit-0.1.10.tar.gz (31.2 kB view details)

Uploaded Source

Built Distribution

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

kvgit-0.1.10-py3-none-any.whl (34.4 kB view details)

Uploaded Python 3

File details

Details for the file kvgit-0.1.10.tar.gz.

File metadata

  • Download URL: kvgit-0.1.10.tar.gz
  • Upload date:
  • Size: 31.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for kvgit-0.1.10.tar.gz
Algorithm Hash digest
SHA256 341bc8d1b96f9f9a94750fd6a2d82843f1de14236fa7f106a739f06cba8396d0
MD5 6ce60a5bf691f42131ceb97f52f7cfc3
BLAKE2b-256 5b5eb23f89a01f628db77a7a426f7cc64ca4bb9e1c4d08722d1188371234f0d4

See more details on using hashes here.

File details

Details for the file kvgit-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: kvgit-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 34.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for kvgit-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 59da74b3798161f233d9a7775398a5a90c15193f651d097ce78f646cec5250e5
MD5 6d28b25a40903b7b373e03d6a05f3159
BLAKE2b-256 a4489334943202a4763839a470e8ae37f2d42d8c61409df59c13dc6fde3d8934

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