Skip to main content

Python SDK for PetBox — config client with ETag-aware polling. Data + Log surfaces land later.

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", current property.
  • ResolvedConfigget(path), get_number(path), get_bool(path), get_json(path), to_env(), data, etag. For the flat template get("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 with status and body.

License

MIT

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

petbox_client-0.1.0.dev216.tar.gz (34.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

petbox_client-0.1.0.dev216-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file petbox_client-0.1.0.dev216.tar.gz.

File metadata

  • Download URL: petbox_client-0.1.0.dev216.tar.gz
  • Upload date:
  • Size: 34.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","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

Hashes for petbox_client-0.1.0.dev216.tar.gz
Algorithm Hash digest
SHA256 1d376e6a89e8222b1e88b8b11fab2295cf63ccb1e50cdd472bf2aeede647c9a2
MD5 ab20f59117aa27adc71da8791ad2a2a5
BLAKE2b-256 f4cbb663e5f97267070db89afc5885d8ecf47601c919090f387694d02845e62d

See more details on using hashes here.

File details

Details for the file petbox_client-0.1.0.dev216-py3-none-any.whl.

File metadata

  • Download URL: petbox_client-0.1.0.dev216-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","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

Hashes for petbox_client-0.1.0.dev216-py3-none-any.whl
Algorithm Hash digest
SHA256 d3575f24c4bdff9cc1a69f21b523a09bc1888da4aaf947ecd33d81d552af3502
MD5 7ef6a5b3a1ee96ff7bd6a9942033c3a5
BLAKE2b-256 6020d3247a546cd33a65be0aca176d6678f2d95a61e0cc6bb2bad176f1668c51

See more details on using hashes here.

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