Metadata-Version: 2.5
Name: aethellayer
Version: 0.1.0
Summary: AethelLayer probe for FastAPI, Starlette, and Python CLIs. Catch silent onboarding failures and open an inbox thread.
Project-URL: Homepage, https://aethellayer.com
Project-URL: Documentation, https://aethellayer.com
Project-URL: Repository, https://github.com/aethellayer/aeth
Author: AethelLayer
License-Expression: MIT
Keywords: aethellayer,developer-experience,fastapi,observability,sdk
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
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 :: Libraries
Requires-Python: >=3.10
Provides-Extra: dev
Requires-Dist: build; extra == 'dev'
Requires-Dist: twine; extra == 'dev'
Provides-Extra: fastapi
Requires-Dist: fastapi>=0.110; extra == 'fastapi'
Requires-Dist: starlette>=0.36; extra == 'fastapi'
Description-Content-Type: text/markdown

# aethellayer (Python)

Probe for AethelLayer. Catch silent FastAPI, Starlette, Flask-style, and CLI failures.

## Install

```bash
pip install aethellayer
export AETHEL_API_KEY=aethel_live_...
```

## FastAPI

```python
from fastapi import FastAPI
from aethellayer import Probe

app = FastAPI()
probe = Probe.from_env(environment="api_middleware", app_name="payments-api")
app.add_middleware(probe.fastapi_middleware())
```

## Capture manually

```python
probe.capture(
    error_code="RATE_LIMIT_429",
    endpoint_path="GET /v1/keys",
    taxonomy="RateLimit",
    message="Starter quota burned before noon",
)
```

## CLI

```bash
aethellayer init
aethellayer run -- python your_cli.py
```

Or in code:

```python
from aethellayer import Probe

with Probe.from_env(environment="cli").wrap_cli():
    main()
```

## Publish (maintainers)

```bash
cd packages/python
python -m pip install build twine
python -m build
python -m twine upload dist/*
```
