Metadata-Version: 2.4
Name: uncaughtdev
Version: 0.1.0
Summary: Local-first, AI-ready error monitoring for Python — catch bugs, get AI-powered fixes
Project-URL: Homepage, https://github.com/ajeeshworkspace/uncaught
Project-URL: Documentation, https://github.com/ajeeshworkspace/uncaught
Project-URL: Repository, https://github.com/ajeeshworkspace/uncaught
Author: Uncaught Dev
License-Expression: MIT
Keywords: ai,debugging,error-monitoring,mcp,vibe-coding
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Django
Classifier: Framework :: FastAPI
Classifier: Framework :: Flask
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Debuggers
Requires-Python: >=3.9
Provides-Extra: all
Requires-Dist: django>=3.2; extra == 'all'
Requires-Dist: fastapi>=0.68.0; extra == 'all'
Requires-Dist: flask>=2.0.0; extra == 'all'
Requires-Dist: sqlalchemy>=1.4.0; extra == 'all'
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Provides-Extra: django
Requires-Dist: django>=3.2; extra == 'django'
Provides-Extra: fastapi
Requires-Dist: fastapi>=0.68.0; extra == 'fastapi'
Provides-Extra: flask
Requires-Dist: flask>=2.0.0; extra == 'flask'
Provides-Extra: sqlalchemy
Requires-Dist: sqlalchemy>=1.4.0; extra == 'sqlalchemy'
Description-Content-Type: text/markdown

# uncaught

Local-first, AI-ready error monitoring for Python. Zero-config error capture with automatic fix prompts.

## Install

```bash
pip install uncaught
```

## Quick Start

```python
from uncaught import init_uncaught

client = init_uncaught({
    "environment": "development",
})

# Errors are automatically captured via sys.excepthook
# Or capture manually:
try:
    risky_operation()
except Exception as e:
    client.capture_error(e)
```

## Framework Integrations

### FastAPI

```python
from fastapi import FastAPI
from uncaught.integrations.fastapi import UncaughtMiddleware

app = FastAPI()
app.add_middleware(UncaughtMiddleware)
```

### Flask

```python
from flask import Flask
from uncaught.integrations.flask import init_app

app = Flask(__name__)
init_app(app)
```

### Django

Add to `MIDDLEWARE` in `settings.py`:

```python
MIDDLEWARE = [
    "uncaught.integrations.django.UncaughtMiddleware",
    # ...
]
```

### SQLAlchemy

```python
from uncaught.integrations.sqlalchemy import setup_sqlalchemy

setup_sqlalchemy(engine)
```

## How It Works

Errors are written to a local `.uncaught/` directory with AI-ready fix prompts. Use the MCP server to query errors from Claude, Cursor, or any MCP-compatible AI tool.

## License

MIT
