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

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()
  • 352 tests — full pytest suite covering ACID, WAL, crash recovery, concurrency, column families, TTL, and more

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.


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      (KVSTORE_AUTH_FAILED — wrong password or not an encrypted store)
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 352 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

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

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

No separate installation of these libraries is required — they are statically linked into the extension module.

Both SQLite and Monocypher are public domain — no attribution is legally required, but credit is given here in the spirit of good practice.


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.6.0.tar.gz (64.0 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.6.0-cp313-cp313-win_amd64.whl (191.4 kB view details)

Uploaded CPython 3.13Windows x86-64

snkv-0.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (838.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

snkv-0.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (817.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

snkv-0.6.0-cp313-cp313-macosx_11_0_arm64.whl (250.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

snkv-0.6.0-cp313-cp313-macosx_10_13_x86_64.whl (260.3 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

snkv-0.6.0-cp312-cp312-win_amd64.whl (191.4 kB view details)

Uploaded CPython 3.12Windows x86-64

snkv-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (838.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

snkv-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (816.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

snkv-0.6.0-cp312-cp312-macosx_11_0_arm64.whl (250.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

snkv-0.6.0-cp312-cp312-macosx_10_13_x86_64.whl (260.4 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

snkv-0.6.0-cp311-cp311-win_amd64.whl (191.3 kB view details)

Uploaded CPython 3.11Windows x86-64

snkv-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (838.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

snkv-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (816.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

snkv-0.6.0-cp311-cp311-macosx_11_0_arm64.whl (250.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

snkv-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl (259.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

snkv-0.6.0-cp310-cp310-win_amd64.whl (191.3 kB view details)

Uploaded CPython 3.10Windows x86-64

snkv-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (837.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

snkv-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (815.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

snkv-0.6.0-cp310-cp310-macosx_11_0_arm64.whl (250.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

snkv-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl (259.2 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

snkv-0.6.0-cp39-cp39-win_amd64.whl (191.4 kB view details)

Uploaded CPython 3.9Windows x86-64

snkv-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (836.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

snkv-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (815.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

snkv-0.6.0-cp39-cp39-macosx_11_0_arm64.whl (250.2 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

snkv-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl (259.2 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

snkv-0.6.0-cp38-cp38-win_amd64.whl (191.4 kB view details)

Uploaded CPython 3.8Windows x86-64

snkv-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (837.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

snkv-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (816.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

snkv-0.6.0-cp38-cp38-macosx_11_0_arm64.whl (250.2 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

snkv-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl (259.2 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for snkv-0.6.0.tar.gz
Algorithm Hash digest
SHA256 d342402d06e7e421a205d45b823da95c4a08768da9c1943f8d7355e06f9f4e93
MD5 18e1f57cd6a7b4c212254879aa2371c0
BLAKE2b-256 4fe11cfa7e2143bde50c8453e56e7333a016e3c869d2dee965e8e599965471e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: snkv-0.6.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 191.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.6.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1fb50d9f0a22959c25152e36eeb6fe7f33e00c6228f93eb96b2c1cac7805b2da
MD5 3c2736bfe6a88cac4888a56a31f74b70
BLAKE2b-256 e28de3c0e3789d22cab8c0da400e8b8610c61f60f61f47bab804e8120daa3a71

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f76f7adab54dd0fd0cc51d5e748278ec7acea13c3a71d93db7807cb39b44d59c
MD5 efdd2b0bbf3b0f580f8324064a47424f
BLAKE2b-256 008cd002cbc5ba210000a1da2a1bee147fed130de7b697eeeb043f4b3eff96ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b5551ae2db0b2f3cae94946b4616a9be416e9957e3d0cfa21804234604ea985c
MD5 19b19ebf267b3dada9d1549db4a8621e
BLAKE2b-256 6507b1630f7a6dae68fcd2adaa1e8b77f81ba6f2d2ca0f019310e3d4b96ace21

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 79d10380277455d46474eae70b839bdab4ba7ddfe2cf0aa76c06ff3b0c35e59d
MD5 a5e8a470852ae8d9b106e65883663792
BLAKE2b-256 bd4c6d89f2499dd8cbea1df88fd5b52c4f17f13c74b2b08e5182159fe3577394

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 1f74455c26ac35b696ccf6c9f1193fb2fff667f83a59aea85c746d674e0ded3f
MD5 843b9e3c85d33e3cd7968696f99f95a2
BLAKE2b-256 29c4e059771e118fb4580834d8f2d79047326440d893700a04206775fe51d3b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: snkv-0.6.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 191.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.6.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 28d2634d0ba3b9a56a2006a5f44c5c4bd6336d53847cf6c000c97c5222db1994
MD5 dbc4964b9f2c854a6860b7f6f5f21c92
BLAKE2b-256 788d41d179dc09f161b71eb8e105d37fec7a2d9de1495b863c2d17b03695cad2

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 63ea3a207e5d877cd81334edfc93830e66ec69cdd497cca0e029788d8f18d9c4
MD5 02553dc0f2863fbebbc2523de4bf957b
BLAKE2b-256 14a51b0c963a059b01bbde37620c74e58c4a8ea15bf1a8e5b3fe0d54859007cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 26c07b6f0d223f6a7d3bc1ae69c6b4872a31de75146d36da9263e59373171112
MD5 54729b278c6d46ed29234861a0e5cd20
BLAKE2b-256 b2faf665d8509452c9f4ecd91a125665a8d857bcdbabe7d2d4380dde00a8700e

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3fe4c60abdba8f2c3cf7c19e57292d55f481ab0b3b43130b276f314ea2ff8c1a
MD5 2096d259321c7d1c76313d36e9a20ad8
BLAKE2b-256 4cca25b3451f50361cffa22072809cf56ec6cf732f7fc474a16fa7d1300adadc

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 49c7d4f1d95302d6f7e9b719b3ee51b1db82b1a39f160251d29c52557088b30e
MD5 2cb015ed23153f2fa11d909275a37fa5
BLAKE2b-256 59d6baef37d3547b0298ef7d1b0d24e8ad2746bd7ea96cb7e2a8b314ca84a374

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: snkv-0.6.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 191.3 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.6.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5200616304ec4ccccd9780fb7a71098ba8b7c903173377a23d9f7acf78ef8bcf
MD5 38a86f0e42c1f3c04ab55f6100327dd0
BLAKE2b-256 8d783631c8554750cf3b3fb055118cbdc064a6ca6439f321755a78ab44061b54

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3b456079c03d52d7153336bb52743f8651930e8222394974f407757ba5bccd0
MD5 34f08b836d378a5cd3a1812a5fc24054
BLAKE2b-256 9bc467396dfac23c6d93397017911ecab8ecb01bad04a2f0fef1253de3961f8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a8eafd4c2f7b0b9037364bdbaab8de56a0364aacc16f06c5197802138a2e5e9d
MD5 3020ab7cacb5cf70ee8b2d04a05eae67
BLAKE2b-256 b2a74a051e3b26b064fda7f5c7d87fac887bbc75c21d4e911b90cc09146baf9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c46777feb6c026878ed929a332edb4754390391c3be44b90a2d01435c3f93f59
MD5 0f4e409373d0774248f441fd6409c89b
BLAKE2b-256 fca60575de79af5d5391638b71febe97f78552b3526e272b893e0798b971db5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 dac75918c410e6d3dd0513ed42cd95d143d03231979b8633d45bef597db10dad
MD5 0d34b1edac86cb02cc87a6b860b5918d
BLAKE2b-256 d37183ab7b42d8b87e08af23d775f465d448e31d23076aec2989f8dac8625687

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: snkv-0.6.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 191.3 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.6.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4e67475d10b1c4b70271a66811d1a3ea15dfb789c42485d6895cb68a8f78b159
MD5 00f23138711d100e834f22e8276a10af
BLAKE2b-256 131b322616d942916aed7b463c41ff2d0b7a9c520342b133e548a3e7423908f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 abac6bf8a2525c2656c24d81c40345f9fdb9376a63b71dc7e1b5b49f61d3a9e9
MD5 831b80b92be9b91e46254d692177a0c6
BLAKE2b-256 00ee1dd7c9a1c2da8226f6f9c04e8db8d939e9b704b949791872e6953bca6389

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dfcc761e011a1dcb979eb4f21e59a459a82b30e5f72887606e5a72ebfeb408ab
MD5 dd74d53edd0f53f0db80d7eb3724d796
BLAKE2b-256 0df94a170a3db50fa24368ef51fd95ea8f0e43239f6dd80abb9af558eb6f1d9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e09146e83a52448b0348d6dad6a285449dd6efe39edf6009162d9404feae6656
MD5 1461052b6f24c448f514a9e20b96bdc8
BLAKE2b-256 9221991dec725f68e6eab513f85731a07c714bd0b176d9dd52ab48dc81837ece

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 db0c0759da3c44217f23dc5cc6252e45dba71e223aa26fdd250f2ec8928e207b
MD5 77b6555ded507b3e53327e657c9c0396
BLAKE2b-256 d25905c91ff2d41d6bad042a3b692ed3cfdbdcb898ef2b98eb2b474f578e12a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: snkv-0.6.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 191.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.6.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 8c6cd0dcf1d40ec50b8ea53e5808d2d4bf2b39b2a67f6664dd6caa0bff1137dd
MD5 a951d80d10eecb5fe7dd879c75458418
BLAKE2b-256 004564c5c3825356a32973eb81e8cf9beb958b2fb9fdd5fed10684f590b7a3bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0ff6e11debc8117003dfaeea88a1fb2290df85a9133778f5f8d32c1430465370
MD5 d9c68652f9ecbb2ab9d75bacde85026f
BLAKE2b-256 4eaefd98b55019c33374581553a9442c84d4f4aac5b2d98fabd6a9d9d4b6bfb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 03e0bef688a5b947b1522e74ebeca1895fa0887cef188a4e21dba8f75eea26b2
MD5 cd45907651b5078d10cf90ed5b1bb3b0
BLAKE2b-256 3a37be743918371167bc59bb346343f8d0064fbcd61a08ad6e329a1bf90624c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: snkv-0.6.0-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 250.2 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.6.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c6f97db97997abe576204053439248157c6bb279b70ea3a78170bdaf16607bf8
MD5 ab63de724afc8410567d3dbf8558c6bd
BLAKE2b-256 8bd966727eddff2e7a176f8a1147b9756e690e6ded0c04a0760fd13db4ad61a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: snkv-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 259.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.6.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4df51eb02c772aa4b72c6dabb0101d0a29f43b67d4279b3fe354c7a238a639c5
MD5 9c556b0a5f41d9f0f64c8a76f9ac9d7c
BLAKE2b-256 fa9aabe1ded8c56033dfdbe79d0a8a380934f49684d52d935d0a8c18f55b5c02

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: snkv-0.6.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 191.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.6.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 1118c3551de69ed140dcf7c2acc47f633fdfea0d18e0a23f390afac496343e81
MD5 5eaddd4e6fcfd259bc441ae60809bb2a
BLAKE2b-256 b1896a9c54963de469884fa5988b0ce23dbf0be33a9101c1bfb993fd8a9d1ad4

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aa8c6a7fea34674a740b791a716cbfbc9bad6051e508ea03e6eaa0a2531aa697
MD5 6c3c25fc785ebc166e572b7757d139b4
BLAKE2b-256 500978ad9f62abf17fb253483e249bb20186592e8b3d298ee391396d333b4dab

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for snkv-0.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5541920bc790d3524a492f0adcd93575f11e96aea7a92dde9b86b6c7ea2d095f
MD5 c5592e7a240a8e7a6fdbf04c67110f3e
BLAKE2b-256 a31e3b7ca8d5ae7fab6972b279dc84b6847b9b86ee8d89c47531c867ba72007f

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

  • Download URL: snkv-0.6.0-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 250.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.6.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ced5e0b8ea4759ed4713a42c2fbde490d4bd4fe2b765ce75382d4a9c9377531c
MD5 90240803bf9b5ec83d58a7ecfbd0c3b2
BLAKE2b-256 3ecec69315617bed5bd59c040bbba35519ff9d2caa95f9d9d7c2a1c4e654964e

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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.6.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: snkv-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 259.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.6.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 393abea3f7d981dd1167d4151212577efd22064dccbc2be64acdc434afe8e7dc
MD5 b1ae318119b40edb1b91971a6d67ebf9
BLAKE2b-256 648e126a37f60d606a6cb6fbf89fea24105c64762a3a79340cee619756fb9c57

See more details on using hashes here.

Provenance

The following attestation bundles were made for snkv-0.6.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