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
This commit is contained in:
+58
-56
@@ -5,7 +5,7 @@ on:
|
|||||||
- 'release/*'
|
- 'release/*'
|
||||||
jobs:
|
jobs:
|
||||||
build_pip_package:
|
build_pip_package:
|
||||||
name: "Build Pip package"
|
name: "Build and publish packages"
|
||||||
runs-on: hostinger
|
runs-on: hostinger
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
container:
|
container:
|
||||||
@@ -18,12 +18,14 @@ jobs:
|
|||||||
fetch-tags: true
|
fetch-tags: true
|
||||||
- uses: actions/setup-python@v6
|
- uses: actions/setup-python@v6
|
||||||
with:
|
with:
|
||||||
python-version: '3.14.6'
|
python-version-file: '.python-version'
|
||||||
cache: 'pip'
|
- name: Install uv
|
||||||
|
uses: astral-sh/setup-uv@v10
|
||||||
|
with:
|
||||||
|
version: '0.13.4'
|
||||||
|
enable-cache: true
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: uv sync --locked
|
||||||
python -m venv .venv
|
|
||||||
.venv/bin/pip install -r requirements-dev.txt
|
|
||||||
- name: Check kaya-core
|
- name: Check kaya-core
|
||||||
run: |
|
run: |
|
||||||
.venv/bin/python -m mypy -p kaya.core
|
.venv/bin/python -m mypy -p kaya.core
|
||||||
@@ -66,81 +68,81 @@ jobs:
|
|||||||
.venv/bin/python -m unittest discover -s packages/kaya-otel/tests
|
.venv/bin/python -m unittest discover -s packages/kaya-otel/tests
|
||||||
- name: Publish kaya-core artifacts
|
- name: Publish kaya-core artifacts
|
||||||
env:
|
env:
|
||||||
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
||||||
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
||||||
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
.venv/bin/pyproject-build packages/kaya-core
|
uv build --package kaya-core --out-dir packages/kaya-core/dist --no-sources
|
||||||
.venv/bin/twine upload --repository gitea packages/kaya-core/dist/*.whl packages/kaya-core/dist/*.tar.gz
|
uv publish packages/kaya-core/dist/*.whl packages/kaya-core/dist/*.tar.gz
|
||||||
- name: Publish kaya-rsgi artifacts
|
- name: Publish kaya-rsgi artifacts
|
||||||
env:
|
env:
|
||||||
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
||||||
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
||||||
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
.venv/bin/pyproject-build packages/kaya-rsgi
|
uv build --package kaya-rsgi --out-dir packages/kaya-rsgi/dist --no-sources
|
||||||
.venv/bin/twine upload --repository gitea packages/kaya-rsgi/dist/*.whl packages/kaya-rsgi/dist/*.tar.gz
|
uv publish packages/kaya-rsgi/dist/*.whl packages/kaya-rsgi/dist/*.tar.gz
|
||||||
- name: Publish kaya-session artifacts
|
- name: Publish kaya-session artifacts
|
||||||
env:
|
env:
|
||||||
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
||||||
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
||||||
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
.venv/bin/pyproject-build packages/kaya-session
|
uv build --package kaya-session --out-dir packages/kaya-session/dist --no-sources
|
||||||
.venv/bin/twine upload --repository gitea packages/kaya-session/dist/*.whl packages/kaya-session/dist/*.tar.gz
|
uv publish packages/kaya-session/dist/*.whl packages/kaya-session/dist/*.tar.gz
|
||||||
- name: Publish kaya-session-memcache artifacts
|
- name: Publish kaya-session-memcache artifacts
|
||||||
env:
|
env:
|
||||||
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
||||||
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
||||||
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
.venv/bin/pyproject-build packages/kaya-session-memcache
|
uv build --package kaya-session-memcache --out-dir packages/kaya-session-memcache/dist --no-sources
|
||||||
.venv/bin/twine upload --repository gitea packages/kaya-session-memcache/dist/*.whl packages/kaya-session-memcache/dist/*.tar.gz
|
uv publish packages/kaya-session-memcache/dist/*.whl packages/kaya-session-memcache/dist/*.tar.gz
|
||||||
- name: Publish kaya-session-redis artifacts
|
- name: Publish kaya-session-redis artifacts
|
||||||
env:
|
env:
|
||||||
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
||||||
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
||||||
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
.venv/bin/pyproject-build packages/kaya-session-redis
|
uv build --package kaya-session-redis --out-dir packages/kaya-session-redis/dist --no-sources
|
||||||
.venv/bin/twine upload --repository gitea packages/kaya-session-redis/dist/*.whl packages/kaya-session-redis/dist/*.tar.gz
|
uv publish packages/kaya-session-redis/dist/*.whl packages/kaya-session-redis/dist/*.tar.gz
|
||||||
- name: Publish kaya-oidc artifacts
|
- name: Publish kaya-oidc artifacts
|
||||||
env:
|
env:
|
||||||
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
||||||
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
||||||
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
.venv/bin/pyproject-build packages/kaya-oidc
|
uv build --package kaya-oidc --out-dir packages/kaya-oidc/dist --no-sources
|
||||||
.venv/bin/twine upload --repository gitea packages/kaya-oidc/dist/*.whl packages/kaya-oidc/dist/*.tar.gz
|
uv publish packages/kaya-oidc/dist/*.whl packages/kaya-oidc/dist/*.tar.gz
|
||||||
- name: Publish kaya-openapi artifacts
|
- name: Publish kaya-openapi artifacts
|
||||||
env:
|
env:
|
||||||
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
||||||
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
||||||
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
.venv/bin/pyproject-build packages/kaya-openapi
|
uv build --package kaya-openapi --out-dir packages/kaya-openapi/dist --no-sources
|
||||||
.venv/bin/twine upload --repository gitea packages/kaya-openapi/dist/*.whl packages/kaya-openapi/dist/*.tar.gz
|
uv publish packages/kaya-openapi/dist/*.whl packages/kaya-openapi/dist/*.tar.gz
|
||||||
- name: Publish kaya-cors artifacts
|
- name: Publish kaya-cors artifacts
|
||||||
env:
|
env:
|
||||||
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
||||||
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
||||||
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
.venv/bin/pyproject-build packages/kaya-cors
|
uv build --package kaya-cors --out-dir packages/kaya-cors/dist --no-sources
|
||||||
.venv/bin/twine upload --repository gitea packages/kaya-cors/dist/*.whl packages/kaya-cors/dist/*.tar.gz
|
uv publish packages/kaya-cors/dist/*.whl packages/kaya-cors/dist/*.tar.gz
|
||||||
- name: Publish kaya-forwarded artifacts
|
- name: Publish kaya-forwarded artifacts
|
||||||
env:
|
env:
|
||||||
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
||||||
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
||||||
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
.venv/bin/pyproject-build packages/kaya-forwarded
|
uv build --package kaya-forwarded --out-dir packages/kaya-forwarded/dist --no-sources
|
||||||
.venv/bin/twine upload --repository gitea packages/kaya-forwarded/dist/*.whl packages/kaya-forwarded/dist/*.tar.gz
|
uv publish packages/kaya-forwarded/dist/*.whl packages/kaya-forwarded/dist/*.tar.gz
|
||||||
- name: Publish kaya-otel artifacts
|
- name: Publish kaya-otel artifacts
|
||||||
env:
|
env:
|
||||||
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
|
||||||
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
|
||||||
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
.venv/bin/pyproject-build packages/kaya-otel
|
uv build --package kaya-otel --out-dir packages/kaya-otel/dist --no-sources
|
||||||
.venv/bin/twine upload --repository gitea packages/kaya-otel/dist/*.whl packages/kaya-otel/dist/*.tar.gz
|
uv publish packages/kaya-otel/dist/*.whl packages/kaya-otel/dist/*.tar.gz
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
3.14.6
|
||||||
@@ -17,69 +17,65 @@ This repository is a monorepo for the Kaya framework. The code is split into ind
|
|||||||
- **kaya-forwarded** — trusted-proxy `Forwarded`/`X-Forwarded-*` client address resolution (`packages/kaya-forwarded/`)
|
- **kaya-forwarded** — trusted-proxy `Forwarded`/`X-Forwarded-*` client address resolution (`packages/kaya-forwarded/`)
|
||||||
- **kaya-otel** — OpenTelemetry tracing and metrics (`packages/kaya-otel/`)
|
- **kaya-otel** — OpenTelemetry tracing and metrics (`packages/kaya-otel/`)
|
||||||
|
|
||||||
Additional `kaya-*` packages can be added as new directories under `packages/`.
|
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
|
## Build & run locally
|
||||||
|
|
||||||
Install dev dependencies:
|
This project uses [uv](https://docs.astral.sh/uv/) for dependency management. From the repository root:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pip install --index-url https://gitea.woggioni.net/api/packages/woggioni/pypi/simple --extra-index-url https://pypi.org/simple -r requirements-dev.txt
|
uv sync
|
||||||
```
|
```
|
||||||
|
|
||||||
Install the packages in development mode:
|
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`.
|
||||||
|
|
||||||
```bash
|
|
||||||
pip install -e packages/kaya-core -e packages/kaya-rsgi -e packages/kaya-session -e packages/kaya-session-redis -e packages/kaya-session-memcache -e packages/kaya-oidc -e packages/kaya-openapi -e packages/kaya-cors -e packages/kaya-forwarded -e packages/kaya-otel
|
|
||||||
```
|
|
||||||
|
|
||||||
Run the example:
|
Run the example:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python example/hello.py
|
uv run python example/hello.py
|
||||||
```
|
```
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python -m unittest discover -s packages/kaya-core/tests
|
uv run python -m unittest discover -s packages/kaya-core/tests
|
||||||
python -m unittest discover -s packages/kaya-rsgi/tests
|
uv run python -m unittest discover -s packages/kaya-rsgi/tests
|
||||||
python -m unittest discover -s packages/kaya-session/tests
|
uv run python -m unittest discover -s packages/kaya-session/tests
|
||||||
python -m unittest discover -s packages/kaya-session-redis/tests
|
uv run python -m unittest discover -s packages/kaya-session-redis/tests
|
||||||
python -m unittest discover -s packages/kaya-session-memcache/tests
|
uv run python -m unittest discover -s packages/kaya-session-memcache/tests
|
||||||
python -m unittest discover -s packages/kaya-oidc/tests
|
uv run python -m unittest discover -s packages/kaya-oidc/tests
|
||||||
python -m unittest discover -s packages/kaya-openapi/tests
|
uv run python -m unittest discover -s packages/kaya-openapi/tests
|
||||||
python -m unittest discover -s packages/kaya-cors/tests
|
uv run python -m unittest discover -s packages/kaya-cors/tests
|
||||||
python -m unittest discover -s packages/kaya-forwarded/tests
|
uv run python -m unittest discover -s packages/kaya-forwarded/tests
|
||||||
python -m unittest discover -s packages/kaya-otel/tests
|
uv run python -m unittest discover -s packages/kaya-otel/tests
|
||||||
```
|
```
|
||||||
|
|
||||||
## Static analysis
|
## Static analysis
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mypy -p kaya.core
|
uv run mypy -p kaya.core
|
||||||
mypy -p kaya.rsgi
|
uv run mypy -p kaya.rsgi
|
||||||
mypy -p kaya.session
|
uv run mypy -p kaya.session
|
||||||
mypy -p kaya.session.redis
|
uv run mypy -p kaya.session.redis
|
||||||
mypy -p kaya.session.memcache
|
uv run mypy -p kaya.session.memcache
|
||||||
mypy -p kaya.oidc
|
uv run mypy -p kaya.oidc
|
||||||
mypy -p kaya.openapi
|
uv run mypy -p kaya.openapi
|
||||||
mypy -p kaya.cors
|
uv run mypy -p kaya.cors
|
||||||
mypy -p kaya.forwarded
|
uv run mypy -p kaya.forwarded
|
||||||
mypy -p kaya.otel
|
uv run mypy -p kaya.otel
|
||||||
```
|
```
|
||||||
|
|
||||||
## Building packages
|
## Building packages
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python -m build packages/kaya-core
|
uv build --package kaya-core --out-dir packages/kaya-core/dist
|
||||||
python -m build packages/kaya-rsgi
|
uv build --package kaya-rsgi --out-dir packages/kaya-rsgi/dist
|
||||||
python -m build packages/kaya-session
|
uv build --package kaya-session --out-dir packages/kaya-session/dist
|
||||||
python -m build packages/kaya-session-redis
|
uv build --package kaya-session-redis --out-dir packages/kaya-session-redis/dist
|
||||||
python -m build packages/kaya-session-memcache
|
uv build --package kaya-session-memcache --out-dir packages/kaya-session-memcache/dist
|
||||||
python -m build packages/kaya-oidc
|
uv build --package kaya-oidc --out-dir packages/kaya-oidc/dist
|
||||||
python -m build packages/kaya-openapi
|
uv build --package kaya-openapi --out-dir packages/kaya-openapi/dist
|
||||||
python -m build packages/kaya-cors
|
uv build --package kaya-cors --out-dir packages/kaya-cors/dist
|
||||||
python -m build packages/kaya-forwarded
|
uv build --package kaya-forwarded --out-dir packages/kaya-forwarded/dist
|
||||||
python -m build packages/kaya-otel
|
uv build --package kaya-otel --out-dir packages/kaya-otel/dist
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -26,11 +26,6 @@ dependencies = [
|
|||||||
"typing-extensions",
|
"typing-extensions",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
|
||||||
dev = [
|
|
||||||
"build", "mypy", "ipdb", "twine", "httpx", "httpx-ws"
|
|
||||||
]
|
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
"Homepage" = "https://github.com/woggioni/kaya"
|
"Homepage" = "https://github.com/woggioni/kaya"
|
||||||
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
||||||
|
|||||||
@@ -25,11 +25,6 @@ dependencies = [
|
|||||||
"kaya-core",
|
"kaya-core",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
|
||||||
dev = [
|
|
||||||
"build", "mypy", "ipdb", "twine", "httpx", "httpx-ws", "kaya-rsgi"
|
|
||||||
]
|
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
"Homepage" = "https://github.com/woggioni/kaya"
|
"Homepage" = "https://github.com/woggioni/kaya"
|
||||||
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
||||||
|
|||||||
@@ -25,11 +25,6 @@ dependencies = [
|
|||||||
"kaya-core",
|
"kaya-core",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
|
||||||
dev = [
|
|
||||||
"build", "mypy", "ipdb", "twine", "httpx", "httpx-ws", "kaya-rsgi"
|
|
||||||
]
|
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
"Homepage" = "https://github.com/woggioni/kaya"
|
"Homepage" = "https://github.com/woggioni/kaya"
|
||||||
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
||||||
|
|||||||
@@ -28,11 +28,6 @@ dependencies = [
|
|||||||
"PyJWT[crypto]",
|
"PyJWT[crypto]",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
|
||||||
dev = [
|
|
||||||
"build", "mypy", "ipdb", "twine", "httpx", "httpx-ws"
|
|
||||||
]
|
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
"Homepage" = "https://github.com/woggioni/kaya"
|
"Homepage" = "https://github.com/woggioni/kaya"
|
||||||
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
||||||
|
|||||||
@@ -25,11 +25,6 @@ dependencies = [
|
|||||||
"kaya-core",
|
"kaya-core",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
|
||||||
dev = [
|
|
||||||
"build", "mypy", "ipdb", "twine", "httpx", "httpx-ws"
|
|
||||||
]
|
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
"Homepage" = "https://github.com/woggioni/kaya"
|
"Homepage" = "https://github.com/woggioni/kaya"
|
||||||
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
||||||
|
|||||||
@@ -27,11 +27,6 @@ dependencies = [
|
|||||||
"opentelemetry-exporter-otlp-proto-http",
|
"opentelemetry-exporter-otlp-proto-http",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
|
||||||
dev = [
|
|
||||||
"build", "mypy", "ipdb", "twine", "httpx", "httpx-ws", "kaya-rsgi"
|
|
||||||
]
|
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
"Homepage" = "https://github.com/woggioni/kaya"
|
"Homepage" = "https://github.com/woggioni/kaya"
|
||||||
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
||||||
|
|||||||
@@ -27,11 +27,6 @@ dependencies = [
|
|||||||
"pwo",
|
"pwo",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
|
||||||
dev = [
|
|
||||||
"build", "mypy", "ipdb", "twine"
|
|
||||||
]
|
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
"Homepage" = "https://github.com/woggioni/kaya"
|
"Homepage" = "https://github.com/woggioni/kaya"
|
||||||
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
||||||
|
|||||||
@@ -26,11 +26,6 @@ dependencies = [
|
|||||||
"aiomcache>=0.8",
|
"aiomcache>=0.8",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
|
||||||
dev = [
|
|
||||||
"build", "mypy", "ipdb", "twine"
|
|
||||||
]
|
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
"Homepage" = "https://github.com/woggioni/kaya"
|
"Homepage" = "https://github.com/woggioni/kaya"
|
||||||
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
||||||
|
|||||||
@@ -26,11 +26,6 @@ dependencies = [
|
|||||||
"redis>=5.0",
|
"redis>=5.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
|
||||||
dev = [
|
|
||||||
"build", "mypy", "ipdb", "twine", "fakeredis"
|
|
||||||
]
|
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
"Homepage" = "https://github.com/woggioni/kaya"
|
"Homepage" = "https://github.com/woggioni/kaya"
|
||||||
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
||||||
|
|||||||
@@ -26,11 +26,6 @@ dependencies = [
|
|||||||
"pwo",
|
"pwo",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
|
||||||
dev = [
|
|
||||||
"build", "mypy", "ipdb", "twine", "httpx", "httpx-ws"
|
|
||||||
]
|
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
"Homepage" = "https://github.com/woggioni/kaya"
|
"Homepage" = "https://github.com/woggioni/kaya"
|
||||||
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
"Bug Tracker" = "https://github.com/woggioni/kaya/issues"
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
[project]
|
||||||
|
name = "kaya"
|
||||||
|
version = "0.0.0"
|
||||||
|
description = "Development workspace for the Kaya lightweight ASGI web framework"
|
||||||
|
requires-python = ">=3.10"
|
||||||
|
dependencies = [
|
||||||
|
"kaya-core",
|
||||||
|
"kaya-rsgi",
|
||||||
|
"kaya-session",
|
||||||
|
"kaya-session-redis",
|
||||||
|
"kaya-session-memcache",
|
||||||
|
"kaya-oidc",
|
||||||
|
"kaya-openapi",
|
||||||
|
"kaya-cors",
|
||||||
|
"kaya-forwarded",
|
||||||
|
"kaya-otel",
|
||||||
|
]
|
||||||
|
|
||||||
|
[dependency-groups]
|
||||||
|
dev = [
|
||||||
|
"fakeredis",
|
||||||
|
"mypy",
|
||||||
|
"ipdb",
|
||||||
|
"httpx",
|
||||||
|
"httpx-ws",
|
||||||
|
]
|
||||||
|
|
||||||
|
[tool.uv]
|
||||||
|
package = false
|
||||||
|
required-version = ">=0.13"
|
||||||
|
|
||||||
|
[tool.uv.workspace]
|
||||||
|
members = ["packages/*"]
|
||||||
|
|
||||||
|
[tool.uv.sources]
|
||||||
|
kaya-core = { workspace = true }
|
||||||
|
kaya-rsgi = { workspace = true }
|
||||||
|
kaya-session = { workspace = true }
|
||||||
|
kaya-session-redis = { workspace = true }
|
||||||
|
kaya-session-memcache = { workspace = true }
|
||||||
|
kaya-oidc = { workspace = true }
|
||||||
|
kaya-openapi = { workspace = true }
|
||||||
|
kaya-cors = { workspace = true }
|
||||||
|
kaya-forwarded = { workspace = true }
|
||||||
|
kaya-otel = { workspace = true }
|
||||||
|
pwo = { index = "gitea" }
|
||||||
|
|
||||||
|
[[tool.uv.index]]
|
||||||
|
name = "gitea"
|
||||||
|
url = "https://gitea.woggioni.net/api/packages/woggioni/pypi/simple"
|
||||||
|
explicit = true
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
kaya-core @ file:./packages/kaya-core
|
|
||||||
kaya-rsgi @ file:./packages/kaya-rsgi
|
|
||||||
kaya-session @ file:./packages/kaya-session
|
|
||||||
kaya-session-redis @ file:./packages/kaya-session-redis
|
|
||||||
kaya-session-memcache @ file:./packages/kaya-session-memcache
|
|
||||||
kaya-oidc @ file:./packages/kaya-oidc
|
|
||||||
kaya-openapi @ file:./packages/kaya-openapi
|
|
||||||
kaya-cors @ file:./packages/kaya-cors
|
|
||||||
kaya-forwarded @ file:./packages/kaya-forwarded
|
|
||||||
kaya-otel @ file:./packages/kaya-otel
|
|
||||||
build
|
|
||||||
fakeredis
|
|
||||||
mypy
|
|
||||||
ipdb
|
|
||||||
twine
|
|
||||||
httpx
|
|
||||||
httpx-ws
|
|
||||||
@@ -1,247 +0,0 @@
|
|||||||
#
|
|
||||||
# This file is autogenerated by pip-compile with Python 3.14
|
|
||||||
# by the following command:
|
|
||||||
#
|
|
||||||
# pip-compile --allow-unsafe --extra-index-url=https://pypi.org/simple --index-url=https://gitea.woggioni.net/api/packages/woggioni/pypi/simple --output-file=requirements-dev.txt requirements-dev.in
|
|
||||||
#
|
|
||||||
--index-url https://gitea.woggioni.net/api/packages/woggioni/pypi/simple
|
|
||||||
--extra-index-url https://pypi.org/simple
|
|
||||||
|
|
||||||
aiomcache==0.8.2
|
|
||||||
# via kaya-session-memcache
|
|
||||||
anyio==4.14.2
|
|
||||||
# via
|
|
||||||
# httpx
|
|
||||||
# httpx-ws
|
|
||||||
ast-serialize==0.6.0
|
|
||||||
# via mypy
|
|
||||||
asttokens==3.0.2
|
|
||||||
# via stack-data
|
|
||||||
build==1.5.0
|
|
||||||
# via -r requirements-dev.in
|
|
||||||
certifi==2026.6.17
|
|
||||||
# via
|
|
||||||
# httpcore
|
|
||||||
# httpx
|
|
||||||
# requests
|
|
||||||
cffi==2.1.0
|
|
||||||
# via cryptography
|
|
||||||
charset-normalizer==3.4.9
|
|
||||||
# via requests
|
|
||||||
click==8.4.2
|
|
||||||
# via granian
|
|
||||||
cryptography==49.0.0
|
|
||||||
# via
|
|
||||||
# pyjwt
|
|
||||||
# secretstorage
|
|
||||||
decorator==5.3.1
|
|
||||||
# via
|
|
||||||
# ipdb
|
|
||||||
# ipython
|
|
||||||
docutils==0.23
|
|
||||||
# via readme-renderer
|
|
||||||
executing==2.2.1
|
|
||||||
# via stack-data
|
|
||||||
fakeredis==2.36.2
|
|
||||||
# via -r requirements-dev.in
|
|
||||||
googleapis-common-protos==1.75.3
|
|
||||||
# via opentelemetry-exporter-otlp-proto-http
|
|
||||||
granian==2.7.9
|
|
||||||
# via kaya-rsgi
|
|
||||||
h11==0.16.0
|
|
||||||
# via
|
|
||||||
# httpcore
|
|
||||||
# wsproto
|
|
||||||
httpcore==1.0.9
|
|
||||||
# via
|
|
||||||
# httpx
|
|
||||||
# httpx-ws
|
|
||||||
httpx==0.28.1
|
|
||||||
# via
|
|
||||||
# -r requirements-dev.in
|
|
||||||
# httpx-ws
|
|
||||||
# kaya-oidc
|
|
||||||
httpx-ws==0.9.0
|
|
||||||
# via -r requirements-dev.in
|
|
||||||
id==1.6.1
|
|
||||||
# via twine
|
|
||||||
idna==3.18
|
|
||||||
# via
|
|
||||||
# anyio
|
|
||||||
# httpx
|
|
||||||
# requests
|
|
||||||
ipdb==0.13.13
|
|
||||||
# via -r requirements-dev.in
|
|
||||||
ipython==9.15.0
|
|
||||||
# via ipdb
|
|
||||||
ipython-pygments-lexers==1.1.1
|
|
||||||
# via ipython
|
|
||||||
jaraco-classes==3.4.0
|
|
||||||
# via keyring
|
|
||||||
jaraco-context==6.1.2
|
|
||||||
# via keyring
|
|
||||||
jaraco-functools==4.6.0
|
|
||||||
# via keyring
|
|
||||||
jedi==0.20.0
|
|
||||||
# via ipython
|
|
||||||
jeepney==0.9.0
|
|
||||||
# via
|
|
||||||
# keyring
|
|
||||||
# secretstorage
|
|
||||||
file:./packages/kaya-core
|
|
||||||
# via
|
|
||||||
# -r requirements-dev.in
|
|
||||||
# kaya-cors
|
|
||||||
# kaya-forwarded
|
|
||||||
# kaya-oidc
|
|
||||||
# kaya-openapi
|
|
||||||
# kaya-otel
|
|
||||||
# kaya-rsgi
|
|
||||||
# kaya-session
|
|
||||||
file:./packages/kaya-cors
|
|
||||||
# via -r requirements-dev.in
|
|
||||||
file:./packages/kaya-forwarded
|
|
||||||
# via -r requirements-dev.in
|
|
||||||
file:./packages/kaya-oidc
|
|
||||||
# via -r requirements-dev.in
|
|
||||||
file:./packages/kaya-openapi
|
|
||||||
# via -r requirements-dev.in
|
|
||||||
file:./packages/kaya-otel
|
|
||||||
# via -r requirements-dev.in
|
|
||||||
file:./packages/kaya-rsgi
|
|
||||||
# via -r requirements-dev.in
|
|
||||||
file:./packages/kaya-session
|
|
||||||
# via
|
|
||||||
# -r requirements-dev.in
|
|
||||||
# kaya-oidc
|
|
||||||
# kaya-session-memcache
|
|
||||||
# kaya-session-redis
|
|
||||||
file:./packages/kaya-session-memcache
|
|
||||||
# via -r requirements-dev.in
|
|
||||||
file:./packages/kaya-session-redis
|
|
||||||
# via -r requirements-dev.in
|
|
||||||
keyring==25.7.0
|
|
||||||
# via twine
|
|
||||||
librt==0.13.0
|
|
||||||
# via mypy
|
|
||||||
markdown-it-py==4.2.0
|
|
||||||
# via rich
|
|
||||||
matplotlib-inline==0.2.2
|
|
||||||
# via ipython
|
|
||||||
mdurl==0.1.2
|
|
||||||
# via markdown-it-py
|
|
||||||
more-itertools==11.1.0
|
|
||||||
# via
|
|
||||||
# jaraco-classes
|
|
||||||
# jaraco-functools
|
|
||||||
mypy==2.3.0
|
|
||||||
# via -r requirements-dev.in
|
|
||||||
mypy-extensions==1.1.0
|
|
||||||
# via mypy
|
|
||||||
nh3==0.3.6
|
|
||||||
# via readme-renderer
|
|
||||||
opentelemetry-api==1.44.0
|
|
||||||
# via
|
|
||||||
# opentelemetry-exporter-otlp-proto-http
|
|
||||||
# opentelemetry-sdk
|
|
||||||
# opentelemetry-semantic-conventions
|
|
||||||
opentelemetry-exporter-otlp-proto-common==1.44.0
|
|
||||||
# via opentelemetry-exporter-otlp-proto-http
|
|
||||||
opentelemetry-exporter-otlp-proto-http==1.44.0
|
|
||||||
# via kaya-otel
|
|
||||||
opentelemetry-proto==1.44.0
|
|
||||||
# via
|
|
||||||
# opentelemetry-exporter-otlp-proto-common
|
|
||||||
# opentelemetry-exporter-otlp-proto-http
|
|
||||||
opentelemetry-sdk==1.44.0
|
|
||||||
# via
|
|
||||||
# kaya-otel
|
|
||||||
# opentelemetry-exporter-otlp-proto-http
|
|
||||||
opentelemetry-semantic-conventions==0.65b0
|
|
||||||
# via opentelemetry-sdk
|
|
||||||
packaging==26.2
|
|
||||||
# via
|
|
||||||
# build
|
|
||||||
# twine
|
|
||||||
parso==0.8.7
|
|
||||||
# via jedi
|
|
||||||
pathspec==1.1.1
|
|
||||||
# via mypy
|
|
||||||
pexpect==4.9.0
|
|
||||||
# via ipython
|
|
||||||
prompt-toolkit==3.0.52
|
|
||||||
# via ipython
|
|
||||||
protobuf==7.36.2
|
|
||||||
# via
|
|
||||||
# googleapis-common-protos
|
|
||||||
# opentelemetry-proto
|
|
||||||
psutil==7.2.2
|
|
||||||
# via ipython
|
|
||||||
ptyprocess==0.7.0
|
|
||||||
# via pexpect
|
|
||||||
pure-eval==0.2.3
|
|
||||||
# via stack-data
|
|
||||||
pwo==0.1.2
|
|
||||||
# via
|
|
||||||
# kaya-core
|
|
||||||
# kaya-rsgi
|
|
||||||
# kaya-session
|
|
||||||
pycparser==3.0
|
|
||||||
# via cffi
|
|
||||||
pygments==2.20.0
|
|
||||||
# via
|
|
||||||
# ipython
|
|
||||||
# ipython-pygments-lexers
|
|
||||||
# readme-renderer
|
|
||||||
# rich
|
|
||||||
pyjwt[crypto]==2.13.0
|
|
||||||
# via kaya-oidc
|
|
||||||
pyproject-hooks==1.2.0
|
|
||||||
# via build
|
|
||||||
readme-renderer==45.0
|
|
||||||
# via twine
|
|
||||||
redis==8.0.1
|
|
||||||
# via
|
|
||||||
# fakeredis
|
|
||||||
# kaya-session-redis
|
|
||||||
requests==2.34.2
|
|
||||||
# via
|
|
||||||
# opentelemetry-exporter-otlp-proto-http
|
|
||||||
# requests-toolbelt
|
|
||||||
# twine
|
|
||||||
requests-toolbelt==1.0.0
|
|
||||||
# via twine
|
|
||||||
rfc3986==2.0.0
|
|
||||||
# via twine
|
|
||||||
rich==15.0.0
|
|
||||||
# via twine
|
|
||||||
secretstorage==3.5.0
|
|
||||||
# via keyring
|
|
||||||
sortedcontainers==2.4.0
|
|
||||||
# via fakeredis
|
|
||||||
stack-data==0.6.3
|
|
||||||
# via ipython
|
|
||||||
traitlets==5.15.1
|
|
||||||
# via
|
|
||||||
# ipython
|
|
||||||
# matplotlib-inline
|
|
||||||
twine==6.2.0
|
|
||||||
# via -r requirements-dev.in
|
|
||||||
typing-extensions==4.16.0
|
|
||||||
# via
|
|
||||||
# kaya-core
|
|
||||||
# mypy
|
|
||||||
# opentelemetry-api
|
|
||||||
# opentelemetry-exporter-otlp-proto-http
|
|
||||||
# opentelemetry-sdk
|
|
||||||
# opentelemetry-semantic-conventions
|
|
||||||
# pwo
|
|
||||||
urllib3==2.7.0
|
|
||||||
# via
|
|
||||||
# id
|
|
||||||
# requests
|
|
||||||
# twine
|
|
||||||
wcwidth==0.8.2
|
|
||||||
# via prompt-toolkit
|
|
||||||
wsproto==1.3.2
|
|
||||||
# via httpx-ws
|
|
||||||
Reference in New Issue
Block a user