Python SDK for PetBox — config client (ETag-aware polling) and a Data-module client (raw parameterized SQL pass-through).
Project description
petbox-client (Python)
Sync, zero-dependency Python SDK for PetBox config.
Fetches resolved config from /v1/conf with ETag-aware background polling. Supports all
four response templates (flat, dotnet, envvar, envvar-deep).
This is the Python analog of the TypeScript SDK @stdray-npm/petbox-client. Data + Log
surfaces land later, matching the TS roadmap.
Install
pip install petbox-client
Usage
import os
from petbox_client import PetBoxConfigClient, PetBoxConfigClientOptions
client = PetBoxConfigClient(PetBoxConfigClientOptions(
endpoint="https://petbox.3po.su",
api_key=os.environ["PETBOX_API_KEY"],
tags={"env": "prod", "project": "kpvotes"},
))
# Initial fetch + start background polling.
config = client.start()
print(config.get("db.host"))
print(config.get_number("db.port"))
print(config.get_bool("features.cache"))
# React to live config changes.
client.on("change", lambda cfg: print("config updated", cfg.data))
client.on("error", lambda err: print("poll failed", err))
# Stop polling when done (or use the client as a context manager).
client.dispose()
One-shot fetch without keeping an instance:
from petbox_client import fetch_config, PetBoxConfigClientOptions
config = fetch_config(PetBoxConfigClientOptions(
endpoint="https://petbox.3po.su",
api_key="...",
tags={"env": "prod"},
refresh_interval=0, # disable polling
))
API
PetBoxConfigClient(options)—fetch(),start(),stop(),dispose(),on(event, listener)/off(...)for"change"and"error",currentproperty.ResolvedConfig—get(path),get_number(path),get_bool(path),get_json(path),to_env(),data,etag. For theflattemplateget("db.host")traverses the nested tree; for the other templates it does a direct key lookup.fetch_config(options)— one-shot convenience.PetBoxConfigError— structured API error withstatusandbody.
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 petbox_client-0.1.0.dev460.tar.gz.
File metadata
- Download URL: petbox_client-0.1.0.dev460.tar.gz
- Upload date:
- Size: 39.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e1d6ee99c76d147a8324e9fffca84534cb889b5ec23073c7cde1e81372f4988
|
|
| MD5 |
41e46ee1db1d3159b7880ba091324858
|
|
| BLAKE2b-256 |
7e1488d3ed5f58e8f107b3ce8d28cfb811e709e4b7448f15d8476bb867be1b09
|
File details
Details for the file petbox_client-0.1.0.dev460-py3-none-any.whl.
File metadata
- Download URL: petbox_client-0.1.0.dev460-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
885984334f11e0235578cdfbf4eea5907542cce15e6a73bb5f347a6c65b78255
|
|
| MD5 |
d83fc6356fd5ed97185165aa8bc3ce88
|
|
| BLAKE2b-256 |
ecbe793b9b3702eed71956cf23faf2c29e9089d465f243f8d250e76532ae6521
|