- 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
82 lines
3.4 KiB
Markdown
82 lines
3.4 KiB
Markdown
# 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](https://docs.astral.sh/uv/) for dependency management. From the repository root:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
uv run python example/hello.py
|
|
```
|
|
|
|
## Tests
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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
|
|
```
|