bugstack-python
Official Python SDK for BugStack — capture, report, and auto-fix production errors.
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.