mess: UV + settings KISS + fixes

This commit is contained in:
2026-04-24 18:10:55 +02:00
parent 58408d0dbe
commit 610dee365c
14 changed files with 6760 additions and 1683 deletions
+33 -38
View File
@@ -1,4 +1,4 @@
"""Shared configuration loader for bootstrap and CI."""
"""Shared configuration loader — reads build config from pyproject.toml."""
import re
from pathlib import Path
@@ -13,31 +13,25 @@ class BuildConfig(NamedTuple):
alfred_version: str
python_version: str
python_version_short: str
runner: str
image_name: str
service_name: str
librechat_version: str
rag_version: str
uv_version: str
def extract_python_version(version_string: str) -> tuple[str, str]:
"""
Extract Python version from poetry dependency string.
Extract Python version from uv dependency string.
Examples:
"==3.14.2" -> ("3.14.2", "3.14")
"^3.14.2" -> ("3.14.2", "3.14")
"~3.14.2" -> ("3.14.2", "3.14")
"3.14.2" -> ("3.14.2", "3.14")
"^3.14.2" -> ("3.14.2", "3.14")
"""
clean_version = re.sub(r"^[=^~><]+", "", version_string.strip())
parts = clean_version.split(".")
clean = re.sub(r"^[=^~><]+", "", version_string.strip())
parts = clean.split(".")
if len(parts) >= 2:
full_version = clean_version
short_version = f"{parts[0]}.{parts[1]}"
return full_version, short_version
else:
raise ValueError(f"Invalid Python version format: {version_string}")
return clean, f"{parts[0]}.{parts[1]}"
raise ValueError(f"Invalid Python version format: {version_string}")
def load_build_config(base_dir: Path | None = None) -> BuildConfig:
@@ -51,23 +45,21 @@ def load_build_config(base_dir: Path | None = None) -> BuildConfig:
with open(toml_path, "rb") as f:
data = tomllib.load(f)
settings_keys = data["tool"]["alfred"]["settings"]
dependencies = data["tool"]["poetry"]["dependencies"]
alfred_version = data["tool"]["poetry"]["version"]
python_version_full, python_version_short = extract_python_version(
dependencies["python"]
)
project = data["project"]
alfred = data["tool"]["alfred"]
python_full, python_short = extract_python_version(project["requires-python"])
return BuildConfig(
alfred_version=alfred_version,
python_version=python_version_full,
python_version_short=python_version_short,
runner=settings_keys["runner"],
image_name=settings_keys["image_name"],
service_name=settings_keys["service_name"],
librechat_version=settings_keys["librechat_version"],
rag_version=settings_keys["rag_version"],
alfred_version=project["version"],
python_version=python_full,
python_version_short=python_short,
image_name=alfred["image_name"],
service_name=alfred["service_name"],
librechat_version=alfred["librechat_version"],
rag_version=alfred["rag_version"],
uv_version=alfred["uv_version"],
)
@@ -76,14 +68,17 @@ def write_env_make(config: BuildConfig, base_dir: Path | None = None) -> None:
if base_dir is None:
base_dir = Path(__file__).resolve().parent.parent
lines = [
"# Auto-generated from pyproject.toml — do not edit manually",
f"export ALFRED_VERSION={config.alfred_version}",
f"export PYTHON_VERSION={config.python_version}",
f"export PYTHON_VERSION_SHORT={config.python_version_short}",
f"export IMAGE_NAME={config.image_name}",
f"export SERVICE_NAME={config.service_name}",
f"export LIBRECHAT_VERSION={config.librechat_version}",
f"export RAG_VERSION={config.rag_version}",
f"export UV_VERSION={config.uv_version}",
]
env_make_path = base_dir / ".env.make"
with open(env_make_path, "w", encoding="utf-8") as f:
f.write("# Auto-generated from pyproject.toml\n")
f.write(f"export ALFRED_VERSION={config.alfred_version}\n")
f.write(f"export PYTHON_VERSION={config.python_version}\n")
f.write(f"export PYTHON_VERSION_SHORT={config.python_version_short}\n")
f.write(f"export RUNNER={config.runner}\n")
f.write(f"export IMAGE_NAME={config.image_name}\n")
f.write(f"export SERVICE_NAME={config.service_name}\n")
f.write(f"export LIBRECHAT_VERSION={config.librechat_version}\n")
f.write(f"export RAG_VERSION={config.rag_version}\n")
env_make_path.write_text("\n".join(lines) + "\n")