🕰️ Data Time Machine
Git for Your Data Pipelines
Never lose track of your data states again. Roll back, debug, and restore with confidence.
Features • Installation • Quick Start • Cloud & Remote • Dashboard • Integrations
🌟 Overview
Data Time Machine (DTM) is a revolutionary state management system for data pipelines, inspired by Git's version control philosophy. When complex data transformations fail in production, DTM enables you to snapshot entire data environments and roll back to known-good states instantly.
Why DTM?
- 🔍 Debug Complex Failures: Capture exact data states before and after pipeline runs
- ☁️ Cloud Native: Push snapshots to S3, GCS, or Azure Blob Storage
- � Visual Insights: Explore commit history and diffs via a built-in Web Dashboard
- ⚡ Optimized Storage: Deduplication and gzip compression for handling large datasets efficienty
- � Pipeline Ready: Native integrations for Apache Airflow and Prefect
✨ Features
Core Capabilities
- 🔐 Content-Addressable Storage: Efficient deduplication and compression
- 📊 Metadata & Diffs: View unified diffs of data changes between snapshots
- ⚡ Incremental Snapshots: Only stores changed files automatically
- 🌐 Remote Support: Push/Pull to S3, Google Cloud Storage, and Azure Blob
- 🎨 Web Dashboard: Interactive browser-based visualization of your data history
Command Set
dtm init # Initialize a new DTM repository
dtm snapshot -m "message" # Snapshot current state
dtm checkout <commit-id> # Restore to a specific snapshot
dtm diff <commit_a> <commit_b> # Compare two snapshots
dtm log # View snapshot history
dtm web # Launch Visualization Dashboard
dtm remote add origin s3://... # Add a remote storage backend
dtm push origin # Push snapshots to cloud
dtm pull origin # Pull snapshots from cloud
🚀 Installation
Prerequisites
- Python 3.10 or higher
- pip package manager
Install from PyPI
pip install data-time-machine
Install with Cloud Support
To enable S3, GCS, or Azure support, install the necessary extras (conceptually):
pip install boto3 google-cloud-storage azure-storage-blob
(Or install fastapi uvicorn for the dashboard)
🏁 Quick Start
1️⃣ Initialize
cd /path/to/data
dtm init
2️⃣ Snapshot
echo "important data" > dataset.csv
dtm snapshot -m "Initial baseline"
3️⃣ Visualize Changes
echo "bad data" >> dataset.csv
cid=$(dtm snapshot -m "Corrupted run")
dtm diff HEAD^ HEAD
4️⃣ Use the Dashboard
dtm web
# Open http://localhost:8000 to browse history visually!
☁️ Cloud & Remote
Push your data snapshots to the cloud for backup or sharing.
# S3
dtm remote add s3-backup s3://my-bucket/dtm-repo
dtm push s3-backup
# Google Cloud Storage
dtm remote add gcs-origin gs://my-data-lake/dtm
dtm pull gcs-origin
🔌 Integrations
Apache Airflow
Use DTMSnapshotOperator to automatically snapshot data in your DAGs.
from src.integrations.airflow import DTMSnapshotOperator
snapshot_task = DTMSnapshotOperator(
task_id='snapshot_data',
message='Post-transformation snapshot',
repo_path='/data/project'
)
Prefect
Use the create_dtm_snapshot task in your flows.
from src.integrations.prefect import create_dtm_snapshot
@flow
def data_pipeline():
# ... processing ...
create_dtm_snapshot(message="Pipeline Success", repo_path=".")
🏗️ Project Structure
data-time-machine/
├── src/
│ ├── cli.py # CLI Entry point
│ ├── core/
│ │ ├── backends.py # Storage Backends (Local, S3, GCS, Azure)
│ │ ├── remote.py # Remote Manager (Push/Pull)
│ │ ├── storage.py # Storage Engine & Compression
│ │ └── controller.py # Business Logic
│ ├── web/ # FastAPI Web Dashboard
│ └── integrations/ # Airflow & Prefect modules
├── scripts/ # Utility scripts
└── README.md
📋 Roadmap (Completed)
- Add diff visualization between snapshots
- Implement remote repository support
- Add compression for large file storage
- Create web-based visualization dashboard
- Support for incremental snapshots
- Integration with popular data pipeline frameworks (Airflow, Prefect)
- Cloud storage backends (S3, GCS, Azure Blob)
👤 Author
Azmat Siddique
- GitHub: @azmatsiddique
- Project Link: github.com/azmatsiddique/data-time-machine
⭐ Star this repo if you find it useful!
Made with ❤️ by Azmat Siddique
Metadata
Release files for data-time-machine 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| data_time_machine-0.2.3.tar.gz | 3.0 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| data_time_machine-0.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.0 MB
Release files / data_time_machine-0.2.3.tar.gz
| Download URL | data_time_machine-0.2.3.tar.gz |
|---|---|
| Size | 3.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a2027a2d3c2cc803859ea58b71dd24ba15333d59b69a8d870e7f1d79546b85f9
|
|
BLAKE2b-256 checksum How to use checksums |
b4fc44f447a14966f76ebf3da545c2732306ee8ed0d424d9ae25a38e30ec342d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.5
|
Release files / data_time_machine-0.2.3-py3-none-any.whl
| Download URL | data_time_machine-0.2.3-py3-none-any.whl |
|---|---|
| Size | 19.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5b87b26fe158d2ff52bec3242f099520def3c93bea15479f6bc96436ad086cc1
|
|
BLAKE2b-256 checksum How to use checksums |
477fd3dd1ee9128c586fd68090b5799807d1fca2a860ebf1170ed37fdb2997f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.5
|
Security for data-time-machine 0.2.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.