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:
2026-10-21 21:56:08 +08:00
parent ea82ac44e9
commit ec056a15b9
17 changed files with 1814 additions and 409 deletions
+58 -56
View File
@@ -5,7 +5,7 @@ on:
- 'release/*'
jobs:
build_pip_package:
name: "Build Pip package"
name: "Build and publish packages"
runs-on: hostinger
timeout-minutes: 30
container:
@@ -18,12 +18,14 @@ jobs:
fetch-tags: true
- uses: actions/setup-python@v6
with:
python-version: '3.14.6'
cache: 'pip'
python-version-file: '.python-version'
- name: Install uv
uses: astral-sh/setup-uv@v10
with:
version: '0.13.4'
enable-cache: true
- name: Install dependencies
run: |
python -m venv .venv
.venv/bin/pip install -r requirements-dev.txt
run: uv sync --locked
- name: Check kaya-core
run: |
.venv/bin/python -m mypy -p kaya.core
@@ -66,81 +68,81 @@ jobs:
.venv/bin/python -m unittest discover -s packages/kaya-otel/tests
- name: Publish kaya-core artifacts
env:
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
run: |
.venv/bin/pyproject-build packages/kaya-core
.venv/bin/twine upload --repository gitea packages/kaya-core/dist/*.whl packages/kaya-core/dist/*.tar.gz
uv build --package kaya-core --out-dir packages/kaya-core/dist --no-sources
uv publish packages/kaya-core/dist/*.whl packages/kaya-core/dist/*.tar.gz
- name: Publish kaya-rsgi artifacts
env:
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
run: |
.venv/bin/pyproject-build packages/kaya-rsgi
.venv/bin/twine upload --repository gitea packages/kaya-rsgi/dist/*.whl packages/kaya-rsgi/dist/*.tar.gz
uv build --package kaya-rsgi --out-dir packages/kaya-rsgi/dist --no-sources
uv publish packages/kaya-rsgi/dist/*.whl packages/kaya-rsgi/dist/*.tar.gz
- name: Publish kaya-session artifacts
env:
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
run: |
.venv/bin/pyproject-build packages/kaya-session
.venv/bin/twine upload --repository gitea packages/kaya-session/dist/*.whl packages/kaya-session/dist/*.tar.gz
uv build --package kaya-session --out-dir packages/kaya-session/dist --no-sources
uv publish packages/kaya-session/dist/*.whl packages/kaya-session/dist/*.tar.gz
- name: Publish kaya-session-memcache artifacts
env:
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
run: |
.venv/bin/pyproject-build packages/kaya-session-memcache
.venv/bin/twine upload --repository gitea packages/kaya-session-memcache/dist/*.whl packages/kaya-session-memcache/dist/*.tar.gz
uv build --package kaya-session-memcache --out-dir packages/kaya-session-memcache/dist --no-sources
uv publish packages/kaya-session-memcache/dist/*.whl packages/kaya-session-memcache/dist/*.tar.gz
- name: Publish kaya-session-redis artifacts
env:
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
run: |
.venv/bin/pyproject-build packages/kaya-session-redis
.venv/bin/twine upload --repository gitea packages/kaya-session-redis/dist/*.whl packages/kaya-session-redis/dist/*.tar.gz
uv build --package kaya-session-redis --out-dir packages/kaya-session-redis/dist --no-sources
uv publish packages/kaya-session-redis/dist/*.whl packages/kaya-session-redis/dist/*.tar.gz
- name: Publish kaya-oidc artifacts
env:
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
run: |
.venv/bin/pyproject-build packages/kaya-oidc
.venv/bin/twine upload --repository gitea packages/kaya-oidc/dist/*.whl packages/kaya-oidc/dist/*.tar.gz
uv build --package kaya-oidc --out-dir packages/kaya-oidc/dist --no-sources
uv publish packages/kaya-oidc/dist/*.whl packages/kaya-oidc/dist/*.tar.gz
- name: Publish kaya-openapi artifacts
env:
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
run: |
.venv/bin/pyproject-build packages/kaya-openapi
.venv/bin/twine upload --repository gitea packages/kaya-openapi/dist/*.whl packages/kaya-openapi/dist/*.tar.gz
uv build --package kaya-openapi --out-dir packages/kaya-openapi/dist --no-sources
uv publish packages/kaya-openapi/dist/*.whl packages/kaya-openapi/dist/*.tar.gz
- name: Publish kaya-cors artifacts
env:
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
run: |
.venv/bin/pyproject-build packages/kaya-cors
.venv/bin/twine upload --repository gitea packages/kaya-cors/dist/*.whl packages/kaya-cors/dist/*.tar.gz
uv build --package kaya-cors --out-dir packages/kaya-cors/dist --no-sources
uv publish packages/kaya-cors/dist/*.whl packages/kaya-cors/dist/*.tar.gz
- name: Publish kaya-forwarded artifacts
env:
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
run: |
.venv/bin/pyproject-build packages/kaya-forwarded
.venv/bin/twine upload --repository gitea packages/kaya-forwarded/dist/*.whl packages/kaya-forwarded/dist/*.tar.gz
uv build --package kaya-forwarded --out-dir packages/kaya-forwarded/dist --no-sources
uv publish packages/kaya-forwarded/dist/*.whl packages/kaya-forwarded/dist/*.tar.gz
- name: Publish kaya-otel artifacts
env:
TWINE_REPOSITORY_URL: ${{ vars.PYPI_REGISTRY_URL }}
TWINE_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
UV_PUBLISH_URL: ${{ vars.PYPI_REGISTRY_URL }}
UV_PUBLISH_USERNAME: ${{ vars.PUBLISHER_USERNAME }}
UV_PUBLISH_PASSWORD: ${{ secrets.PUBLISHER_TOKEN }}
run: |
.venv/bin/pyproject-build packages/kaya-otel
.venv/bin/twine upload --repository gitea packages/kaya-otel/dist/*.whl packages/kaya-otel/dist/*.tar.gz
uv build --package kaya-otel --out-dir packages/kaya-otel/dist --no-sources
uv publish packages/kaya-otel/dist/*.whl packages/kaya-otel/dist/*.tar.gz