Skip to main content

bugstack-python

Official Python SDK for BugStack — capture, report, and auto-fix production errors.

PyPI Python License: MIT

Installation

pip install bugstack

Quick Start

import bugstack

bugstack.init(api_key="bs_live_...")

try:
    risky_operation()
except Exception as e:
    bugstack.capture_exception(e)

Framework Integrations

FastAPI

from fastapi import FastAPI
from bugstack.integrations.fastapi import FastAPIMiddleware

app = FastAPI()
app.add_middleware(FastAPIMiddleware)

bugstack.init(api_key="bs_live_...")

Django

# settings.py
MIDDLEWARE = [
    'bugstack.integrations.django.BugStackMiddleware',
    # ... other middleware
]

BUGSTACK_API_KEY = "bs_live_..."
BUGSTACK_AUTO_FIX = True  # optional

Flask

from flask import Flask
from bugstack.integrations.flask import init_app

app = Flask(__name__)
bugstack.init(api_key="bs_live_...")
init_app(app)

Generic (sys.excepthook)

from bugstack.integrations.generic import install_hooks

bugstack.init(api_key="bs_live_...")
install_hooks()

Configuration

bugstack.init(
    api_key="bs_live_...",          # Required
    environment="production",       # Default: "production"
    auto_fix=True,                  # Enable AI-powered auto-fix
    debug=False,                    # Log SDK activity
    dry_run=False,                  # Log without sending
    enabled=True,                   # Kill switch
    deduplication_window=300,       # Seconds (default: 5 min)
    timeout=5.0,                    # HTTP timeout in seconds
    max_retries=3,                  # Retry attempts
    ignored_errors=[                # Errors to skip
        KeyboardInterrupt,
        "expected error message",
    ],
    before_send=my_hook,            # Inspect/modify/drop events
    redact_fields=["password"],     # Fields to redact
)

Data Transparency

before_send Hook

Inspect, modify, or drop any event before it leaves your application:

def before_send(event):
    # Drop health check errors
    if "health" in event.request.route:
        return None

    # Redact sensitive data
    event.metadata.pop("secret", None)

    return event

bugstack.init(api_key="bs_live_...", before_send=before_send)

ignored_errors

Skip specific error types or messages:

bugstack.init(
    api_key="bs_live_...",
    ignored_errors=[
        KeyboardInterrupt,          # By type
        SystemExit,                 # By type
        "Connection reset",         # By exact message
    ],
)

dry_run Mode

See exactly what would be sent without making any network requests:

bugstack.init(api_key="bs_live_...", dry_run=True)
# Prints: [BugStack DryRun] Would send: { ... }

What Gets Sent

Every error event contains exactly this — nothing more:

{
  "apiKey": "bs_live_...",
  "error": {
    "message": "division by zero",
    "stackTrace": "Traceback (most recent call last)...",
    "file": "app/api/handler.py",
    "function": "process_request",
    "fingerprint": "a1b2c3d4e5f6g7h8"
  },
  "environment": {
    "language": "python",
    "languageVersion": "3.12.1",
    "framework": "fastapi",
    "frameworkVersion": "0.109.0",
    "os": "linux",
    "sdkVersion": "1.0.0"
  },
  "timestamp": "2026-01-15T08:30:00+00:00"
}

No cookies. No IP addresses. No user data. No request bodies (unless you explicitly include them).

License

MIT — see LICENSE.

Metadata

Release files for bugstack 1.1.0

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

Source distribution (sdist)

Source distribution for bugstack 1.1.0
File Size Uploaded Provenance Actions
bugstack-1.1.0.tar.gz 21.4 kB Without provenance Details for bugstack-1.1.0.tar.gz

Built distribution (wheel)

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

Total release size: 37.4 kB

Release files / bugstack-1.1.0.tar.gz

Download URL bugstack-1.1.0.tar.gz
Size 21.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d601904c79d459b8dd05d812292f32a1802c7b8b819a742a4eb8b6c41768fee6
BLAKE2b-256 checksum
How to use checksums
b3a2ade9a0c2c54538d48fbc688a86eda9cb8a3083c6a6900f27f856f7a0bcaf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / bugstack-1.1.0-py3-none-any.whl

Download URL bugstack-1.1.0-py3-none-any.whl
Size 16.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8a9c6153f6d399a17bed6602888db15e3562bf90f6d5f770510d4a51b036905b
BLAKE2b-256 checksum
How to use checksums
105853c51864a081dc88c1720df0bf26ee591b4aac4221f35b928c1a40924fb2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Security for bugstack 1.1.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files No provenance

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