Catalog PyPI
Back to packageRELEASE DETAILS

1.0.0

PyPI

acsync-core

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

7zacsyncdiffincrementallzma2patchupdate
Published10 Jul 2026
Direct dependencies1
Transitive dependenciesNot calculated

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.

Declared dependencies 1

Native requirements
1 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
pythonnet
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pythonnet>=3.0runtime

Distribution files

2 collected
acsync_core-1.0.0-py3-none-any.whl

bdist_wheel · 499.53 KB · Python py3

Source file
acsync_core-1.0.0.tar.gz

sdist · 487.83 KB · Python source

Source file

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_version:6ad3d8425be01bef78a00add803101299fd46569e29eae87bfcbcd06c5330b07

Other collected versions

View all collected versions →