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
- GitHub: explicit09/vedit
- Issues: explicit09/vedit/issues
- License: Apache 2.0
The full README, roadmap, prior art, and architecture notes live in the GitHub repo.
Metadata
Release files for pyvedit 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyvedit-0.0.1.tar.gz | 62.9 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| pyvedit-0.0.1-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| pyvedit-0.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| pyvedit-0.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| pyvedit-0.0.1-cp39-abi3-macosx_11_0_arm64.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 1.9 MB
Release files / pyvedit-0.0.1.tar.gz
| Download URL | pyvedit-0.0.1.tar.gz |
|---|---|
| Size | 62.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ac50c2b6f7912c1d339f8ac94771ec549802003c7db7fbf4ac38e1da6dfc114e
|
|
BLAKE2b-256 checksum How to use checksums |
64449e0e058e709a997709eb457e3a7d843f3a9acf542ea7f9cfae4d61e7bc19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.13.1
|
Release files / pyvedit-0.0.1-cp39-abi3-win_amd64.whl
| Download URL | pyvedit-0.0.1-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 420.3 kB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
9e76d138ea992c833d423b4320b4c105c9b75f152be1bbb7c8cc32ef96e47b95
|
|
BLAKE2b-256 checksum How to use checksums |
0cd82d7d7821a185528936aa3ab82ded4dea086f0356534659221a6453a716f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.13.1
|
Release files / pyvedit-0.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyvedit-0.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 506.6 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
a2c7dab42e3ee47e0700a2c095958325b7bee9e0aa74f831ec001b851556ff95
|
|
BLAKE2b-256 checksum How to use checksums |
99d2c332772fac63c676c1e1b680b2a6d07b5ebc65a2586cb1f182f8bc6dbec4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.13.1
|
Release files / pyvedit-0.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | pyvedit-0.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 482.3 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
ad328a5a999f7a5bab43d8eee79e5c455623a4f79af09b6b64a88f5597d6a423
|
|
BLAKE2b-256 checksum How to use checksums |
fde7f3b99b60c1b24d694b0d09a374137b447d04b5d18ce1f35178c2be249db4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.13.1
|
Release files / pyvedit-0.0.1-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | pyvedit-0.0.1-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 459.6 kB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
df49e36a84e418b221c2875f42a2be766514cb92a296183097279be8f8cfe491
|
|
BLAKE2b-256 checksum How to use checksums |
2846fa685ed76cdf684710f6e284d08f77637fa4ce78bac66fc051027349a76a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.13.1
|