Skip to main content

Filesystem state snapshots with diff comparison

Project description

philiprehberger-dir-snapshot

Tests PyPI version License

Filesystem state snapshots with diff comparison.

Installation

pip install philiprehberger-dir-snapshot

Usage

Take a Snapshot

from philiprehberger_dir_snapshot import snapshot

snap = snapshot("./src")
print(f"Found {len(snap.files)} files")

Compare Snapshots

before = snapshot("./src")
# ... make changes ...
after = snapshot("./src")

diff = before.diff(after)
print(diff.summary())

for f in diff.added:
    print(f"+ {f.path}")
for f in diff.removed:
    print(f"- {f.path}")
for f in diff.modified:
    print(f"~ {f.path}")

Save and Load

# Save to JSON
before.to_json("snapshot.json")

# Load later
from philiprehberger_dir_snapshot import Snapshot
restored = Snapshot.from_json("snapshot.json")

Options

# Include only Python files
snap = snapshot("./src", include=["*.py"])

# Exclude build artifacts
snap = snapshot(".", exclude=["__pycache__", "*.pyc", ".git"])

# Use faster hashing (or disable with "none")
snap = snapshot(".", hash_mode="md5")

API

Function / Class Description
snapshot(path, hash_mode="sha256", include=None, exclude=None) Create a snapshot
Snapshot.diff(other) Compare two snapshots, returns SnapshotDiff
Snapshot.to_json(path) / Snapshot.from_json(path) Serialize/deserialize
SnapshotDiff.summary() Human-readable diff summary

Development

pip install -e .
python -m pytest tests/ -v

License

MIT

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

philiprehberger_dir_snapshot-0.1.8.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

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

philiprehberger_dir_snapshot-0.1.8-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

Details for the file philiprehberger_dir_snapshot-0.1.8.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_dir_snapshot-0.1.8.tar.gz
Algorithm Hash digest
SHA256 fbcd442d0b39bd3365ab4ffe11ace17918b892254864408d225237c79b4815c3
MD5 b541911e82d1738da1d139417971131b
BLAKE2b-256 35a08b494acf4e393b4be473b31f35ec23b239385e0bdc41ebd8bb5702d14d86

See more details on using hashes here.

File details

Details for the file philiprehberger_dir_snapshot-0.1.8-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_dir_snapshot-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 563a26d5c844f4d7a472c7ca16fe56b3908ac1c70f1ff490c9ef63bb0d06602a
MD5 38bc90d4171365467727cb313eb5b39c
BLAKE2b-256 ebfe3c4923fe2e6f173b58d38e778547687f74dfea7805511c8ec22c1c607797

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