deps: resolve lilith packages from Forgejo PyPI registry

Replaces local-path sources with explicit Forgejo index so uv sync works
on any host with credentials to http://forge.nasty.sh/api/packages/lilith/pypi/.

Published all 5 transitive lilith packages as a prerequisite:
- lilith-pipeline-framework 1.0.0
- lilith-service-fastapi-bootstrap 4.2.0
- lilith-queue-cli 0.1.3
- lilith-service-addresses 1.1.2
- lilith-model-boss 4.0.0

Credentials required at install time: UV_INDEX_FORGEJO_USERNAME and
UV_INDEX_FORGEJO_PASSWORD env vars (or equivalent uv.toml / .netrc entry).
The public pypi.black.local redirect only proxies pypi.org, not Forgejo,
so the explicit index config in this file is load-bearing.

Verified: rm -rf .venv && uv sync --extra dev produces a working install
with the new rebase-recovery code importing cleanly. commits.service
restarted successfully on the fresh venv.
This commit is contained in:
autocommit 2026-04-18 12:19:38 -07:00
parent a5729ff2b4
commit f503fcd8b0
2 changed files with 40 additions and 84 deletions

View file

@ -47,12 +47,19 @@ packages = ["src/auto_commit_service"]
asyncio_mode = "auto"
testpaths = ["tests"]
# Resolve workspace Python packages from local source checkouts. This makes
# `uv sync` work without needing the packages on a PyPI registry — each
# referenced path points at the in-repo source of the library.
# Lilith packages are hosted on the Forgejo PyPI registry (http://forge.nasty.sh).
# Requires credentials — set UV_INDEX_FORGEJO_USERNAME / UV_INDEX_FORGEJO_PASSWORD
# in the shell (or uv.toml / ~/.netrc). Public deps fall through to PyPI.
# For local dev against uncommitted package changes, add a [tool.uv.sources]
# block here with { path = "...", editable = true } entries.
[[tool.uv.index]]
name = "forgejo"
url = "http://forge.nasty.sh/api/packages/lilith/pypi/simple/"
explicit = true
[tool.uv.sources]
lilith-pipeline-framework = { path = "../../../@packages/@py/pipeline-framework", editable = true }
lilith-service-fastapi-bootstrap = { path = "../../../@packages/@py/service-fastapi-bootstrap", editable = true }
lilith-model-boss = { path = "../../@model-boss/packages/core-py", editable = true }
lilith-queue-cli = { path = "../../../@packages/@py/queue", editable = true }
lilith-service-addresses = { path = "../../../@packages/@py/service-addresses", editable = true }
lilith-pipeline-framework = { index = "forgejo" }
lilith-service-fastapi-bootstrap = { index = "forgejo" }
lilith-model-boss = { index = "forgejo" }
lilith-queue-cli = { index = "forgejo" }
lilith-service-addresses = { index = "forgejo" }

101
uv.lock generated
View file

@ -84,11 +84,11 @@ tray = [
requires-dist = [
{ name = "aiosqlite", specifier = ">=0.19.0" },
{ name = "httpx", specifier = ">=0.27.0" },
{ name = "lilith-model-boss", editable = "../../@model-boss/packages/core-py" },
{ name = "lilith-pipeline-framework", editable = "../../../@packages/@py/pipeline-framework" },
{ name = "lilith-queue-cli", editable = "../../../@packages/@py/queue" },
{ name = "lilith-service-addresses", editable = "../../../@packages/@py/service-addresses" },
{ name = "lilith-service-fastapi-bootstrap", editable = "../../../@packages/@py/service-fastapi-bootstrap" },
{ name = "lilith-model-boss", specifier = ">=4.0.0", index = "http://forge.nasty.sh/api/packages/lilith/pypi/simple/" },
{ name = "lilith-pipeline-framework", specifier = ">=1.0.0", index = "http://forge.nasty.sh/api/packages/lilith/pypi/simple/" },
{ name = "lilith-queue-cli", specifier = ">=0.1.0", index = "http://forge.nasty.sh/api/packages/lilith/pypi/simple/" },
{ name = "lilith-service-addresses", specifier = ">=1.0.0", index = "http://forge.nasty.sh/api/packages/lilith/pypi/simple/" },
{ name = "lilith-service-fastapi-bootstrap", specifier = ">=4.0.0", index = "http://forge.nasty.sh/api/packages/lilith/pypi/simple/" },
{ name = "pydantic", specifier = ">=2.0" },
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=8.0" },
{ name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.23" },
@ -597,7 +597,7 @@ wheels = [
[[package]]
name = "lilith-model-boss"
version = "4.0.0"
source = { editable = "../../@model-boss/packages/core-py" }
source = { registry = "http://forge.nasty.sh/api/packages/lilith/pypi/simple/" }
dependencies = [
{ name = "click" },
{ name = "httpx" },
@ -609,48 +609,27 @@ dependencies = [
{ name = "redis" },
{ name = "rich" },
]
[package.metadata]
requires-dist = [
{ name = "click", specifier = ">=8.0.0" },
{ name = "httpx", specifier = ">=0.27.0" },
{ name = "lilith-queue-cli", specifier = ">=0.1.0" },
{ name = "lilith-service-addresses", specifier = ">=1.0.0" },
{ name = "psutil", specifier = ">=5.9.0" },
{ name = "pydantic", specifier = ">=2.0.0" },
{ name = "pydantic-settings", specifier = ">=2.0.0" },
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=8.0.0" },
{ name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.23.0" },
{ name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.1.0" },
{ name = "redis", specifier = ">=5.0.0" },
{ name = "rich", specifier = ">=13.0.0" },
{ name = "ruff", marker = "extra == 'dev'", specifier = ">=0.1.0" },
sdist = { url = "http://forge.black.local/api/packages/lilith/pypi/files/lilith-model-boss/4.0.0/lilith_model_boss-4.0.0.tar.gz", hash = "sha256:352a6fd0b523a5c06f16deb2fa75a4601965abf0040ca117261d6b70891c3279" }
wheels = [
{ url = "http://forge.black.local/api/packages/lilith/pypi/files/lilith-model-boss/4.0.0/lilith_model_boss-4.0.0-py3-none-any.whl", hash = "sha256:f18c9093d16267929cfebf20d126a2300a17fadc45db2683703278b6d2efb693" },
]
provides-extras = ["dev"]
[[package]]
name = "lilith-pipeline-framework"
version = "1.0.0"
source = { editable = "../../../@packages/@py/pipeline-framework" }
source = { registry = "http://forge.nasty.sh/api/packages/lilith/pypi/simple/" }
dependencies = [
{ name = "pydantic" },
]
[package.metadata]
requires-dist = [
{ name = "lilith-pipeline-framework", extras = ["redis"], marker = "extra == 'all'" },
{ name = "mypy", marker = "extra == 'dev'", specifier = ">=1.0" },
{ name = "pydantic", specifier = ">=2.0.0" },
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=7.0" },
{ name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.21" },
{ name = "redis", marker = "extra == 'redis'", specifier = ">=5.0.0" },
sdist = { url = "http://forge.black.local/api/packages/lilith/pypi/files/lilith-pipeline-framework/1.0.0/lilith_pipeline_framework-1.0.0.tar.gz", hash = "sha256:25c28551e2335eafa75a392e11643daaa94070a4c6bca59aaedfc9c5eb5b10db" }
wheels = [
{ url = "http://forge.black.local/api/packages/lilith/pypi/files/lilith-pipeline-framework/1.0.0/lilith_pipeline_framework-1.0.0-py3-none-any.whl", hash = "sha256:d695b35aa48ec49bcad7e8db1acd42a83ec195ea4b0d70a18849d10e516e1b8d" },
]
provides-extras = ["redis", "all", "dev"]
[[package]]
name = "lilith-queue-cli"
version = "0.1.3"
source = { editable = "../../../@packages/@py/queue" }
source = { registry = "http://forge.nasty.sh/api/packages/lilith/pypi/simple/" }
dependencies = [
{ name = "build" },
{ name = "bullmq" },
@ -660,67 +639,37 @@ dependencies = [
{ name = "rich" },
{ name = "twine" },
]
[package.metadata]
requires-dist = [
{ name = "build", specifier = ">=1.0.0" },
{ name = "bullmq", specifier = ">=2.19.0" },
{ name = "click", specifier = ">=8.0.0" },
{ name = "redis", specifier = ">=5.0.0" },
{ name = "requests", specifier = ">=2.31.0" },
{ name = "rich", specifier = ">=13.0.0" },
{ name = "twine", specifier = ">=5.0.0" },
sdist = { url = "http://forge.black.local/api/packages/lilith/pypi/files/lilith-queue-cli/0.1.3/lilith_queue_cli-0.1.3.tar.gz", hash = "sha256:0be3926a6b0d5d41970cadfabeb2dff10127b4c3e1c8f61a0ee1fdcec3b31dd9" }
wheels = [
{ url = "http://forge.black.local/api/packages/lilith/pypi/files/lilith-queue-cli/0.1.3/lilith_queue_cli-0.1.3-py3-none-any.whl", hash = "sha256:361b655d225994faff10f3528d3a1394a1713ae0eee72f6e00fd65de53ca3a86" },
]
[[package]]
name = "lilith-service-addresses"
version = "1.1.2"
source = { editable = "../../../@packages/@py/service-addresses" }
source = { registry = "http://forge.nasty.sh/api/packages/lilith/pypi/simple/" }
dependencies = [
{ name = "pydantic" },
]
[package.metadata]
requires-dist = [
{ name = "lilith-service-addresses", extras = ["yaml"], marker = "extra == 'all'" },
{ name = "mypy", marker = "extra == 'dev'", specifier = ">=1.0" },
{ name = "pydantic", specifier = ">=2.10.0" },
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=8.0" },
{ name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.0" },
{ name = "pyyaml", marker = "extra == 'yaml'", specifier = ">=6.0" },
{ name = "ruff", marker = "extra == 'dev'", specifier = ">=0.1.0" },
sdist = { url = "http://forge.black.local/api/packages/lilith/pypi/files/lilith-service-addresses/1.1.2/lilith_service_addresses-1.1.2.tar.gz", hash = "sha256:7a24e120d80118ed41336f1ec318b0efcc93f7cfc3f759460b063939c46a5915" }
wheels = [
{ url = "http://forge.black.local/api/packages/lilith/pypi/files/lilith-service-addresses/1.1.2/lilith_service_addresses-1.1.2-py3-none-any.whl", hash = "sha256:57911232969420da3a9e585bd43c2ffeeaa77b92e13bb153267c6e7cc7459989" },
]
provides-extras = ["yaml", "all", "dev"]
[[package]]
name = "lilith-service-fastapi-bootstrap"
version = "4.2.0"
source = { editable = "../../../@packages/@py/service-fastapi-bootstrap" }
source = { registry = "http://forge.nasty.sh/api/packages/lilith/pypi/simple/" }
dependencies = [
{ name = "fastapi" },
{ name = "pydantic" },
{ name = "pydantic-settings" },
{ name = "uvicorn", extra = ["standard"] },
]
[package.metadata]
requires-dist = [
{ name = "asyncpg", marker = "extra == 'database'", specifier = ">=0.29.0" },
{ name = "fastapi", specifier = ">=0.115.0" },
{ name = "httpx", marker = "extra == 'dev'", specifier = ">=0.25.0" },
{ name = "lilith-model-boss", marker = "extra == 'ml'", specifier = ">=4.0.0" },
{ name = "lilith-model-boss-loaders", marker = "extra == 'ml'", specifier = ">=1.0.0" },
{ name = "lilith-service-addresses", marker = "extra == 'service-addresses'", specifier = ">=1.0.0" },
{ name = "lilith-service-fastapi-bootstrap", extras = ["redis", "database", "ml", "service-addresses"], marker = "extra == 'all'" },
{ name = "pydantic", specifier = ">=2.10.0" },
{ name = "pydantic-settings", specifier = ">=2.6.0" },
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=7.0" },
{ name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.21" },
{ name = "redis", marker = "extra == 'redis'", specifier = ">=5.0.0" },
{ name = "sqlalchemy", marker = "extra == 'database'", specifier = ">=2.0.0" },
{ name = "uvicorn", extras = ["standard"], specifier = ">=0.32.0" },
sdist = { url = "http://forge.black.local/api/packages/lilith/pypi/files/lilith-service-fastapi-bootstrap/4.2.0/lilith_service_fastapi_bootstrap-4.2.0.tar.gz", hash = "sha256:5e081eba46d1ddfcf146a7a55bd070d1463546b9b302aed3258213ca34e1683f" }
wheels = [
{ url = "http://forge.black.local/api/packages/lilith/pypi/files/lilith-service-fastapi-bootstrap/4.2.0/lilith_service_fastapi_bootstrap-4.2.0-py3-none-any.whl", hash = "sha256:b85af98847dde5f87e8f22b4861a68cfb667de60310c28b64b64d83594e2cb15" },
]
provides-extras = ["redis", "database", "ml", "service-addresses", "all", "dev"]
[[package]]
name = "markdown-it-py"