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.1.tar.gz (109.9 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.1-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: knurl-0.2.1.tar.gz
  • Upload date:
  • Size: 109.9 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.1.tar.gz
Algorithm Hash digest
SHA256 a4b3c14417bd96f38e2cf8d95e824aa7c814f0f9b43e83ea558eba555c2255d8
MD5 698d7d0d73080fff80e64af0b4cd4225
BLAKE2b-256 0e8a5fe52dcc072bf91b302b5b30c9848adcd2448d5f4e892170c7849a2de437

See more details on using hashes here.

Provenance

The following attestation bundles were made for knurl-0.2.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: knurl-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 25.5 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ed523006b4571201f07aad6a7aad09be87dc978d7dfe61ed3fbe15710ab4318c
MD5 c0a8d642e0bdf9c6a0733a155e6926b0
BLAKE2b-256 d920ee3326892eaf557cdcce14117c78cb425a8d2fdcc6ad648571aec7dcac52

See more details on using hashes here.

Provenance

The following attestation bundles were made for knurl-0.2.1-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