Skip to main content

FastAPI integration adapters for mgf-common — request-id + exception translation + lifespan + webhooks (Svix HMAC) + IpAllowlist + run_test_app + DB-session helpers (via [sqlalchemy] extra). Sibling of mgf-common under the mgf.* namespace.

Project description

mgf-fastapi — FastAPI integration adapters for mgf-common

PyPI Python

Shape: Federation sibling of mgf-common. The current mgf-common pin window is shown in this package's PyPI metadata — sourced from pyproject.toml at release time, so this README can't go stale. (Per v2.6 DOC-01 / project-shape taxonomy. PAPER-38.)

Sibling of mgf-common under the mgf.* namespace. Houses every FastAPI-specific adapter that previously lived under mgf.common.fastapi.* — extracted at mgf-common v0.28 / mgf-fastapi v0.1 per the federation split plan.

What this provides

Submodule What
mgf.fastapi bootstrap ↔ FastAPI lifespan; RequestIdMiddleware; ExceptionTranslationMiddleware; Depends() helpers (get_app_context, get_settings, get_request_id); setup_lifespan.
mgf.fastapi.webhooks Svix-shape HMAC webhook verification (HmacWebhookVerifier, WebhookHeaderSchema, SVIX_SCHEMA, verify_request).
mgf.fastapi.security IpAllowlist FastAPI dependency with proxy-trust opt-in.
mgf.fastapi.testing run_test_app async context manager — start uvicorn for a FastAPI app on a free port; yield base URL; clean shutdown.
mgf.fastapi.exceptions HmacVerificationError(HttpUnauthorized) and other framework-domain concrete leaves. (HTTP-01 hierarchy roots stay in mgf.common.exceptions.)

Install

pip install mgf-fastapi
# Or with the test-helper extra (uvicorn + httpx for run_test_app):
pip install 'mgf-fastapi[testing]'

Pulls in mgf-common and fastapi automatically.

Quick start

from fastapi import FastAPI, Request
from mgf.fastapi import (
    ExceptionTranslationMiddleware,
    RequestIdMiddleware,
    setup_lifespan,
)
from mgf.fastapi.webhooks import HmacWebhookVerifier, verify_request

app = FastAPI(lifespan=setup_lifespan(app_name="my-service", app_version="0.1.0"))
app.add_middleware(ExceptionTranslationMiddleware)
app.add_middleware(RequestIdMiddleware)

webhook = HmacWebhookVerifier(secret=settings.webhook_secret)

@app.post("/webhooks/clerk")
async def clerk_webhook(request: Request) -> dict:
    event_id, ts = await verify_request(request, webhook)
    payload = await request.json()
    # ... process the (now-trusted) payload ...
    return {"ok": True}

Documentation

For the federation-wide engineering standards (DESIGN_PRINCIPLES, ERROR_HANDLING, SECURITY, etc.) see mgf-common/docs/standards/. This sibling inherits them by reference; the standards source-of-truth lives in mgf-common.

Conformance: L2 per mgf-common/docs/standards/. Per-rule audit ledger: docs/inprogress/MGF_STANDARDS_CONFORMANCE.md. L2 means every federation MUST rule applies, evidenced by the tracker.

Status

🚧 Experimental — every public name is experimental per AP-09. Promotion to stable happens release-by-release as consumer feedback in FEEDBACK.md converges. The 0.x window applies. Pin tightly: mgf-fastapi = ">=0.X.0,<0.Y".

Cross-references

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

mgf_fastapi-0.6.5.tar.gz (208.5 kB view details)

Uploaded Source

Built Distribution

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

mgf_fastapi-0.6.5-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

File details

Details for the file mgf_fastapi-0.6.5.tar.gz.

File metadata

  • Download URL: mgf_fastapi-0.6.5.tar.gz
  • Upload date:
  • Size: 208.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for mgf_fastapi-0.6.5.tar.gz
Algorithm Hash digest
SHA256 abc253011cf885cb2be82a8ab4fe8b185db28e774c5dcaeeabadfa8e965c359b
MD5 55ae1579e62999a29bad6fac45eb1542
BLAKE2b-256 35844f7a831c6edce8473c6725ca704d35853f668ac868dd27bfbba720065b8c

See more details on using hashes here.

File details

Details for the file mgf_fastapi-0.6.5-py3-none-any.whl.

File metadata

  • Download URL: mgf_fastapi-0.6.5-py3-none-any.whl
  • Upload date:
  • Size: 39.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for mgf_fastapi-0.6.5-py3-none-any.whl
Algorithm Hash digest
SHA256 92654872bdcf2d3e12864122e7a9aa50eab7c4e5ed2cdc634ca890cd8c9893d2
MD5 4c71dffbf61e8409facc07cfa2bdf91a
BLAKE2b-256 7dc6da674ec07ab20cba6d8c0f7ffb005a472c02d957117808b4bc732c3c32c3

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