Skip to main content

Compact, read-only nested dictionary backed by a DAWG-style radix trie

Project description

compact-tree

Tests License: MIT

Compact, read-only nested dictionary backed by a DAWG-style radix trie.

CompactTree stores a nested Python dict using a path-compressed radix trie with DAWG-style key/value deduplication, enabling low-memory random access and efficient serialization.

Features

  • Memory-efficient: DAWG-style deduplication via two MarisaTrie instances (one for keys, one for values)
  • Fast lookups: Plain list-indexing over parallel arrays — no rank/select overhead
  • C-accelerated lookups: Optional _marisa_ext C extension provides TrieIndex and TreeIndex for ~5–10× faster uncached queries
  • Multi-level traversal: get_path(*keys) descends multiple levels in a single C call, eliminating intermediate _Node allocations
  • High-performance builds: 7.3s for a 6.2M-leaf, 173K-key tree (v2.0.0)
  • Fast serialization: 14/s at 173K keys, 77 MiB files
  • Serializable: Save and load from disk with efficient binary format
  • Gzip compression: Optional gzip compression for smaller files on disk
  • Pickle support: Fully serializable via Python's pickle module
  • Read-only: Optimized for lookup-heavy workloads
  • Storage-agnostic: Works with local files and remote storage via fsspec
  • Dict-like interface: Supports [], in, len(), iteration, repr(), and str()

Installation

pip install savov-compact-tree

Or install from source:

git clone https://github.com/andrey-savov/compact-tree.git
cd compact-tree
pip install -e .

Quick Start

from compact_tree import CompactTree

# Build from a nested dict
tree = CompactTree.from_dict({
    "a": {
        "x": "1",
        "y": "2"
    },
    "b": "3"
})

# Access like a normal dict
print(tree["a"]["x"])   # "1"
print(tree["b"])        # "3"
print("a" in tree)      # True
print(len(tree))        # 2
print(list(tree))       # ["a", "b"]

# String representations
print(str(tree))        # {'a': {'x': '1', 'y': '2'}, 'b': '3'}
print(repr(tree))       # CompactTree.from_dict({'a': {'x': '1', ...}, 'b': '3'})

# Serialize to file
tree.serialize("tree.ctree")

# Load from file
loaded_tree = CompactTree("tree.ctree")

# Serialize with gzip compression
tree.serialize("tree.ctree.gz", storage_options={"compression": "gzip"})
loaded_gz = CompactTree("tree.ctree.gz", storage_options={"compression": "gzip"})

# Pickle support
import pickle
data = pickle.dumps(tree)
tree2 = pickle.loads(data)

# Convert back to plain dict
plain_dict = loaded_tree.to_dict()

# Multi-level lookup in a single C call (when C extension is compiled)
result = tree.get_path("a", "x")   # equivalent to tree["a"]["x"] but faster

How It Works

MarisaTrie

MarisaTrie is a compact word-to-index mapping backed by a path-compressed radix trie with subtree word counts for minimal perfect hashing (MPH). CompactTree uses two MarisaTrie instances — one for keys and one for values — to provide DAWG-style deduplication.

  • Path compression: single-child edges are merged for compactness
  • Dense indexing: every unique word gets an index in [0, N)
  • Reverse lookup: recover the original word from its index
  • Bulk enumeration: to_dict() returns {word: index} for all words in O(N); the first call after construction returns a pre-built mapping (zero trie traversals) and frees it immediately
  • Per-instance LRU cache: functools.lru_cache on index() lookups, automatically sized to the vocabulary; cache size preserved through serialization

At query time, navigation uses plain Python parallel lists (_node_labels, _node_children, _node_counts, _node_terminal) — no rank/select overhead.

DAWG-Style Deduplication

  • Keys are collected, sorted, and deduplicated via a MarisaTrie
  • Values (leaves) are similarly deduplicated via a second MarisaTrie
  • Edge labels store integer IDs rather than raw strings
  • The same key or value appearing at multiple levels is stored only once

Architecture

CompactTree
  |
  +-- _child_start : array.array('I')  child start offsets (CSR), one per node
  +-- _child_count : array.array('I')  child counts (CSR), one per node
  +-- elbl         : array.array('I')  edge labels (uint32 key ids, one per node)
  +-- vcol         : array.array('I')  value column (uint32: value id or 0xFFFFFFFF for internal nodes)
  +-- _key_trie    : MarisaTrie        key vocabulary (word <-> dense index)
  +-- _val_trie    : MarisaTrie        value vocabulary (word <-> dense index)
  +-- _c_tree      : TreeIndex | None  optional C-level traversal helper (None if extension not built)

MarisaTrie additionally exposes:

  • _c_index (TrieIndex) — C-level lookup helper, set by _build_c_index() when the extension is available.
  • _first_char_maps / _prefix_counts / _node_label_lens — navigation tables built by _build_navigation_tables() for O(1) child dispatch and MPH index accumulation.

Each non-root node v (0-indexed) occupies a slot in both elbl (its edge label / key id) and vcol (its value id, or the sentinel 0xFFFFFFFF for internal nodes).

Child navigation uses CSR (Compressed Sparse Row) arrays: _child_start[v] is the start offset and _child_count[v] is the count of children of node v.

Binary Format (v5)

Magic   : 5 bytes    "CTree"
Version : 8 bytes    uint64 LE  (always 5)
Header  : 7 × 8 bytes  lengths of: keys_trie, val_trie, child_count,
                         vcol, elbl, key_vocab_size, val_vocab_size
Payload : keys_trie_bytes | val_trie_bytes | child_count_bytes
          | vcol_bytes | elbl_bytes

keys_trie_bytes and val_trie_bytes are serialized MarisaTrie instances (CSR format). child_count_bytes, vcol_bytes, and elbl_bytes are packed uint32 arrays. key_vocab_size and val_vocab_size record the LRU cache sizes used during from_dict and are restored on load so query-time caches are immediately correctly sized.

Files written in v4 or earlier (LOUDS-based) are not supported. Use v1.x to migrate old files if needed.

Dependencies

  • bitarray — Bit-packed boolean arrays (used for terminal flags in MarisaTrie serialization)
  • fsspec — Filesystem abstraction for local and remote storage

Testing

pytest test_compact_tree.py test_marisa_trie.py

Benchmarks

Run performance benchmarks with pytest-benchmark:

pytest test_compact_tree.py::TestLoadPerformance --benchmark-only -v

See BENCHMARK_RESULTS.md for detailed results and OPTIMIZATIONS.md for optimization history.

Performance

Benchmark: 3-level nested dict, shape {L0=9, L1=4, L2=173,000}, 6.2M leaf entries.

Metric v2.0.0 v2.1.0 (C ext)
from_dict build time 7.3s 7.3s
Lookup throughput 67,889/s (14.7 µs) ~340,000–680,000/s (1.5–3 µs)
Serialize 14.0/s (71.6 ms), 77.2 MiB 14.0/s (71.6 ms), 77.2 MiB
Deserialize 1.0/s (999 ms) 1.0/s (999 ms)

Lookup improvement requires _marisa_ext C extension (built automatically when a C compiler is available). Pure-Python fallback matches v2.0.0.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

savov_compact_tree-2.1.0.tar.gz (41.1 kB view details)

Uploaded Source

Built Distributions

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

savov_compact_tree-2.1.0-cp313-cp313-win_amd64.whl (30.0 kB view details)

Uploaded CPython 3.13Windows x86-64

savov_compact_tree-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (47.5 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

savov_compact_tree-2.1.0-cp313-cp313-musllinux_1_2_aarch64.whl (47.9 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

savov_compact_tree-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (47.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

savov_compact_tree-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (48.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

savov_compact_tree-2.1.0-cp313-cp313-macosx_11_0_arm64.whl (27.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

savov_compact_tree-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl (27.2 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

savov_compact_tree-2.1.0-cp312-cp312-win_amd64.whl (30.0 kB view details)

Uploaded CPython 3.12Windows x86-64

savov_compact_tree-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (47.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

savov_compact_tree-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl (47.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

savov_compact_tree-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (47.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

savov_compact_tree-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (48.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

savov_compact_tree-2.1.0-cp312-cp312-macosx_11_0_arm64.whl (27.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

savov_compact_tree-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl (27.2 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

savov_compact_tree-2.1.0-cp311-cp311-win_amd64.whl (29.9 kB view details)

Uploaded CPython 3.11Windows x86-64

savov_compact_tree-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (46.8 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

savov_compact_tree-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl (47.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

savov_compact_tree-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (46.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

savov_compact_tree-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (47.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

savov_compact_tree-2.1.0-cp311-cp311-macosx_11_0_arm64.whl (27.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

savov_compact_tree-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl (26.9 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

savov_compact_tree-2.1.0-cp310-cp310-win_amd64.whl (30.0 kB view details)

Uploaded CPython 3.10Windows x86-64

savov_compact_tree-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (48.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

savov_compact_tree-2.1.0-cp310-cp310-musllinux_1_2_aarch64.whl (49.3 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

savov_compact_tree-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (48.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

savov_compact_tree-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (49.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

savov_compact_tree-2.1.0-cp310-cp310-macosx_11_0_arm64.whl (27.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

savov_compact_tree-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl (27.3 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

savov_compact_tree-2.1.0-cp39-cp39-win_amd64.whl (30.0 kB view details)

Uploaded CPython 3.9Windows x86-64

savov_compact_tree-2.1.0-cp39-cp39-musllinux_1_2_x86_64.whl (48.5 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

savov_compact_tree-2.1.0-cp39-cp39-musllinux_1_2_aarch64.whl (48.9 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

savov_compact_tree-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (48.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

savov_compact_tree-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (49.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

File details

Details for the file savov_compact_tree-2.1.0.tar.gz.

File metadata

  • Download URL: savov_compact_tree-2.1.0.tar.gz
  • Upload date:
  • Size: 41.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for savov_compact_tree-2.1.0.tar.gz
Algorithm Hash digest
SHA256 82c578e31e33634e34212ef567af4df518ffe17b5f82543e6a1293126bfb3645
MD5 13014300819380b1e9c124b40e0834ef
BLAKE2b-256 cae70c6c0bb7f2b30fe11da39f357f187237b19fb9f1a87e45bf857bacc54135

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0.tar.gz:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2968c9bba25f42197f554c495889334f186798edb21a8242d40b07857080e06d
MD5 fcbb31bc0c7414f84dc42d360c0ebd0f
BLAKE2b-256 d95460c44c29741e0cdd68cf41babdb39d6853b7770c88d33ee7dacfe4326196

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b4f65441cb3f6b834ed1bc321a5385319ef5559597330a5357590bd8a9aece93
MD5 0e268378d7fe7c7f59beef52ce03bf21
BLAKE2b-256 481a3a53fa974c305462f489de35b704a8271fc6026e9649bb08a678d4fd6010

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2f4f2bc16b02fde89eda9be6dbb1264001e94f13fab406822c7daeb861470650
MD5 e3889ce528b96605836fda2059439760
BLAKE2b-256 e0076d815a1912ccc1d3913feca72104429ef8072072c5cc1ad2ba0742eace2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a75b539da87039da1a6a4164742b1576871646cf7f70bca1d011bc8cc35b8534
MD5 6f67b0e7c9f7e774a3bde6da9f0b5153
BLAKE2b-256 0d938befaf8a95987402af2966bc18b1388734615a27aa552bfc81d6d64ec97d

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c0d9b134aa1ac6f16096983c9f8d06444fe3d0b706263920736c1d1a88ef43e7
MD5 ea6d043dec0e80038055d983ec6a7085
BLAKE2b-256 412b1d64bbad851da53217481a11d9a9c731a2e4393bb3129cf7b475de71d196

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 337faf0b0592010166dc0e4a3a45192ec4f06cea6039c4563c071e0b79c50c8d
MD5 44549ad844674943a4248e943ba75e38
BLAKE2b-256 8216f96b77109ed519104e37f6cba84a2224188ba1c6810bf5374f504afd2b70

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f17d71895129ba366b2d34a9165e13d3e3ae893e58e1fdd89e5a89c4e4292fef
MD5 af8461f9030d813face17c8042b1b030
BLAKE2b-256 5e9ae44aeea3708000e1405c78690a4d0edc407dd72ae08470a31c98ac2c98a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 61f2ced40d667ae9ef03c4175d506e3b0af221cb9c8ebfd2bdea17bf9bc2f309
MD5 136d6b7a6d6bbf4baf63974c5b9d58e7
BLAKE2b-256 6a35d8b8355964ca01fd1fea5e6fba212a0fb878ddbf35876850afcec36538f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7adf8b51e2eca07f4a93582a4d9230b837dd0cf5707242fe77a9f494af0c4109
MD5 053650e18b1331b891c258b6519fb467
BLAKE2b-256 63c98244db60b3e0cfd16ccecd405dd137abe26b5f632069dd1fba89e9ff7c09

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 59c852578785ab011eb3080ed19e5a1fedd59c90286f8373b1dce28d991a2bd0
MD5 d40d69d3b1727e06e5866267593c76d3
BLAKE2b-256 beb8f037811d70ced579e9a80b7d115a619d58e0cdfd9ba127f898f7215e8147

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 33ce091010da1f586128bd1731d77e81ab5e030f6413287e3bfc9d8e2c9a41f0
MD5 d7983f2280419e8dfab190f3ecdd215d
BLAKE2b-256 f3d3a143536bce9d0f87b777ada66b5a8cc85f62359a5d133287483e41fcd199

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 817acb8cda63a4f3307bc1eb47bc3ae051e78ce1339529cc215278b40ce780d2
MD5 4054e98f07c1eb7f92bb2147b1f3f672
BLAKE2b-256 d41490cac77ac33a3f29c575451f166bead7a43e7e05f3e15725607a5c84e7c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2a01d92bedd508fee6a045159caefa2b726a1087cb9a1efb1d7a152c9705f221
MD5 67258b81b849948a92cf1d89285fa0e7
BLAKE2b-256 61d7c8b9835a85866ce6c483154f7c2b3d92a72ebc8895f7c7e8b0408543c911

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 fe94da125e58649781bd6b4a2274e9a95686386b7e75ddc2e278de3a054e1d90
MD5 cff9595f00647b78477c357bf256afb5
BLAKE2b-256 28c33a5d9e991acaeb2f6287f7e9b239da384f3560abb02bfbe8c97193b5e449

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e7867c43fe5bd1624cd37023d5b0035f9736b43c6b94a427223d6557115c62e6
MD5 6ead877943a9a39cf0dfbcefab27529e
BLAKE2b-256 3a18fbc0da0a0fae77171675583cbfeca2bc7087747b7c530b332e52697d2d26

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dc7797cfdafa6631274a6086fcafa41699b4683589a0d0578160bdc4fe183a7f
MD5 0116468faf5996d735d27791259178a9
BLAKE2b-256 589f6280b731d4d9378c08c95f1e06910311c636173ec00fbf3b93571daf15fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e174d0c1d1e567a7528eb071e13ae59826a3bacf9c59bd28dc52b765dc78c088
MD5 1b7a9be02dae60db2884cf80b025ad62
BLAKE2b-256 61878bedbb9b306bf4bfd542cd48252828361256a629117d8d1267a8d0d69639

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 df665d1f5977e99440f47ca56c8933433eee345b578ac7c4813106b74cac774e
MD5 4180c9205309717129f6b6c8845e3aef
BLAKE2b-256 568a755c8052c26a56f8b4cbbd8030498851a333791477f8b463ec9193ef190a

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6f0c223a386172a11ba2bfe5b7774ff13cfe2b65064517669a4b6187ef667f75
MD5 22afdd3ee28cb14b8aa7122483dc018b
BLAKE2b-256 132b224a2ffa861f4adba4a4e8c3b630f8add11fd5ba75c7c1724d5e40e2bb51

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1fd847c18ba152d8825b9bc992cc3434de7ad8c7fea173a540c5bbafd73c76e2
MD5 daf324c8b5e1e36e1efcd7c5a45c8642
BLAKE2b-256 f09622a90a39e31a878cb77b9539234ee5de30be63c39a3fd4c33b9105dc2629

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 73a7546a9463b2df75bdc39138be349ae58b1aa68aa3080c30593d8331dd2bd4
MD5 923c4e5369b37625e607bcaf73309bee
BLAKE2b-256 18bc2d8c27099ccdd6306e6a5621bbb12cd7c51f0add6d676159ef724e280cbf

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 541d4d54933c4eae64ee5543e29c27cd37c9a4cc57a322e7022cfd6489724ece
MD5 d66c76aac971eb6f90b74fedd6001f15
BLAKE2b-256 434fddf9c05b939014235d0841450a8e5f686e0c7c2984e135ea2e2bf16160ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d7f0c75b34393d24c85ed01ab889bf52f91027ab255c543472f4dd1463c2544e
MD5 4e8fba21e844e825e316bcf3fe4ed052
BLAKE2b-256 a67a0be5fe83cfd7e0fbba7d4ac4a7d57680961953f4431db4dbe32c1ac5e6bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c3d940a7d975dda1b41c1b2bc2ee0040d8a65642f913ef6681c7fa3459d73218
MD5 326c630fb80f1915505cff60ff3de01e
BLAKE2b-256 526c2af1785d679f932ed297a59070562261d8e70bb39375d5697e8c581549d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp310-cp310-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a6f5db543068d4b5fe91f82f77642e4fdb88c4adc748d2993f925a90e3949386
MD5 cb8925c5e01c7a8429f47b4e9b82de22
BLAKE2b-256 dd6ec9f471d1f2cb1210f9837c774e324dab200676baaa24c31101e8723743ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 853082c5bf32971ac238b2385907121272efea3733823ce77a1ed1d37db15277
MD5 56328d974b17ae962544758f0e840750
BLAKE2b-256 859e4c7f3d44fc3e5004ce11e81d14b256b6a804a994412f4142dc5c7d0e68b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a704b8c5593265039e112882da7faf6aacd93f3f1f81d1ebc19d2740094d6e16
MD5 30a33cd912eb62ee0127ec03678c375b
BLAKE2b-256 b9ddfd4614ef4a006ad10752d7c902c5780f2216469aa7ae70f4cc856862de7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 eb8e5cb06fdc6638068b8b31e4b56ef54bc369101a413775a71748342bdf0e3b
MD5 638ae5437cfa8be8ba24df73715d9727
BLAKE2b-256 9b922cb6f11e32f6daf300f83b2c79dd0dd58e7fa0afa2ab9f993c8bee69e849

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b243433fd1a2a851f96ab749c0820109545ba3ead36c14840bf49751d42993af
MD5 e2410f142202af37b77da2fd43d7f5cc
BLAKE2b-256 089ba7fdeec7e1358d891db7ec38891f245f5c73cc056e223cb3224d58fc4d38

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp39-cp39-win_amd64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 eda618e6072cc2e4741e4bbbcee240c0c95eef5723516091a68f800923e289d8
MD5 783c13bd2edb8ef6c7a163412eb9159e
BLAKE2b-256 335acadde4802f3e860f985e88c5aeceb2114bd87cbbd3f0d304d39d26550b76

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ebb5b12d169824c7916508937dfb59a467667e2a70c1c937f544e6175f797b29
MD5 bf4474a605c390459b7237f6958efbbd
BLAKE2b-256 7acbf370746449c2a890fa35fac4253c7376bc6ba148e1aa5b66be98393bd139

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp39-cp39-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c7205fd280ca6600cb8656c1bf735786a381d3880fe1898176898174f2bd246c
MD5 45a104588d9cde1c407f63068f808427
BLAKE2b-256 6cbc5529530ee9b1646237148bd59f02c7f63abaa351a156e0119de1cb8b597a

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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

File details

Details for the file savov_compact_tree-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for savov_compact_tree-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6a123003d1c1d239395690c1c47dcc56ad9a93e47bc4482965f073833fb9e565
MD5 4b976d7195c29b5a070eeb004e4f9db5
BLAKE2b-256 1654586ac91640f2a8af359536b07a5946412c04cc3fc02e5f73ac5973416ce2

See more details on using hashes here.

Provenance

The following attestation bundles were made for savov_compact_tree-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on andrey-savov/compact-tree

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