Skip to main content

Official Python SDK for Bugwatch - AI-Powered Error Tracking

Project description

Bugwatch Python SDK

Official Python SDK for Bugwatch - AI-Powered Error Tracking.

Installation

pip install bugwatch-sdk

With framework integrations:

# Django
pip install bugwatch-sdk[django]

# Flask
pip install bugwatch-sdk[flask]

# FastAPI
pip install bugwatch-sdk[fastapi]

# All integrations
pip install bugwatch-sdk[all]

Quick Start (Plug and Play)

import bugwatch

# Option 1: Use environment variable
# Set BUGWATCH_API_KEY=your-api-key in your environment
bugwatch.init()

# Option 2: Pass API key explicitly
bugwatch.init(api_key="your-api-key")

# That's it! All uncaught exceptions are now captured automatically.

The SDK automatically captures:

  • Uncaught exceptions in the main thread (sys.excepthook)
  • Thread exceptions in spawned threads (threading.excepthook)
  • Async task exceptions in asyncio tasks

Environment Variables

Variable Description
BUGWATCH_API_KEY Your API key (required if not passed to init())
BUGWATCH_ENVIRONMENT Environment name (e.g., "production")
BUGWATCH_RELEASE Release/version identifier

Manual Capture (Optional)

You can also capture exceptions manually:

import bugwatch

bugwatch.init(api_key="your-api-key")

try:
    do_something_risky()
except Exception:
    bugwatch.capture_exception()

# Capture messages
bugwatch.capture_message("Something happened", level=bugwatch.Level.WARNING)

Django Integration

Add the middleware to your settings:

# settings.py

MIDDLEWARE = [
    'bugwatch.integrations.django.BugwatchMiddleware',
    # ... other middleware
]

BUGWATCH = {
    'api_key': 'your-api-key',  # Or use BUGWATCH_API_KEY env var
    'environment': 'production',
    'release': '1.0.0',
}

Flask Integration

from flask import Flask
from bugwatch.integrations.flask import BugwatchFlask

app = Flask(__name__)
BugwatchFlask(app, api_key='your-api-key')

FastAPI Integration

from fastapi import FastAPI
from bugwatch.integrations.fastapi import BugwatchFastAPI

app = FastAPI()
BugwatchFastAPI(app, api_key='your-api-key')

Logging Integration

Capture logged errors automatically:

import logging
from bugwatch.integrations.logging import BugwatchHandler, setup_logging

# Quick setup - captures ERROR and above
setup_logging()

# Or manual setup with options
handler = BugwatchHandler(
    level=logging.ERROR,
    capture_breadcrumbs=True,  # Add logs as breadcrumbs
    breadcrumb_level=logging.INFO,
)
logging.getLogger().addHandler(handler)

# Now logged errors are captured
logging.error("This will be sent to Bugwatch")

Features

  • Plug and play - Just call init() and all exceptions are captured
  • Automatic exception hooks - Captures uncaught exceptions globally
  • Thread safety - Captures exceptions in spawned threads
  • Async support - Captures exceptions in asyncio tasks
  • Logging integration - Capture logged errors
  • Breadcrumbs - Track user actions leading up to an error
  • User context - Associate errors with users
  • Tags and extra data - Add custom metadata to errors
  • Fingerprinting - Automatic grouping of similar errors
  • Framework integrations - Django, Flask, FastAPI support
  • Atexit handling - Flushes pending events on shutdown

API Reference

bugwatch.init(api_key=None, **options)

Initialize the SDK. If api_key is not provided, reads from BUGWATCH_API_KEY environment variable.

Options:

  • api_key (str): Your Bugwatch API key
  • endpoint (str): API endpoint (default: https://api.bugwatch.io)
  • environment (str): Environment name
  • release (str): Release/version identifier
  • debug (bool): Enable debug logging
  • sample_rate (float): Sample rate for events (0.0-1.0)
  • max_breadcrumbs (int): Maximum breadcrumbs to keep
  • install_excepthook (bool): Install sys.excepthook (default: True)
  • install_threading_hook (bool): Install threading.excepthook (default: True)
  • install_asyncio_hook (bool): Install asyncio exception handler (default: True)

bugwatch.capture_exception(error=None, level=Level.ERROR, tags=None, extra=None)

Capture an exception. If error is None, captures the current exception from sys.exc_info().

bugwatch.capture_message(message, level=Level.INFO, tags=None, extra=None)

Capture a message.

bugwatch.add_breadcrumb(category, message, level=Level.INFO, data=None)

Add a breadcrumb.

bugwatch.set_user(user)

Set the current user context.

bugwatch.set_tag(key, value)

Set a tag for all future events.

bugwatch.set_extra(key, value)

Set extra context for all future events.

bugwatch.flush()

Flush any pending events to Bugwatch.

bugwatch.close()

Close the client and restore original exception hooks.

Disabling Automatic Capture

If you want manual control only:

bugwatch.init(
    api_key="your-api-key",
    install_excepthook=False,
    install_threading_hook=False,
    install_asyncio_hook=False,
)

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

bugwatch_sdk-0.1.0.tar.gz (23.1 kB view details)

Uploaded Source

Built Distribution

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

bugwatch_sdk-0.1.0-py3-none-any.whl (24.4 kB view details)

Uploaded Python 3

File details

Details for the file bugwatch_sdk-0.1.0.tar.gz.

File metadata

  • Download URL: bugwatch_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 23.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for bugwatch_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b3cb95fed99331a4ee24b2d93e642a7d7455bcb44f19c2d0a0dfcb478d281026
MD5 ec54153a894b64aefa8dbc9585a3ad03
BLAKE2b-256 451f270c469f27c66bdebbdb7429cd3993bb6732b6c710a27f83ca6707abfe1f

See more details on using hashes here.

File details

Details for the file bugwatch_sdk-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: bugwatch_sdk-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 24.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for bugwatch_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 58e86fc34c8a442c84a67d63ac085a7abf4ef2387dab09ee365a454fed1b44d7
MD5 f6bb51d4fa2bbae67f826bc858147302
BLAKE2b-256 57fd21d70621ca90f2b8adcbcb899e19a63bdc7d8483b4c6717f694c2b3d843f

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