ImmuKV - Python Client
Lightweight immutable key-value store using S3 versioning.
Installation
pip install immukv
Quick Start
from immukv import ImmuKVClient, Config
config = Config(
s3_bucket="your-bucket",
s3_region="us-east-1",
s3_prefix=""
)
# Identity functions for JSON values (use custom encoders/decoders for complex types)
def identity(x): return x
with ImmuKVClient(config, identity, identity) as client:
# Write
entry = client.set("key1", {"value": "data"})
print(f"Committed: {entry.version_id}")
# Read
latest = client.get("key1")
print(f"Latest: {latest.value}")
# List keys
keys = client.list_keys(None, 100)
# List keys with prefix filtering (server-side)
sensor_keys = client.list_keys_with_prefix("sensor-", None, 100)
Features
- Immutable log - All writes append to global log
- Fast reads - Single S3 request for latest value
- Hash chain - Cryptographic integrity verification
- No database - Uses S3 versioning only
- Auto-repair - Orphaned entries repaired automatically
- Credential providers - Pluggable async credential refresh via
CredentialProvider - Sync API - Synchronous interface backed by aiobotocore with a background event loop
Credential Providers
The client supports static credentials or an async credential provider for dynamic credential refresh (e.g., OIDC federation). The credential provider is backed by AioDeferredRefreshableCredentials for automatic refresh.
from immukv import ImmuKVClient, Config, S3Overrides, S3Credentials
# Static credentials
config = Config(
s3_bucket="bucket",
s3_region="us-east-1",
s3_prefix="",
overrides=S3Overrides(
credentials=S3Credentials(
aws_access_key_id="AKIA...",
aws_secret_access_key="...",
aws_session_token="...",
),
),
)
# Async credential provider
async def my_provider() -> S3Credentials:
return S3Credentials(
aws_access_key_id="AKIA...",
aws_secret_access_key="...",
aws_session_token="...", # Optional
expires_at=some_datetime, # Optional (defaults to 1 hour from now)
)
config_with_provider = Config(
s3_bucket="bucket",
s3_region="us-east-1",
s3_prefix="",
overrides=S3Overrides(credentials=my_provider),
)
See the full documentation for more details.
Metadata
Release files for immukv 0.1.30
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| immukv-0.1.30.tar.gz | 45.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| immukv-0.1.30-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 70.3 kB
Release files / immukv-0.1.30.tar.gz
| Download URL | immukv-0.1.30.tar.gz |
|---|---|
| Size | 45.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
02787bc4e894ffdd5422fbafd52dffa0cc44f26817ae15ebc6eb57c37eadaa4c
|
|
BLAKE2b-256 checksum How to use checksums |
dddcc66ad1b22f6a094052dd5580996f842579972c4923561d413e824a59c743
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 21, 2026.
Transparency logRelease files / immukv-0.1.30-py3-none-any.whl
| Download URL | immukv-0.1.30-py3-none-any.whl |
|---|---|
| Size | 24.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
beb8bf2d40a66bbaec466beb9a15fa95bc80be0a32a29264d9f03ca58441cf31
|
|
BLAKE2b-256 checksum How to use checksums |
ff26438dad27ce525780c8ca78a807380f2f918077d8f003f2302c10a48f97d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 21, 2026.
Transparency log