Skip to main content

Crash-safe embedded key-value store — encryption (XChaCha20-Poly1305), TTL, reverse iterators, iterator seek, put_if_absent, column families, ACID transactions, vector search (HNSW)

Project description

SNKV Python Bindings

Build PyPI License

Idiomatic Python 3.8+ bindings for SNKV — a lightweight, ACID-compliant embedded key-value store built directly on SQLite's B-Tree engine.

If you find it useful, a ⭐ on GitHub goes a long way!


Features

  • Dict-style APIdb["key"] = value, val = db["key"], del db["key"], "key" in db
  • Context managerswith KVStore(...) as db and with db.create_column_family(...) as cf for guaranteed cleanup
  • Prefix iterators — efficient namespace scans with db.prefix_iterator(b"user:")
  • Reverse iterators — walk keys in descending order with db.reverse_iterator() and db.reverse_prefix_iterator(b"user:")
  • WAL checkpoint control — PASSIVE / FULL / RESTART / TRUNCATE modes via db.checkpoint()
  • Auto-checkpoint — set wal_size_limit=N to checkpoint automatically after every N WAL frames
  • Typed exceptionsNotFoundError, BusyError, LockedError, ReadOnlyError, CorruptError all subclass snkv.Error
  • No Python dependencies — pure CPython C extension; only requires a C compiler and python3-dev
  • Native TTL — per-key expiry with put(ttl=seconds), dict-style db[key, ttl] = value, lazy expiry on get, and purge_expired()
  • Encryption — per-value XChaCha20-Poly1305 encryption with Argon2id key derivation; transparent to all existing APIs
  • Seek iterators — jump to any key in O(log N) with it.seek(key), chainable and works on prefix/reverse iterators
  • Conditional insert — atomic put_if_absent(key, value, ttl=None) returns True if inserted; safe for distributed locks and dedup
  • Bulk cleardb.clear() / cf.clear() truncates all keys in O(pages) without dropping the store
  • Key countdb.count() / cf.count() returns entry count in O(pages); CF counts are fully isolated
  • Extended statsdb.stats() exposes 12 counters including bytes_read, bytes_written, wal_commits, ttl_expired, db_pages; reset with db.stats_reset()
  • Vector search — integrated HNSW approximate nearest-neighbour index via snkv[vector]; sidecar persistence, quantization (f32/f16/i8), metadata filtering, exact rerank, TTL on vectors, and encryption support
  • 471 tests — full pytest suite covering ACID, WAL, crash recovery, concurrency, column families, TTL, encryption, and vector search

Installation

From PyPI (recommended)

Pre-built binary wheels are available for Linux, macOS, and Windows — no compiler needed.

Windows / macOS:

pip install snkv

Linux (Debian/Ubuntu):

python3 -m venv .venv
source .venv/bin/activate
pip install snkv

Linux system Python is "externally managed" (PEP 668) and blocks system-wide pip installs. Use a virtual environment.

Build from Source

# System dependencies
sudo apt-get install -y build-essential python3-dev python3-pip

# Python build dependencies
pip3 install setuptools wheel pytest

# Build
cd python
python3 setup.py build_ext --inplace

macOS

# Compiler (skip if already installed)
xcode-select --install

# Python build dependencies
pip3 install setuptools wheel pytest

# Build
cd python
python3 setup.py build_ext --inplace

Windows — Native Python (recommended)

  1. Install Python 3.8+ — check "Add Python to PATH"
  2. Install Visual Studio Build Tools — select "Desktop development with C++"
  3. Open "x64 Native Tools Command Prompt for VS 2022" from the Start Menu (required for 64-bit Python; "Developer PowerShell for VS" defaults to 32-bit and will fail)
:: Python build dependencies
pip install setuptools wheel pytest

:: Build
cd python
python setup.py build_ext --inplace

Windows — MSYS2 MinGW64 shell

Open the MSYS2 MinGW64 shell (not plain MSYS2, not cmd.exe):

# System + Python dependencies (one-time)
pacman -S --needed mingw-w64-x86_64-python \
                   mingw-w64-x86_64-python-pip \
                   mingw-w64-x86_64-python-setuptools \
                   mingw-w64-x86_64-python-pytest

# Build
cd python
python3 setup.py build_ext --inplace

On all platforms, setup.py automatically locates snkv.h — no manual header step needed. On Linux/macOS it regenerates it via make snkv.h; on Windows it falls back to the pre-built snkv.h included in the repo.


Quick Start

from snkv import KVStore

with KVStore("mydb.db") as db:
    db["hello"] = "world"
    print(db["hello"].decode())   # world

API Reference

Opening a store

from snkv import KVStore, JOURNAL_WAL, JOURNAL_DELETE, SYNC_NORMAL, SYNC_OFF, SYNC_FULL

with KVStore(
    "mydb.db",
    journal_mode=JOURNAL_WAL,   # JOURNAL_WAL (default) or JOURNAL_DELETE
    sync_level=SYNC_NORMAL,     # SYNC_NORMAL (default), SYNC_OFF, SYNC_FULL
    cache_size=2000,            # pages (~8 MB default)
    page_size=4096,             # bytes; new databases only
    busy_timeout=5000,          # ms to retry on SQLITE_BUSY (default 0)
    read_only=False,            # open read-only
    wal_size_limit=100,         # auto-checkpoint every 100 WAL frames (0 = off)
) as db:
    ...

CRUD

# Write
db["key"] = b"value"          # bytes or str keys/values are both accepted
db["key"] = "value"           # str is UTF-8 encoded automatically

# Read
val = db["key"]               # returns bytes; raises NotFoundError if missing
val = db.get("key")           # returns bytes or None
val = db.get("key", b"def")   # with default

# Check existence
exists = "key" in db
exists = db.exists(b"key")

# Delete
del db["key"]
db.delete(b"key")             # same as del; no error if key absent

# Upsert
db.put(b"key", b"value")      # identical to db["key"] = value

Transactions

db.begin(write=True)
db["a"] = "1"
db["b"] = "2"
db.commit()          # persist

db.begin(write=True)
db["c"] = "3"
db.rollback()        # discard — "c" is never written

Auto-commit is the default: each db["key"] = value outside an explicit transaction is committed immediately.

Column Families

Logical namespaces within a single database file. Always close cf before db.

# Create (first use)
with db.create_column_family("users") as cf:
    cf[b"alice"] = b"admin"
    cf[b"bob"]   = b"viewer"

# Open (subsequent uses)
with db.open_column_family("users") as cf:
    print(cf[b"alice"])       # b"admin"

# List all column families
names = db.list_column_families()   # ["users", ...]

# Drop
db.drop_column_family("users")

Iterators

# Full scan — yields (key, value) tuples in key order
for key, value in db.iterator():
    print(key, value)

# Prefix scan
for key, value in db.prefix_iterator(b"user:"):
    print(key, value)

# Manual control
it = db.iterator()
it.first()
while not it.eof:
    print(it.key, it.value)
    it.next()
it.close()

# As a context manager
with db.iterator() as it:
    for key, value in it:
        ...

Reverse Iterators

Walk keys in descending order — no full scan, no sort, pure B-tree traversal.

# Full reverse scan
for key, value in db.reverse_iterator():
    print(key, value)

# Reverse prefix scan — visits only matching keys, largest first
for key, value in db.reverse_prefix_iterator(b"user:"):
    print(key, value)

# Manual control
it = db.reverse_iterator()
it.last()
while not it.eof:
    print(it.key, it.value)
    it.prev()
it.close()

# As a context manager
with db.reverse_prefix_iterator(b"log:") as it:
    for key, value in it:
        ...

Column families support reverse iterators identically via cf.reverse_iterator() and cf.reverse_prefix_iterator().

WAL Checkpoint

from snkv import CHECKPOINT_PASSIVE, CHECKPOINT_FULL, CHECKPOINT_RESTART, CHECKPOINT_TRUNCATE

# Returns (nLog, nCkpt) — WAL frames total / frames written to DB
nlog, nckpt = db.checkpoint(CHECKPOINT_PASSIVE)    # copy frames without blocking
nlog, nckpt = db.checkpoint(CHECKPOINT_FULL)       # wait for writers, flush all
nlog, nckpt = db.checkpoint(CHECKPOINT_RESTART)    # like FULL, reset write position
nlog, nckpt = db.checkpoint(CHECKPOINT_TRUNCATE)   # like RESTART, truncate WAL file

Must be called outside an active write transaction. Use wal_size_limit to auto-checkpoint instead.

Iterator Seek

Jump to any position in O(log N) without scanning from the start.

with db.iterator() as it:
    it.seek(b"user:bob")        # forward: position at first key >= target
    while not it.eof:
        print(it.key, it.value)
        it.next()

with db.iterator(reverse=True) as it:
    it.last()
    it.seek(b"user:bob")        # reverse: position at last key <= target
    while not it.eof:
        print(it.key, it.value)
        it.prev()

# Works on prefix iterators too — boundary still enforced
with db.iterator(prefix=b"user:") as it:
    it.seek(b"user:carol")      # skip straight to "user:carol"
    while not it.eof:
        print(it.key)
        it.next()

# seek() returns self for chaining
key = db.iterator().seek(b"target").key

Conditional Insert

Atomically insert a key only when it is absent — safe for distributed locks and deduplication.

# Returns True if inserted, False if the key already existed.
inserted = db.put_if_absent(b"lock", b"owner:alice")

# With TTL — the key auto-releases after the given number of seconds.
inserted = db.put_if_absent(b"session:42", b"token-xyz", ttl=30)

# Column families support the same method.
with db.create_column_family("dedup") as cf:
    if cf.put_if_absent(b"msg:001", b"hello"):
        process(b"msg:001")     # only the first caller reaches here

Bulk Clear

Truncate all entries from a store or column family in O(pages) — no iterating, no individual deletes.

db.clear()      # remove every key from the default CF

with db.create_column_family("cache") as cf:
    cf.clear()  # only this CF is affected; other CFs are untouched

TTL index entries are cleared atomically alongside data entries. Close all iterators before calling clear().

Key Count

Count entries without scanning individual keys.

n = db.count()                           # total entries in the default CF

with db.open_column_family("users") as cf:
    n = cf.count()                       # only this CF; TTL index not counted

# count() includes expired-but-not-yet-purged keys.
# Call purge_expired() first for an accurate live count.
db.purge_expired()
n = db.count()

Maintenance

db.sync()                 # flush OS write buffers (fsync)
db.vacuum(100)            # reclaim up to 100 unused pages incrementally
db.integrity_check()      # raises CorruptError if database is corrupt

# Extended stats — 12 counters
stats = db.stats()
# Keys: puts, gets, deletes, iterations, errors,
#       bytes_read, bytes_written, wal_commits, checkpoints,
#       ttl_expired, ttl_purged, db_pages

# Reset all cumulative counters (db_pages is always live)
db.stats_reset()

TTL — Native Key Expiry

Per-key TTL with automatic lazy expiry on read.

# Put with TTL (seconds, float precision)
db.put(b"session", b"tok123", ttl=60)   # expires in 60 s
db[b"token", 30] = b"bearer-xyz"        # dict-style shorthand

# Get — expired keys are silently evicted and raise NotFoundError
val = db.get(b"session")                # returns bytes or None if expired

# Check remaining lifetime
from snkv import NotFoundError
try:
    remaining = db.ttl(b"session")      # seconds remaining (float)
except NotFoundError:
    remaining = None                    # key expired or never set

# Purge all expired keys from disk (returns count removed)
n = db.purge_expired()

# Column families support TTL identically
with db.create_column_family("cache") as cf:
    cf.put(b"item", b"data", ttl=10)
    cf[b"item2", 5] = b"data2"
    n = cf.purge_expired()

Encryption

Transparent per-value encryption. All existing APIs work without modification.

from snkv import KVStore, AuthError

# Create / open encrypted store
with KVStore.open_encrypted("mydb.db", b"hunter2") as db:
    db[b"secret"] = b"classified"
    print(db.is_encrypted())      # True
    print(db[b"secret"])          # b"classified" — transparent decrypt

# Wrong password raises AuthError
try:
    KVStore.open_encrypted("mydb.db", b"wrong")
except AuthError:
    print("bad password")

# Change password in-place (re-encrypts all values atomically)
with KVStore.open_encrypted("mydb.db", b"hunter2") as db:
    db.reencrypt(b"new-strong-pass")

# Remove encryption permanently
with KVStore.open_encrypted("mydb.db", b"new-strong-pass") as db:
    db.remove_encryption()
with KVStore("mydb.db") as db:    # plain open works now
    print(db[b"secret"])
Method Description
KVStore.open_encrypted(path, password, **kwargs) Class method — open or create encrypted store
db.is_encrypted() Returns True if store is encrypted
db.reencrypt(new_password) Change password; re-encrypts all values atomically
db.remove_encryption() Decrypt in-place; store becomes plain

Cryptographic details: XChaCha20-Poly1305 per value · Argon2id KDF (64 MB, 3 iterations) · 40-byte overhead per value (nonce + MAC) · key wiped from memory on close.


Vector Search

Integrated HNSW approximate nearest-neighbour index backed by usearch. All vectors and KV data live in the same .db file — no separate index file, no external service.

Installation

pip install snkv[vector]

Quick Start

from snkv.vector import VectorStore
import numpy as np

with VectorStore("store.db", dim=128, space="cosine") as vs:
    vs.vector_put(b"doc:1", b"hello world", np.random.rand(128).astype("f4"))
    results = vs.search(np.random.rand(128).astype("f4"), top_k=5)
    for r in results:
        print(r.key, r.distance, r.value)

Parameters

Parameter Default Description
path Path to .db file. None for in-memory.
dim Vector dimension. Fixed for the lifetime of the store.
space "l2" Distance metric: "l2" (squared L2), "cosine", or "ip" (inner product).
connectivity 16 HNSW M parameter.
expansion_add 128 HNSW expansion during index build.
expansion_search None HNSW expansion at query time. None restores the stored value (default 64).
dtype "f32" In-memory index precision: "f32", "f16" (half RAM), or "i8" (quarter RAM). On-disk storage is always float32.
password None Open/create an encrypted store. Sidecar is disabled for encrypted stores.

Quantization

dtype controls the in-memory HNSW graph precision only — on-disk storage in _snkv_vec_ is always float32.

dtype RAM per vector (dim=768) Notes
"f32" 3072 bytes Full precision (default)
"f16" 1536 bytes Half RAM, negligible recall loss
"i8" 768 bytes Quarter RAM, small recall cost

For 1 M vectors at dim=768: f32 ≈ 3 GB → f16 ≈ 1.5 GB → i8 ≈ 768 MB.

# Half RAM for the in-memory index; on-disk vectors still float32
with VectorStore("store.db", dim=768, space="cosine", dtype="f16") as vs:
    vs.vector_put(b"doc:1", b"hello", np.random.rand(768).astype("f4"))

Index Persistence (Sidecar)

For unencrypted file-backed stores, the HNSW index is saved to {path}.usearch on close() and reloaded on the next open — skipping the O(n×d) CF rebuild. A companion {path}.usearch.nid stamp file detects any write that occurred after the last clean close (including crash scenarios). Stale or corrupt sidecars are silently discarded and the index is rebuilt from the column families.

Encrypted stores and in-memory stores always rebuild from column families.

Key Methods

# Write
vs.vector_put(b"key", b"value", vec, ttl=None, metadata=None)
vs.vector_put_batch([(b"key", b"value", vec), ...], ttl=None)

# Search
results = vs.search(query_vec, top_k=10)                           # ANN
results = vs.search(query_vec, top_k=10, filter={"topic": "ml"})  # metadata filter
results = vs.search(query_vec, top_k=10, rerank=True)             # exact rerank
results = vs.search(query_vec, top_k=10, max_distance=0.5)        # distance cutoff
pairs   = vs.search_keys(query_vec, top_k=10)                     # keys + distances only

# Read
vec  = vs.vector_get(b"key")          # np.ndarray(dim,) float32
val  = vs.get(b"key")                 # value bytes from KV store
meta = vs.get_metadata(b"key")        # dict or None

# Delete / maintenance
vs.delete(b"key")
n = vs.vector_purge_expired()         # remove expired vectors from index + CFs

# Stats
stats = vs.vector_stats()
# Keys: dim, space, dtype, connectivity, expansion_add, expansion_search,
#       count, capacity, fill_ratio, vec_cf_count, has_metadata, sidecar_enabled

# Drop index (KV data preserved)
vs.drop_vector_index()

Encrypted Vector Store

from snkv import AuthError

with VectorStore("store.db", dim=128, password=b"secret") as vs:
    vs.vector_put(b"doc:1", b"classified", np.random.rand(128).astype("f4"))

try:
    VectorStore("store.db", dim=128, password=b"wrong")
except AuthError:
    print("bad password")

Error Hierarchy

snkv.Error (base)
├── snkv.NotFoundError       (also KeyError — raised by db["missing"])
├── snkv.BusyError           (SQLITE_BUSY — another writer holds the lock)
├── snkv.LockedError         (SQLITE_LOCKED)
├── snkv.ReadOnlyError       (write attempted on read-only store)
├── snkv.CorruptError        (database file is corrupt)
└── snkv.AuthError           (wrong password or not an encrypted store)

snkv.vector.VectorIndexError  (index dropped or empty; not a subclass of snkv.Error)
import snkv

try:
    val = db["missing_key"]
except snkv.NotFoundError:
    val = b"default"

try:
    db["key"] = b"value"
except snkv.BusyError:
    # retry after a delay
    ...

Running Tests

Linux / macOS

cd python
python3 -m pytest tests/ -v

Windows — Native Python (x64 Native Tools Command Prompt for VS 2022)

cd python
set PYTHONPATH=.
python -m pytest tests\ -v

Windows — MSYS2 MinGW64 shell

cd python
PYTHONPATH=. python3 -m pytest tests/ -v

All 471 tests should pass.


Running Examples

Linux / macOS

cd python
PYTHONPATH=. python3 examples/basic.py           # CRUD, binary data, in-memory store
PYTHONPATH=. python3 examples/transactions.py    # begin/commit/rollback
PYTHONPATH=. python3 examples/column_families.py # logical namespaces
PYTHONPATH=. python3 examples/iterators.py       # ordered scan, prefix scan
PYTHONPATH=. python3 examples/config.py          # journal mode, sync, cache, WAL limit
PYTHONPATH=. python3 examples/checkpoint.py      # manual + auto WAL checkpoint
PYTHONPATH=. python3 examples/session_store.py   # real-world session store pattern
PYTHONPATH=. python3 examples/ttl.py             # TTL expiry, rate limiter demo
PYTHONPATH=. python3 examples/encryption.py  # encrypted store, wrong-password, reencrypt
PYTHONPATH=. python3 examples/iterator_reverse.py # reverse iterators, descending scans
PYTHONPATH=. python3 examples/new_apis.py        # seek, put_if_absent, clear, count, stats
PYTHONPATH=. python3 examples/multiprocess.py    # 5 concurrent processes, busy_timeout
PYTHONPATH=. python3 examples/vector.py          # vector search, quantization, sidecar, TTL, encryption

Windows — Native Python (x64 Native Tools Command Prompt for VS 2022)

cd python
set PYTHONPATH=.
python examples\basic.py
python examples\transactions.py
python examples\column_families.py
python examples\iterators.py
python examples\config.py
python examples\checkpoint.py
python examples\session_store.py
python examples\ttl.py
python examples\encryption.py
python examples\iterator_reverse.py
python examples\new_apis.py
python examples\multiprocess.py
python examples\all_apis.py
python examples\vector.py

Windows — MSYS2 MinGW64 shell

cd python
PYTHONPATH=. python3 examples/basic.py
PYTHONPATH=. python3 examples/transactions.py
# ... same pattern for all examples

Thread Safety

Each thread must use its own KVStore instance. WAL mode serialises concurrent writers at the SQLite level — a BusyError is raised (or retried up to busy_timeout ms) when two writers collide. Multiple readers always make progress concurrently in WAL mode.

import threading
from snkv import KVStore, JOURNAL_WAL

def worker(db_path, worker_id):
    # Each thread opens its own connection
    with KVStore(db_path, journal_mode=JOURNAL_WAL, busy_timeout=5000) as db:
        db[f"key_{worker_id}".encode()] = b"value"

threads = [threading.Thread(target=worker, args=("mydb.db", i)) for i in range(4)]
for t in threads: t.start()
for t in threads: t.join()

Third-Party Licenses

The snkv Python package embeds the following third-party libraries compiled into its native extension:

Library Version License Notes
SQLite 3.x (amalgamation subset) Public Domain B-tree, pager, WAL, OS layer
Monocypher 4.x CC0-1.0 (Public Domain) XChaCha20-Poly1305 + Argon2id
usearch ≥ 2.9 Apache 2.0 HNSW vector index (optional — pip install snkv[vector])

SQLite and Monocypher are statically linked into the extension module — no separate installation required.

SQLite and Monocypher are public domain — no attribution is legally required, but credit is given here in the spirit of good practice. usearch is an optional runtime dependency and is not bundled.


License

Apache License 2.0 © 2025 Hash Anu

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

snkv-0.7.0.tar.gz (84.5 kB view details)

Uploaded Source

Built Distributions

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

snkv-0.7.0-cp313-cp313-win_amd64.whl (203.4 kB view details)

Uploaded CPython 3.13Windows x86-64

snkv-0.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (850.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

snkv-0.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (829.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

snkv-0.7.0-cp313-cp313-macosx_11_0_arm64.whl (262.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

snkv-0.7.0-cp313-cp313-macosx_10_13_x86_64.whl (272.3 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

snkv-0.7.0-cp312-cp312-win_amd64.whl (203.4 kB view details)

Uploaded CPython 3.12Windows x86-64

snkv-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (850.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

snkv-0.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (828.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

snkv-0.7.0-cp312-cp312-macosx_11_0_arm64.whl (262.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

snkv-0.7.0-cp312-cp312-macosx_10_13_x86_64.whl (272.3 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

snkv-0.7.0-cp311-cp311-win_amd64.whl (203.4 kB view details)

Uploaded CPython 3.11Windows x86-64

snkv-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (850.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

snkv-0.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (828.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

snkv-0.7.0-cp311-cp311-macosx_11_0_arm64.whl (262.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

snkv-0.7.0-cp311-cp311-macosx_10_9_x86_64.whl (271.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

snkv-0.7.0-cp310-cp310-win_amd64.whl (203.4 kB view details)

Uploaded CPython 3.10Windows x86-64

snkv-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (849.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

snkv-0.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (827.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

snkv-0.7.0-cp310-cp310-macosx_11_0_arm64.whl (262.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

snkv-0.7.0-cp310-cp310-macosx_10_9_x86_64.whl (271.2 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

snkv-0.7.0-cp39-cp39-win_amd64.whl (203.4 kB view details)

Uploaded CPython 3.9Windows x86-64

snkv-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (848.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

snkv-0.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (827.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

snkv-0.7.0-cp39-cp39-macosx_11_0_arm64.whl (262.1 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

snkv-0.7.0-cp39-cp39-macosx_10_9_x86_64.whl (271.2 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

snkv-0.7.0-cp38-cp38-win_amd64.whl (203.4 kB view details)

Uploaded CPython 3.8Windows x86-64

snkv-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (849.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

snkv-0.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (828.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

snkv-0.7.0-cp38-cp38-macosx_11_0_arm64.whl (262.2 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

snkv-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl (271.2 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

Details for the file snkv-0.7.0.tar.gz.

File metadata

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

File hashes

Hashes for snkv-0.7.0.tar.gz
Algorithm Hash digest
SHA256 aaeb78c210af8eea7bdb786191a93720745f1cf4c06c77c0f445e81f53a08843
MD5 7ca490ab4dadbe2da1db91b172c87261
BLAKE2b-256 9b3d9086f37e8787d99d596f4adc1ef040f87637b10ac868de00956f67dfe8b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0.tar.gz:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: snkv-0.7.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 203.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for snkv-0.7.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 488a1533f1c67feb84e128e5b709ba261272ebcf367729c3e99b61b54e5294f3
MD5 94587b877b5600fd935080d0dcc8872c
BLAKE2b-256 5b5488cb5d00686abad8bbb543785dfc4bdcbf866bcdda79b61f15d4f3f39e74

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cb9e7f68183a0f074b2ece4d84d4e1a4af384700a461870006cf3e9f119df2a2
MD5 961cdade1e8ee6a035352d3348c221de
BLAKE2b-256 005c1f9df1141153fcc52ee89b9e4cf8b996d7559227fe317f283c0a9dff8d0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7d186b185ddb8a923955e84ac0a2341dc776e4ef4d6d59281d5eca01f33cdc9d
MD5 1483f5a542250bf76bdfbe06fa04a9c7
BLAKE2b-256 aa6bc1bc237c29858ef38413fa379cccbd80e0da4976b3caf346ae22d4ff7774

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e35b9e72fa8ff1db94385426f04c27f04ff8fea69e1da821cca97bbab5001a1a
MD5 16f7aa0eeb9f64acfeec9ee4927e0ae9
BLAKE2b-256 9a8b970a0da34fee24ba5fdbc0fd1c922f2631aabedd225a90074e9049723285

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b0df04ecc5bc9946503432d46e2a2b0e17654454455d8f7bc288fce0929e23a2
MD5 f93fe18af86c6236d3bab145f3ff9975
BLAKE2b-256 6d31063282381669b3484c1ae8c6d8f258cf05e59765428fbb88a44f84075557

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: snkv-0.7.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 203.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for snkv-0.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c8e28259f2032355c22921310e86ddc3e87a60ca05f5b2ff4e7bfd6e83d1689f
MD5 5e10b67eb147ccac1341a4d4b1d99d4e
BLAKE2b-256 d2f7cdadef95f925d4e984e9640d48279c83147be4ad6061fa62b2065407891a

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7fa4a3ca9882262eb691fb0958c5a71624838c4f016c9017c6f11f4dd1e8469b
MD5 1ade6c8f2f4da8a778db2bc7ca6fc44f
BLAKE2b-256 0f2e310e89eefd01bef1d6c0dcf385ac0c8196670afcb0a9a5706e35fb356cee

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1923e69fce5ec2970d548afe48cbb6e5f1e1cfd9f328247b063cb26fd5300a61
MD5 756234b9117105b5d241aff300129b4d
BLAKE2b-256 cce07dda25294cf848db6ce69b50485b22b48288c7ebd7f4312c496c263c44e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3ee4b3b7ed557fbd8ed2430929f58d2dc1ea3a4ca028aca6d24816bca76c499e
MD5 5a45791690dded036a4aa14fdc7c75be
BLAKE2b-256 6453191147b76d53b4fa49c7ee66dcffa12a770f9594ebc865224eac1f03e82f

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 9ff6755f995395b9f44804ed9a3aeaf4597ec05e4c0a46547c0aa16b23b8e4a7
MD5 df56810742e2bba8f4a37b9c2c34afb9
BLAKE2b-256 44268bc36e31fa35c2cd2f0d922c7d12a0674d4c14d9af2db4ce4b0bcee6b2b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: snkv-0.7.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 203.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for snkv-0.7.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e47478209056b774cf861f3e79fecce366a742d1ca4f909a61e608e403ce6873
MD5 709488f8833cfc93709afcd7baf9d230
BLAKE2b-256 577bf4a1770ed32ae59530608c92c030a8f6ad79112c0ce0640e7eb4d70823a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 120adcce1bd77fd5067ed1cf7f695419fc28c496835d0337c6039d18f5a82103
MD5 91c5fb6f63a2aeef693e7626cb1c14f3
BLAKE2b-256 68ca3ba8161c6593ba716c21e201bb8c86fad8c0d4d328d0acb8753a5196e335

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d143abd79d98df8ab039afd7d4aca44b764910dd3339d845b0b28032edd52ac2
MD5 33874e3adcf26c01f1a7c9732ec182ea
BLAKE2b-256 251d300efd9de629478c9457e8a628a6c9f14bdf50f386944a37f9cef1c66857

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f52cba761ec16307c14fada03127158eb02a7164de67ab2a4f511a42852d37e3
MD5 4a7644436058d9ba0954d33bd9f00094
BLAKE2b-256 2b694fcaf775934d710d3b536c126f76a9634210e8477ee21e940b558d66bb56

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c931188698cffa25b82ab4bbaa3f9f2956b84f8461241ae92358359fe42f298a
MD5 5b06e3f7b0b8fb5dc853fb0d13d148dc
BLAKE2b-256 055449ae0b9fc5a17f3eface528750af3341832511b7891888be4e14296fa71a

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: snkv-0.7.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 203.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for snkv-0.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0770612f5fcbccc4b3b1c277395b56d226aa2ecf4359cf4ebb98ae806a688069
MD5 00f1960f9f2c5c6bfa10b929499d64f4
BLAKE2b-256 4b556613c14852fb6a81876f4b1221b1144c3f998574b12390f82e9bd9e9f5ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 077064cf64152faac8b16cce7a5852b5959e698c07374a636ac7e13080da61ab
MD5 c37ee780616e81916762ce60ee44028e
BLAKE2b-256 faebd9324afa2929baee43832282dcb36b7ac7c79a3cf993783fd9c0fe77c107

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 baca47801f80533166ddcd5d6542c203090bb8f574f1b06326898637cf02c5a1
MD5 02d809d117bc5c508616fb353cd2492b
BLAKE2b-256 b2928499c3ffd00fa654fb5c994ef0c66ac9e8f32354ea6509bc2ad9aca41cf3

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 34cf3959bbae7c77ff7492a8ba9365b028dd29042b02a735585d78fa5ef7ee1f
MD5 a35195a0445d2162c9263a762efbf893
BLAKE2b-256 286248054cea2261a5c7c436d7afe90ae48c464061271bd5f42a1d7f7172f2eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cd82f188e9b7cf8646daef29873263bd532c83fbe62f4fd365541558bc8c496f
MD5 399fe86a210b69ebcd0b93b7822a8804
BLAKE2b-256 fd21c21c721ca722b154c51d561bb70bc4bca9f2182090f1e2f60bd51be0dbd0

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: snkv-0.7.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 203.4 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for snkv-0.7.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 931b5b12eddadb2bb7dfd90811f181b70a9f565cb9e5bb8ee4b29433b3cf2338
MD5 d723fd71c4fd914d9a4740e8bc9d234c
BLAKE2b-256 9fd1aa3c7381cc93db1d3e097359e812d70a19a53b1310c2a6b4f49ceac2ca1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp39-cp39-win_amd64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 462ff6d74515cc9274c19f7c7b5bab0ca8f654b0320b406953d10cce0b327187
MD5 bd586fbe80727ffebdf68ad9589f991c
BLAKE2b-256 a5384b7fb0130098d5f6a4608a038722c54f39e4251cd7ef02068776cc23bb4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5221163696b3368b726aa08b003d5e8323bc030f8745106970522c328e583744
MD5 e8c65801a1a6724afb7b9333a9612adc
BLAKE2b-256 50f898a2aecd934ff7db4184163126ab603c774ea021eb030ada087bb75cef28

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: snkv-0.7.0-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 262.1 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for snkv-0.7.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 506c6fedbd5c0c20c26204d07e5c0a4362d051b1a1a9fcd4823c52887117e06e
MD5 77799ffbacd7037322bbaf2dcab634ab
BLAKE2b-256 5920d6a3689e36a2cee72115b4487e127c79c422d0660f00d55ccff5eec32192

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: snkv-0.7.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 271.2 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for snkv-0.7.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 749967ac9486295e85b46c9b6ea2bbb53c409603969d6c562ced065c0bab4b21
MD5 b91a978b6a9779d8f04cc94c44fb88ad
BLAKE2b-256 b85e70179c6c44bc426e3ecef9701720b384f78f97c14169dfb0e0f76d502ea0

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp39-cp39-macosx_10_9_x86_64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: snkv-0.7.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 203.4 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for snkv-0.7.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 c5742aba2229645cacd377ba7f0c3fb21ac8aa13f06e19d3a52ec0e416ea139c
MD5 63c560834ac0af20b6b7f69940b498f0
BLAKE2b-256 932f8470b30d1637149cfdaa22f8404e9c67be6a7c4f9d4ad37245cd4c4c42a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp38-cp38-win_amd64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e9557343aec0384b3359dfc1410119c938f646ad3b374f974baef75de7db91f7
MD5 61a0d918ab1a40acb407e244f33f4574
BLAKE2b-256 02bd9999cb1aefab3f71c7927153383ec217b527db659840db168f04e462668a

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for snkv-0.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d386885db012c882b4be17d043ff84dc0bac48e5e6b13111e8420ec111963863
MD5 f632eb86caf017314787ed460b7b02b7
BLAKE2b-256 c9af8c9dcd3130cc2f0fcb5400ea83afc7909da95f66b46bbb5bb562502b18c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

  • Download URL: snkv-0.7.0-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 262.2 kB
  • Tags: CPython 3.8, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for snkv-0.7.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb289399803e7dfdb77bb7b88cbecf371fa45c1c5d73865aa170a9ea124af355
MD5 50d6ec6abdc5af3568198ce0059816fe
BLAKE2b-256 20526d3bba67bdbb9e4bbda098bec3c8df0aa0f76cfb246b9d79a1e172e71818

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: publish.yml on hash-anu/snkv

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

File details

Details for the file snkv-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: snkv-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 271.2 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for snkv-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c066c7b1bdd4c6e018081e959de3bf0939b494e08a3f70741e1cc7167b7ee52e
MD5 04bf2e91c6db8e06459c7dc31f181212
BLAKE2b-256 7161ad15832cb75df7ae46a21bb81ca97f9268d1472a90bf71cba2bd9deab1fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl:

Publisher: publish.yml on hash-anu/snkv

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