Skip to main content

A lean backend framework for type-safe Python APIs — file-based routing, typed config/DI, scoped providers, plugin registry, and background tasks.

Project description

causeway (Python)

A lean backend framework for type-safe Python APIs.

uv add 'causeway==0.1.0a0'   # alpha — drop the pin once v0.1.0 ships

This is the core Python package of Causeway. It ships:

  • A file-based router that walks src/app/routes/**/*.py, picks up [id].py, (group)/, _middleware.py, and _scope.py, and registers handlers into the app's route table.
  • A typed config layer that wraps pydantic-settings and exposes non-secret fields to the generated TypeScript client.
  • A scoped DI container driven by _scope.py providers.
  • A @task contract for background jobs with a Dramatiq reference adapter.
  • A plugin registry with Python-entry-point discovery and per-environment activation.
  • A CLI (causeway new, causeway dev, causeway build, causeway deploy <target>) that runs the whole loop.

For the full story, the design rationale, and a side-by-side vs. FastAPI / Django + Ninja / Encore.ts / NestJS, see the repo README.

30-second example

my-app/
├── pyproject.toml
├── causeway.toml
└── src/app/
    ├── config.py
    ├── plugins.py
    └── routes/
        ├── _middleware.py
        ├── index.py
        └── users/
            ├── _scope.py
            ├── index.py
            └── [id].py
# src/app/routes/users/[id].py
from typing import Annotated
from uuid import UUID
from msgspec import Struct
from causeway import get, raises
from causeway.errors import NotFound

class User(Struct):
    id: UUID
    name: str

@get
@raises(NotFound)
async def show(id: UUID) -> User:
    ...

Run it:

causeway dev

causeway dev discovers the routes, boots uvicorn, regenerates a typed client.ts for your frontend on every save, and exposes /__causeway with the route tree, registered tasks, current config, and plugin list.

Primitives in this package

Primitive Purpose
File router ([id].py, (group)/) Discovery + URL pattern generation.
_middleware.py / _scope.py Per-subtree middleware + scoped DI providers.
Settings (wraps pydantic-settings) Typed config with allowlisted exposure to the generated client.
@get / @post / @put / @patch / @delete HTTP method decorators.
@task(...) Background-job contract; adapter-agnostic.
@cron(...) Scheduled tasks via the same adapter.
register(...) Plugin registration (TaskAdapter, Storage, KV, AuthProvider, …).
TestApp Test client with DI overrides and tasks_eager() mode.
causeway CLI new, dev, build, plugins, deploy <target>.

Full reference: https://github.com/tamimbinhakim/causeway/blob/main/docs/reference.md

Optional extras

uv add 'causeway[dramatiq]'  # reference task adapter
uv add 'causeway[otel]'      # OpenTelemetry middleware hooks
uv add 'causeway[all]'       # everything

Scope

Causeway ships project shape and a small set of contracts. It does not ship vertical integrations — no ORM, no admin panel, no template engine, no infrastructure provisioning. Those layers compose on top of the fundamentals and live in their own plugin packages or in user code.

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

causeway-0.1.0.tar.gz (43.2 kB view details)

Uploaded Source

Built Distribution

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

causeway-0.1.0-py3-none-any.whl (41.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: causeway-0.1.0.tar.gz
  • Upload date:
  • Size: 43.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for causeway-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4c53c5f6b0fb461f217d43d32c0b725983095fdebb27f24b92218b39ceebe3dc
MD5 6113c85794d149ce0efb08b823cbb328
BLAKE2b-256 f909bce48ed36e59fcc897a532188da7959f081b157c87f90eb6f58a10f90cb3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: causeway-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 41.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for causeway-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7328e12e2437e1a03dbb8ea88e10cdc1cbea699f406cdda2cfca021cd610d053
MD5 72e44eb07a0174d54b73d7babaa349a5
BLAKE2b-256 a81c47af285ae865333b16776ae46f246f5263b3b6b2f429d54dde7436641476

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