woggioni ec056a15b9 Migrate dependency management from pip to uv
- Add a uv workspace at the repository root covering all packages/kaya-* members
- Replace pip-compile requirements files with a committed uv.lock
- Remove redundant per-package dev extras
- Build and publish artifacts with uv build and uv publish in CI
- Update the README with uv sync/run/build commands
2026-10-21 21:56:08 +08:00
2026-07-15 09:18:48 +08:00
2026-07-15 22:18:45 +08:00
2026-07-15 09:18:48 +08:00

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
S
Description
A lightweight ASGI/RSGI web framework
Readme MIT
434 KiB
Languages
Python 100%