Official Python SDK for the smplkit platform
Project description
smplkit Python SDK
The official Python SDK for smplkit — simple application infrastructure that just works.
Installation
pip install smplkit-sdk
Requirements
- Python 3.10+
Quick Start
from smplkit import SmplClient
# Option 1: Explicit API key
client = SmplClient(api_key="sk_api_...")
# Option 2: Environment variable (SMPLKIT_API_KEY)
# export SMPLKIT_API_KEY=sk_api_...
client = SmplClient()
# Option 3: Configuration file (~/.smplkit)
# [default]
# api_key = sk_api_...
client = SmplClient()
from smplkit import SmplClient
with SmplClient(api_key="sk_api_...") as client:
# --- Runtime: resolve config values ---
# Connect and read resolved key/value pairs for your service
db = client.config.get("database") # {"host": "...", "port": 5432}
# --- Management: CRUD operations ---
# List all configs
configs = client.config.management.list()
# Create a new config
cfg = client.config.management.new("my_service", name="My Service")
cfg.save()
# Get a config by id
cfg = client.config.management.get("my_service")
# Delete a config
client.config.management.delete("my_service")
# --- Flags management ---
flag = client.flags.management.newBooleanFlag("checkout-v2", default=False)
flag.save()
flags = client.flags.management.list()
# --- Logging management ---
logger = client.logging.management.new("sql", name="SQL Logger")
logger.save()
For async usage:
from smplkit import AsyncSmplClient
async with AsyncSmplClient(api_key="sk_api_...") as client:
# Runtime
db = await client.config.get("database")
# Management
cfg = await client.config.management.get("my_service")
configs = await client.config.management.list()
Configuration
All settings are resolved from three sources, in order of precedence:
- Constructor arguments — highest priority, always wins.
- Environment variables — e.g.
SMPLKIT_API_KEY,SMPLKIT_ENVIRONMENT. - Configuration file (
~/.smplkit) — INI-format with profile support. - Defaults — built-in SDK defaults.
Configuration File
The ~/.smplkit file supports a [common] section (applied to all profiles) and named profiles:
[common]
environment = production
service = my-app
[default]
api_key = sk_api_abc123
[local]
base_domain = localhost
scheme = http
api_key = sk_api_local_xyz
environment = development
debug = true
Constructor Examples
# Use a named profile
client = SmplClient(profile="local")
# Or configure explicitly
client = SmplClient(
api_key="sk_api_...",
environment="production",
service="my-service",
)
For the complete configuration reference, see the Configuration Guide.
Error Handling
All SDK errors extend SmplError:
from smplkit import SmplError, SmplNotFoundError
try:
config = client.config.management.get("nonexistent")
except SmplNotFoundError:
print("Config not found")
except SmplError as e:
print(f"SDK error: {e}")
| Exception | Cause |
|---|---|
SmplNotFoundError |
Resource not found |
SmplConflictError |
Conflict (e.g., has children) |
SmplValidationError |
Validation error |
SmplTimeoutError |
Request timed out |
SmplConnectionError |
Network connectivity issue |
SmplError |
Any other SDK error |
Debug Logging
Set SMPLKIT_DEBUG=1 to enable verbose diagnostic output to stderr. This is useful for troubleshooting real-time level changes, WebSocket connectivity, and SDK initialization. Debug output bypasses the managed logging framework and writes directly to stderr.
SMPLKIT_DEBUG=1 python my_app.py
Accepted values: 1, true, yes (case-insensitive). Any other value (or unset) disables debug output.
Documentation
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file smplkit_sdk-2.8.1.tar.gz.
File metadata
- Download URL: smplkit_sdk-2.8.1.tar.gz
- Upload date:
- Size: 225.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b39a812f82687549ffde0f16ca371f3fb273814640fe498b0f779d4eff31b18a
|
|
| MD5 |
9df9ff1501f23e6dd573d8bb65fe8fce
|
|
| BLAKE2b-256 |
251625c5925dd3d1b3601a61ce5bc8cb458f489181b6ee0646a13e5fa232b109
|
Provenance
The following attestation bundles were made for smplkit_sdk-2.8.1.tar.gz:
Publisher:
ci-cd.yml on smplkit/python-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smplkit_sdk-2.8.1.tar.gz -
Subject digest:
b39a812f82687549ffde0f16ca371f3fb273814640fe498b0f779d4eff31b18a - Sigstore transparency entry: 1339365044
- Sigstore integration time:
-
Permalink:
smplkit/python-sdk@69b9f62c6bb615392fef8312ae1fe739c5f46096 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/smplkit
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci-cd.yml@69b9f62c6bb615392fef8312ae1fe739c5f46096 -
Trigger Event:
push
-
Statement type:
File details
Details for the file smplkit_sdk-2.8.1-py3-none-any.whl.
File metadata
- Download URL: smplkit_sdk-2.8.1-py3-none-any.whl
- Upload date:
- Size: 366.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d473a9579e6cabfb632e628b2ccb194274825b10968fce85fbcd2af57c9c5b09
|
|
| MD5 |
9e100d87304941458135e3ebef7eb3ef
|
|
| BLAKE2b-256 |
41ca1d224106ed309af5cabe2cf4e25d5692a90c99ed06b5c55f857d0fd4433b
|
Provenance
The following attestation bundles were made for smplkit_sdk-2.8.1-py3-none-any.whl:
Publisher:
ci-cd.yml on smplkit/python-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smplkit_sdk-2.8.1-py3-none-any.whl -
Subject digest:
d473a9579e6cabfb632e628b2ccb194274825b10968fce85fbcd2af57c9c5b09 - Sigstore transparency entry: 1339365073
- Sigstore integration time:
-
Permalink:
smplkit/python-sdk@69b9f62c6bb615392fef8312ae1fe739c5f46096 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/smplkit
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci-cd.yml@69b9f62c6bb615392fef8312ae1fe739c5f46096 -
Trigger Event:
push
-
Statement type: