main
CI / Build and publish packages (push) Failing after 14s
kaya
A lightweight ASGI web framework with method-aware routing, path matching, and recursive wildcard support.
Packages
This repository is a monorepo for the Kaya framework. The code is split into independent packages under packages/:
- kaya-core — core routing, HTTP/WS abstractions, and ASGI adapter (
packages/kaya-core/) - kaya-rsgi — RSGI/Granian integration (
packages/kaya-rsgi/) - kaya-session — server-side HTTP session management (
packages/kaya-session/) - kaya-session-redis — Redis-backed session storage (
packages/kaya-session-redis/) - kaya-session-memcache — memcached-backed session storage (
packages/kaya-session-memcache/) - kaya-oidc — OpenID Connect authentication (
packages/kaya-oidc/) - kaya-openapi — automatic OpenAPI specification generation (
packages/kaya-openapi/) - kaya-cors — CORS (Cross-Origin Resource Sharing) support (
packages/kaya-cors/) - kaya-forwarded — trusted-proxy
Forwarded/X-Forwarded-*client address resolution (packages/kaya-forwarded/) - kaya-otel — OpenTelemetry tracing and metrics (
packages/kaya-otel/)
Additional kaya-* packages can be added as new directories under packages/. When adding a new package, also add it to the root pyproject.toml dependencies and [tool.uv.sources] so uv sync installs it.
Build & run locally
This project uses uv for dependency management. From the repository root:
uv sync
This creates .venv, installs all workspace packages in editable mode, and installs the dev dependency group from uv.lock. Use uv lock after changing dependencies, and commit the updated uv.lock.
Run the example:
uv run python example/hello.py
Tests
uv run python -m unittest discover -s packages/kaya-core/tests
uv run python -m unittest discover -s packages/kaya-rsgi/tests
uv run python -m unittest discover -s packages/kaya-session/tests
uv run python -m unittest discover -s packages/kaya-session-redis/tests
uv run python -m unittest discover -s packages/kaya-session-memcache/tests
uv run python -m unittest discover -s packages/kaya-oidc/tests
uv run python -m unittest discover -s packages/kaya-openapi/tests
uv run python -m unittest discover -s packages/kaya-cors/tests
uv run python -m unittest discover -s packages/kaya-forwarded/tests
uv run python -m unittest discover -s packages/kaya-otel/tests
Static analysis
uv run mypy -p kaya.core
uv run mypy -p kaya.rsgi
uv run mypy -p kaya.session
uv run mypy -p kaya.session.redis
uv run mypy -p kaya.session.memcache
uv run mypy -p kaya.oidc
uv run mypy -p kaya.openapi
uv run mypy -p kaya.cors
uv run mypy -p kaya.forwarded
uv run mypy -p kaya.otel
Building packages
uv build --package kaya-core --out-dir packages/kaya-core/dist
uv build --package kaya-rsgi --out-dir packages/kaya-rsgi/dist
uv build --package kaya-session --out-dir packages/kaya-session/dist
uv build --package kaya-session-redis --out-dir packages/kaya-session-redis/dist
uv build --package kaya-session-memcache --out-dir packages/kaya-session-memcache/dist
uv build --package kaya-oidc --out-dir packages/kaya-oidc/dist
uv build --package kaya-openapi --out-dir packages/kaya-openapi/dist
uv build --package kaya-cors --out-dir packages/kaya-cors/dist
uv build --package kaya-forwarded --out-dir packages/kaya-forwarded/dist
uv build --package kaya-otel --out-dir packages/kaya-otel/dist
Languages
Python
100%