Observed since 20 Oct, 18:28 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Incremental binary patch system — SHA256 diff, 7z (LZMA2) patch creation and application
acsync-core is an incremental binary patch system for Python. It uses SHA256 for change detection and 7z (LZMA2) for compression — ideal for distributing application updates with minimal bandwidth.
Powered by ACSync.Core (.NET) via pythonnet.
pip install acsync-core
Windows only — the underlying .NET assembly and 7za.exe are bundled for Windows x64. Requires a .NET 10 SDK or later runtime on the target machine.
import acsync
# Scan directory A (v1.0) and save its manifest
manifest_a = acsync.create_manifest(r"D:\app\v1.0")
acsync.save_manifest(manifest_a, r"D:\app\manifest_v1.json")
# Scan directory B (v2.0) and save its manifest
manifest_b = acsync.create_manifest(r"D:\app\v2.0")
acsync.save_manifest(manifest_b, r"D:\app\manifest_v2.json")
diff = acsync.diff(manifest_a, manifest_b)
print(f"Changed: {len(diff['changed'])} files")
print(f"Deleted: {len(diff['deleted'])} files")
for f in diff["changed"]:
print(f" + {f['relativePath']} ({f['sha256'][:12]}...)")
acsync.create_patch(
r"D:\app\v1.0",
r"D:\app\v2.0",
r"D:\app\update_patch.7z",
)
acsync.apply_patch(
r"D:\deployed_app",
r"D:\app\update_patch.7z",
exclude_extensions=[".config"], # preserve local config files
)
| Function | Description |
|---|---|
create_manifest(directory) | Scan a directory, returns manifest dict with SHA256 per file |
save_manifest(manifest, path) | Save manifest dict to JSON file |
load_manifest(path) | Load manifest from JSON file |
load_manifest_from_directory(dir) | Load manifest from a directory (acsync_manifest.json) |
diff(old, new) | Compare two manifests, returns {changed: [...], deleted: [...]} |
create_patch(old_dir, new_dir, output?) | Create incremental 7z patch between two directories |
apply_patch(target, patch?, exclude?) | Apply patch to target directory |
Apache 2.0
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.0.0 | 10 Jul 2026 | 1 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 18:28 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:ad0e64dba1b811ec346f08d22ef842404768d74e74c503ba4a36b91345414eb3