Catalog PyPI
PACKAGE EXPLORERView in registry

acsync-core

PyPI

Incremental binary patch system — SHA256 diff, 7z (LZMA2) patch creation and application

7zacsyncdiffincrementallzma2patchupdate
Versions collected1
Direct dependencies1From release 1.0.0
Last observed20 Oct, 18:28 UTC

README

Version 1.0.0 documentation

acsync-core

PyPI License Python

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.

Installation

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.

Quick Start

1. Create a manifest

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")

2. Diff two manifests

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]}...)")

3. Create a patch

acsync.create_patch(
    r"D:\app\v1.0",
    r"D:\app\v2.0",
    r"D:\app\update_patch.7z",
)

4. Apply a patch

acsync.apply_patch(
    r"D:\deployed_app",
    r"D:\app\update_patch.7z",
    exclude_extensions=[".config"],  # preserve local config files
)

API

FunctionDescription
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

License

Apache 2.0

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
1.0.010 Jul 20261

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
g-poplo/acsync

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 18:28 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:ad0e64dba1b811ec346f08d22ef842404768d74e74c503ba4a36b91345414eb3