| """ | |
| infra.api — the HTTP API (Stage 3b). | |
| A thin FastAPI shell over OrgStateService: | |
| FastAPI app (app.py) -> handlers (handlers.py) -> OrgStateService | |
| `handlers` and `errors` are pure (no fastapi dependency) and carry all the | |
| real logic, so the API is fully unit-testable without a web server. `app` | |
| needs fastapi/uvicorn (optional deps in requirements.txt). | |
| """ | |
| from . import errors, handlers | |
| from .errors import ApiError | |
| __all__ = ["errors", "handlers", "ApiError", "create_app"] | |
| def create_app(db_path=None, **kwargs): | |
| """Lazy re-export of app.create_app so importing infra.api never requires | |
| fastapi unless you actually build the app. ``**kwargs`` forwards | |
| Stage 79+ extras like ``rate_limiter`` without re-declaring every | |
| option in this thin wrapper.""" | |
| from .app import create_app as _create_app | |
| return _create_app(db_path, **kwargs) | |