Skip to main content

Semantic version control for video timelines (OTIO). Library + CLI.

Project description

pyvedit

Python bindings for vedit — semantic version control for video timelines (OpenTimelineIO).

The PyPI package is pyvedit. The Python module is vedit.

pip install pyvedit
import vedit

repo = vedit.Repo.init("./project")

# Agent generates a timeline as an OTIO dict.
timeline = my_agent.generate(prompt="opening montage, fast cuts")
h0 = repo.commit(timeline, message="agent v0")

# Branch off and try a different approach.
repo.create_branch("alt", at="HEAD")
repo.switch_branch("alt")
alt_timeline = my_agent.generate(prompt="opening montage, slower")
h1 = repo.commit(alt_timeline, message="agent v0 — slower")

# What did the agent change between the two?
for change in repo.diff_refs("main", "alt"):
    print(change.op, change.to_dict())
# trimmed {'clip': {'name': 'shot_03', ...}, 'before': {...}, 'after': {...}}
# added {'clip': {'name': 'reaction_take_2', ...}, ...}

# Or diff two timelines directly without a repo.
changes = vedit.diff(timeline_a, timeline_b)

What it does

vedit is the snapshot, branch, diff, and merge layer for OTIO timelines. Built for AI video tools that need version control without reinventing it from scratch, and for editors who want a real edit history beyond their NLE's undo stack.

The semantic diff understands timeline operations, not byte differences:

  • Trimmed "drone_shot_04" by 1.80s (in)
  • Moved "interview_take_2" before "b_roll_03"
  • Added crossfade between "title_card" and "drone_shot_04" (12 frames)

Three-way merge produces structured conflicts (track-granular in v0.6.0; clip-granular in v0.6.1). Backed by a content-addressed object store and a commit graph; same shape as git.

API surface

# Repo lifecycle
vedit.Repo.init(path)         # create new repo
vedit.Repo.open(path)         # open at exact path
vedit.Repo.discover()         # walk up to find .vedit/

# Commit / read
repo.commit(timeline_dict, message="...", author_name=None, author_email=None)
repo.read_timeline(ref)       # returns OTIO dict
repo.read_commit(ref)         # returns commit dict
repo.resolve(ref)             # full hash from any ref

# Branches
repo.create_branch(name, at="HEAD")
repo.switch_branch(name)
repo.delete_branch(name)
repo.list_branches()          # [(name, hash), ...]
repo.current_branch()         # str or None

# History
repo.log()                    # [(hash, commit_dict), ...] from HEAD
repo.log("alt")               # from a specific ref

# Diff
repo.diff_refs("main", "alt")   # returns list of Change objects
vedit.diff(before_dict, after_dict)  # standalone, no repo

# Errors
vedit.VeditError              # all errors from the core

Links

The full README, roadmap, prior art, and architecture notes live in the GitHub repo.

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

pyvedit-0.0.1.tar.gz (62.9 kB view details)

Uploaded Source

Built Distributions

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

pyvedit-0.0.1-cp39-abi3-win_amd64.whl (420.3 kB view details)

Uploaded CPython 3.9+Windows x86-64

pyvedit-0.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (506.6 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

pyvedit-0.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (482.3 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARM64

pyvedit-0.0.1-cp39-abi3-macosx_11_0_arm64.whl (459.6 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

Details for the file pyvedit-0.0.1.tar.gz.

File metadata

  • Download URL: pyvedit-0.0.1.tar.gz
  • Upload date:
  • Size: 62.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for pyvedit-0.0.1.tar.gz
Algorithm Hash digest
SHA256 ac50c2b6f7912c1d339f8ac94771ec549802003c7db7fbf4ac38e1da6dfc114e
MD5 39878355bcb7913521bad9c98798dfc9
BLAKE2b-256 64449e0e058e709a997709eb457e3a7d843f3a9acf542ea7f9cfae4d61e7bc19

See more details on using hashes here.

File details

Details for the file pyvedit-0.0.1-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: pyvedit-0.0.1-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 420.3 kB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for pyvedit-0.0.1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 9e76d138ea992c833d423b4320b4c105c9b75f152be1bbb7c8cc32ef96e47b95
MD5 137ffba1443ea2dc2f8ca1274f2f08cf
BLAKE2b-256 0cd82d7d7821a185528936aa3ab82ded4dea086f0356534659221a6453a716f3

See more details on using hashes here.

File details

Details for the file pyvedit-0.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyvedit-0.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a2c7dab42e3ee47e0700a2c095958325b7bee9e0aa74f831ec001b851556ff95
MD5 8f58ba81c2a1e31b149624117bbecfaf
BLAKE2b-256 99d2c332772fac63c676c1e1b680b2a6d07b5ebc65a2586cb1f182f8bc6dbec4

See more details on using hashes here.

File details

Details for the file pyvedit-0.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyvedit-0.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ad328a5a999f7a5bab43d8eee79e5c455623a4f79af09b6b64a88f5597d6a423
MD5 2ffbb44050c0f723e46fe23bf60206f6
BLAKE2b-256 fde7f3b99b60c1b24d694b0d09a374137b447d04b5d18ce1f35178c2be249db4

See more details on using hashes here.

File details

Details for the file pyvedit-0.0.1-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyvedit-0.0.1-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 df49e36a84e418b221c2875f42a2be766514cb92a296183097279be8f8cfe491
MD5 f6307915803f04a28a1b5d24a3c4d02c
BLAKE2b-256 2846fa685ed76cdf684710f6e284d08f77637fa4ce78bac66fc051027349a76a

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