Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

billdogeng (Python)

Official BilldogEng server SDK for Python — the engagement suite for server-side use: Analytics, Feature Flags (remote + local evaluation), Surveys (data API), Messaging dispatch, and LLM observability.

This is the Python port of the canonical Node reference SDK; the wire protocol and method surface are identical across all billdogeng-* server SDKs.

Install

pip install billdogeng

Zero runtime dependencies (stdlib only). Requires Python 3.8+.

Quickstart

from billdogeng import BilldogEng

bd = BilldogEng("bd_test_xxx", local_evaluation=True)

# Analytics (batched + background flush + gzip + retry)
bd.capture("user-123", "order_completed", {"revenue": 49.99}, {"company": "acme"})
bd.identify("user-123", {"email": "a@b.com", "plan": "pro"})
bd.group_identify("company", "acme", {"seats": 50})
bd.alias("user-123", "anon-abc")

# Feature flags (local evaluation = deterministic murmurhash3 bucketing)
if bd.is_feature_enabled("new_checkout", "user-123"):
    ...
variant = bd.get_feature_flag("pricing_test", "user-123")
payload = bd.get_feature_flag_payload("pricing_test", "user-123")
all_flags = bd.get_all_flags("user-123")

# Surveys (data API — no rendering)
surveys = bd.surveys.list("user-123")
config = bd.surveys.fetch(survey_id, "user-123")
started = bd.surveys.start(survey_id, {"customer_id": "user-123"})
bd.surveys.submit(survey_id, [{"question_id": q, "answer_number": 9}],
                  {"respondent_id": started["respondent_id"]})

# Messaging dispatch (Bearer JWT auth)
bd.messaging.dispatch(
    project_id="…", channel="push",
    content={"title": "Hi", "body": "There"},
    access_token="<supabase-jwt>",
    targeting={"type": "all"},
    scheduling={"deliveryType": "immediate"},
)

# LLM observability
bd.llm.capture_trace(
    trace_id="t-1", span_id="s-1", model="claude-opus-4-8",
    input_text="…", output_text="…",
    prompt_tokens=10, completion_tokens=5, duration_ms=123, cost_usd=0.002,
)

bd.shutdown()  # flushes remaining events + stops the background timer

# Or as a context manager:
with BilldogEng("bd_test_xxx") as bd:
    bd.capture("user-123", "page_view")

Configuration

Option Default Description
host https://api.billdog.io/v1 Base URL for all requests
flush_at 20 Batch size that triggers a flush
flush_interval 10000 Background flush cadence (ms)
max_queue_size 1000 Max queued events before oldest are dropped
gzip True Gzip request bodies large enough to benefit
local_evaluation False Enable local (server-side) flag evaluation
request_timeout 10000 Per-request timeout (ms)
max_retries 3 Retry attempts for 5xx / network errors

Auth: X-BillDog-API-Key: <apiKey> on every request (bd_test_* sandbox / bd_live_* live). Messaging dispatch authenticates with a Bearer JWT instead.

Tests

python3 -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
pytest -q

The suite covers: batching (10 captures → 1 POST), identify/group/alias event shapes, the 12 canonical murmurhash3 vectors + rollout/targeting/multivariate evaluation, 503-then-200 retry with backoff (local stub server), and the survey round-trip + messaging dispatch + LLM trace payload shapes.

BillDog Auth

Session-token verification is not available in this SDK yet. billdogeng-node is the only server SDK that can verify a BillDog Auth token offline today.

Until it lands here, either verify in a Node service, or call the auth-introspect endpoint over HTTP — that costs a network round-trip per check, and in exchange tells you whether the session is live right now rather than only that the token was valid when it was issued.

Metadata

Release files for billdogeng 1.1.0b3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for billdogeng 1.1.0b3
File Size Uploaded
billdogeng-1.1.0b3.tar.gz 54.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for billdogeng 1.1.0b3
File Interpreter ABI Platform
billdogeng-1.1.0b3-py3-none-any.whl Python 3 none any Details

Total release size: 96.2 kB

Release files / billdogeng-1.1.0b3.tar.gz

Download URL billdogeng-1.1.0b3.tar.gz
Size 54.2 kB
Tags Source
SHA-256 checksum
How to use checksums
921f867e298933c877719782bca7c52b38f4ffafee92ad5cda3b2ec2db37b070
BLAKE2b-256 checksum
How to use checksums
404c98f8259e2c72818f1875fbac823f98442ef9fa45febf2f644712722b8859
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / billdogeng-1.1.0b3-py3-none-any.whl

Download URL billdogeng-1.1.0b3-py3-none-any.whl
Size 42.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4ae68900ba6c89cffdd7081ab1a89534e13070bb5aae65e0922b18ac815420e4
BLAKE2b-256 checksum
How to use checksums
9088bd26c49fc6366c13ad69b47fa5721630a2372a6afaf80ac0b5b32761dee0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page