Skip to main content

Crash-safe embedded key-value store — native TTL, reverse iterators, 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()
  • 279 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.

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
stats = db.stats()        # dict: {"puts": N, "gets": N, "deletes": N, "iterations": N}

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()

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)
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 279 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/iterator_reverse.py # reverse iterators, descending scans
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\iterator_reverse.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()

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.4.0.tar.gz (50.4 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.4.0-cp313-cp313-win_amd64.whl (153.5 kB view details)

Uploaded CPython 3.13Windows x86-64

snkv-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (660.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

snkv-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (653.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

snkv-0.4.0-cp313-cp313-macosx_11_0_arm64.whl (198.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

snkv-0.4.0-cp313-cp313-macosx_10_13_x86_64.whl (206.6 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

snkv-0.4.0-cp312-cp312-win_amd64.whl (153.5 kB view details)

Uploaded CPython 3.12Windows x86-64

snkv-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (660.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

snkv-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (653.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

snkv-0.4.0-cp312-cp312-macosx_11_0_arm64.whl (198.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

snkv-0.4.0-cp312-cp312-macosx_10_13_x86_64.whl (206.6 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

snkv-0.4.0-cp311-cp311-win_amd64.whl (153.4 kB view details)

Uploaded CPython 3.11Windows x86-64

snkv-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (660.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

snkv-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (652.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

snkv-0.4.0-cp311-cp311-macosx_11_0_arm64.whl (198.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

snkv-0.4.0-cp311-cp311-macosx_10_9_x86_64.whl (205.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

snkv-0.4.0-cp310-cp310-win_amd64.whl (153.4 kB view details)

Uploaded CPython 3.10Windows x86-64

snkv-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (659.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

snkv-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (651.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

snkv-0.4.0-cp310-cp310-macosx_11_0_arm64.whl (198.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

snkv-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl (205.1 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

snkv-0.4.0-cp39-cp39-win_amd64.whl (153.5 kB view details)

Uploaded CPython 3.9Windows x86-64

snkv-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (659.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

snkv-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (651.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

snkv-0.4.0-cp39-cp39-macosx_11_0_arm64.whl (198.3 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

snkv-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl (205.1 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

snkv-0.4.0-cp38-cp38-win_amd64.whl (153.5 kB view details)

Uploaded CPython 3.8Windows x86-64

snkv-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (659.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

snkv-0.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (652.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

snkv-0.4.0-cp38-cp38-macosx_11_0_arm64.whl (198.3 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

snkv-0.4.0-cp38-cp38-macosx_10_9_x86_64.whl (205.1 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for snkv-0.4.0.tar.gz
Algorithm Hash digest
SHA256 1e1fb674884d2d828ec393e33e1681175cf923b8da6b90bbd7c9222ff686aed6
MD5 e931d8046a939d0a03aee07f5c9d2d26
BLAKE2b-256 3cff5855cac0dd43227edc4d3634613c00e852e97094bacd832459d0d4c9739c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snkv-0.4.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 153.5 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.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c2c8548320ed93304c9398ea1d58be245655c36a84861d4c2f87d41c23f0a8ac
MD5 a6b3bf81eb91ebce031d33c596b60fc4
BLAKE2b-256 2ec4ef7a9db3d8839ad33c3c101ba2d82aa8a954f6a7d27dec012f87a2a1ea6e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c54862bab573b44e827ba595ee3c82908db16f1bf7c78f4d43842bde749d184
MD5 e37b88b56a36102661efe071b4d37a21
BLAKE2b-256 d1fe7df9144748ab1b145359251a370b559428a59ac865ce02e562750002070b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e697d03bc74fdc9f7d8060b5bef063205389290603f499b6481a02e5d729871e
MD5 23d052042ca500434c83e88f24854afc
BLAKE2b-256 35fce11a0ebf47da2e000d822ece552bf6ef0f8bf74c0376fd146382d3e1984f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e4a52af4cd9cee27401323d4964f699883468eb923af934627b283ce643ce204
MD5 9f0f69db367bec85b7c1db1403d73bc0
BLAKE2b-256 775b6390621938ff26982e045320712a2f7596eef4016c12a63575230cc8d192

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 e1ae64010f911c0ca5257e8701af1d9f829d81a3a6a69fff1f7ae24b0c7eb78b
MD5 d3d5b25d83917404ea7a348eeb0ce5ee
BLAKE2b-256 ada123eb295c9a4c2626d28af278003be8db138a36a242b5bf407ec67e37443b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snkv-0.4.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 153.5 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.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2fbae3cd4fd43cf6f29fdc77e7d32faed66a3cb4f4e6e21057286817874e7517
MD5 433f8a5e5ddf425878ee3ae996c05b9c
BLAKE2b-256 88efc95515230a7d504014f82f76e6bf96dc360649e69397b9a43b61c3ba2377

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1ca2495bce30dd8ac8da165f29b6b2e0d58819ee3e6a50cb974e7ad768bbee58
MD5 356d8faf2cf32f50a67f7c37b38949b4
BLAKE2b-256 d0d0afb50a97ba69c4abfb9e4625b5fe1b97e8018e1df66c8787d312fb21bf79

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e17394074a1bade395049357df68a3579b560af09a8216b8533221cbcdc98b51
MD5 c2298d6eccf9b000615554f77b290ab5
BLAKE2b-256 4707e4cc69d50261922f479e31e26dab46b2fef0d5c6657f286e6e2e84ac23bf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f6372d8580d38690df86e0437c95727e9098a1b548917c42a86840821a32bc06
MD5 e657605ad387eead7fba6cbf79b7d1cd
BLAKE2b-256 082d683bf5f9f361bd8e6ef0b99de3f046ba267e56653a838aa34d82c6629cca

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 845ceeff8a639718151a94828c3669ad45be49f04a4dffd5051a3cc1031c2cf7
MD5 4380c40873284314628e3d83e952234d
BLAKE2b-256 46abeceefc9c74efad2433be602ebb4a5c8670d00da5d1b7b19c8e1b3efcd671

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snkv-0.4.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 153.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.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a3f1bcd3d4f44a8f11e13618c64600c8ec405f379afc836714ffa08853c65fbf
MD5 1a081282dddd90b5118e3a75c02568c4
BLAKE2b-256 12ccc2c9759f046e8f2b5d8194525e2068dbe672da2376022316d463e3f4f5bf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1234df28a1fc64559b2973a1eaf40bca4ca6915bb6365ee7c967b5c746ff3639
MD5 6b99a5358f1a7767e684cb053d64e543
BLAKE2b-256 8ff4da8b6febc335f2e186d4f52a9a9d16b9ae2733f7f6295a234cb9324f6c30

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 873d1b8625ffa4f8551257ac62b31a46aea0ee6585e7fb898c0e9e469954826e
MD5 69742ab242d1fa948289f8454ce1c4a2
BLAKE2b-256 c0d8b5f41ed602c9a66fa96d17f384592bad1189499d2df27b354d4bffeea04c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aaa8abfda2d95522ded113c4f75dd6eaa45a7062bae42d74c2394f80cc3c7f0c
MD5 48be15bfae75ba072854cf6005fe000b
BLAKE2b-256 fe1a9eef0a934bafd6fb082cb1460f60941bf5470f99430da8313fe0255e333d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d749c2d2c3a5e73259c2d971ec3a4f63dd5b1fd19624f84a16b5196ed37c72bf
MD5 43ae3665a555157464a9c0d610193cb2
BLAKE2b-256 c63c92aa78b35aa1120653716832143a614b35093e9fa83aa0974c26ed6ce511

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snkv-0.4.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 153.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.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a8eb5b1e39058122dece457ca6be9caf24fac0cd2d87b1dc79758387b0838262
MD5 2aaab42ad637242f5d84482e816da0e6
BLAKE2b-256 2c1951c3e98bb24c5a8ea1ba9bded93cb054f020c103ba1e5365c011b701fed0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f4257cad20106abcb70f4414296d9849cb4c8edbd149b58640da7aaaa885251c
MD5 b37bf49819788ffb6984355dd462626d
BLAKE2b-256 1bb645bab06beb0190f514c263054f3ed95f27e4188e18e3b57228aec4982179

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0e66c4660ab348d859956aa86f3cfc87fa57a17abea6468f036c9d197d920582
MD5 2b4a6ea2fab5719fe81a064762295950
BLAKE2b-256 1c9a913147a89956abca0a3353a2f3bd2a3c9dd3c418d36a8869dc398f47692f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 efb45ca41d6909bc16446c843a92c6b2cab52cd7a1019bc841d3ed843c4718cb
MD5 c3fb5fc319747b1a25d26690b244512d
BLAKE2b-256 68106c175a65b9508101f814cc2bd259f3db2ddd617d5a478970862944695eea

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e695e22adba0d8bfd6d25ed90f0054103b370111d49001271a053c022a2ce485
MD5 94cf9f34d4dc289b286ffd6f712d9dee
BLAKE2b-256 8e86e9252db70a0e725b43735fb916c1c7db1f68808706d9852c1332c143ec0d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snkv-0.4.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 153.5 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.4.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 01bf2915a845722efc988a8285b5fa4fd221ee43c4f6733f4e6467b302e636e6
MD5 c5fc34809963628bc793f1a063cbb4d6
BLAKE2b-256 3f9eb0a2f94f512faf0d473791f6337c86c231c4fec97b1f006d0fa24a8ed428

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 795336c37d302b5d24ff5fccae89a59ab17a2dc445a40fcbeee41e22756caf58
MD5 2fe8c0237c079a0e043c12b3daf09795
BLAKE2b-256 7626982581e01790fd897622291dcec0e1255adcc801a41d1badc4521c966aba

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 074c0929d7811be010fb553a8975832fc7987188424fd4819f9b45ebad05efdf
MD5 63048ce3504ae43c627568c404b6dadd
BLAKE2b-256 5e3c93b32bce601727bdea1e2a9aacb92f13562eec4fdd17c31da6802d9d9524

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snkv-0.4.0-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 198.3 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.4.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ade3ec6bbd77ac802657da9fc7b985d0279faed67f52a4e2ec3ab3c6f8d562c1
MD5 0d56666cb2adeff804725e81ada5b474
BLAKE2b-256 7c47b1f73e3ebbeb9ea34c090ffb0abcf2a86c39531ddd130fc3e6f90774f974

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snkv-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 205.1 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.4.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b8af90f8bd935f08d4b482521aa5e493f6043e429a9836497efaabe945ebf171
MD5 e3e41aed59334f0b867ce37d15bc7312
BLAKE2b-256 002f0df90901687f33829e8ceb95c00476270d1d2f54f824570109f3597d2c67

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snkv-0.4.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 153.5 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.4.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 6cef0db432d1bc513f67111605eefc60cb8ba738ca814693e726b3b77fc6445c
MD5 19be2f23f9cd19cdcc0502eb8225096c
BLAKE2b-256 28a991e0b7d344a0a05b52f911765fe5691a215699f628ebba2348d6ac0176a7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 37092603a05c085bf1bb1e119a06e7abdcb10ee602a47e750d48d544c785ea28
MD5 db2919d48f11c99bb1b3b16000966811
BLAKE2b-256 965f8957662cb7aac3d293de14f362229b869c5f612846cb7346037e39b580b1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for snkv-0.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5a184df6b9850a32433eb9fc253d28f767bea2f684a2276cd9bce4e1b12ca5a7
MD5 ea2b88997b75b7855246d96c4301b8a2
BLAKE2b-256 90ba4ca006435bfc3bf11f3ff1488e6a9ac16256912fd8d8f0ca898a3f6ff43c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snkv-0.4.0-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 198.3 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.4.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3b9523f0e3d8a7cedde276b1deb55183dda8ef5cc017e2ed65fcf75d1c3c5508
MD5 e686189042673b35df35a68b1ae27f4a
BLAKE2b-256 50b58dee05ce7931a959dcc8449a9ea63f94635ecc4d02f99d67274daeb628ce

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: snkv-0.4.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 205.1 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.4.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6fa32b420ed22c7e19141c030cdcd366b0d2901d99140639a00de6040e0089a9
MD5 ff668fa7e310b681d2b192a0ab83c88f
BLAKE2b-256 91e4c6b04868c3a4937decd149c3ff7ffeec0cf04d406de370c7380643846bb4

See more details on using hashes here.

Provenance

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