Skip to main content

Rock-solid primitives for content-addressable hashing, chain fingerprinting, and config diffing

Project description

knurl

Rock-solid primitives for content-addressable hashing, chain fingerprinting, and config diffing.

Extracted from the SpiritEngine project.

Modules

  • canon - Canonical JSON serialization (RFC 8785 inspired)
  • hash - Content-addressable hashing
  • chain - Merkle-like chain fingerprinting
  • diverge - Divergence detection for fingerprint chains
  • diff - JSON Patch (RFC 6902) diffs
  • yield_ - Yield data serialization

Installation

pip install knurl

# With diff support (requires jsonpatch)
pip install knurl[diff]

Usage

from knurl import canon, hash, chain, diverge

# Canonical serialization
canonical_bytes = canon.serialize({"b": 1, "a": 2})  # b'{"a":2,"b":1}'

# Content-addressable hashing
content_hash = hash.compute("hello world")        # 'sha256:...' (strings)
blob_hash = hash.compute_bytes(b"\x00\x01\x02")   # 'sha256:...' (raw bytes)
file_hash = hash.compute_file("video.mp4")        # 'sha256:...' (streamed, multi-GB safe)
tree_hash = hash.compute_tree("mirror/")          # 'sha256:...' (reproducible directory digest)

# Chain fingerprinting
fingerprints = chain.fingerprint([config1, config2, config3])

# Divergence detection
result = diverge.find(old_fingerprints, new_fingerprints)

Requirements

  • Python 3.10+
  • No dependencies (stdlib only)
  • Optional: jsonpatch for diff module

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

knurl-0.2.0.tar.gz (109.4 kB view details)

Uploaded Source

Built Distribution

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

knurl-0.2.0-py3-none-any.whl (24.9 kB view details)

Uploaded Python 3

File details

Details for the file knurl-0.2.0.tar.gz.

File metadata

  • Download URL: knurl-0.2.0.tar.gz
  • Upload date:
  • Size: 109.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for knurl-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2ec5edb03205b540177366761f9ae4cddcb8d65aa5f8c94b0a0cb89f038aecbd
MD5 ab3a1e00e19974f3847c954e0cae3540
BLAKE2b-256 ca7fc1fdba9e7bf4d2ba74f1b287b3ac5fdc7f2a8d865271cc82bac5372d0f9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for knurl-0.2.0.tar.gz:

Publisher: publish.yml on spiritengine/knurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file knurl-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: knurl-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 24.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for knurl-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 71678f8891cd14108924b296f7b5c3884d74c573f9f2c7953fa9622aac436fe7
MD5 78171b3247ec92226c178b5c4070db2a
BLAKE2b-256 c55cc21418fdf78ea6a5536946477815ad378159e44869a89ac6f5450f5b50f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for knurl-0.2.0-py3-none-any.whl:

Publisher: publish.yml on spiritengine/knurl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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