SuperAPI AI 工具集

uv-build

编程与开发

查看项目

更新于 10-16 07:24

技能介绍

uv-build 是 nvidia-nemo/safe-synthesizer 仓库中面向包管理与构建流程的技能,主要用 uv 处理依赖、索引与构建,涉及依赖组、可选 extra、PyTorch 专用索引和 hatch 构建系统。

用途:管理该仓库的 Python 依赖与构建产物,通过 uv 完成同步、锁定、添加依赖,并区分 CPU/CUDA 等环境变体。

初始化命令:mise run setup && mise run bootstrap-nss cpu;可选变体包括 dev、cpu、cu129、cuda(cu129 别名)、engine。底层使用 uv sync --frozen --extra <extra> [--extra engine] --group dev。

主要能力:定义多个 extra,包括 cpu、cu129、engine、microservices;cpu 与 cu129 互斥,配置在 [tool.uv] conflicts 中。PyTorch wheel 来自专用索引而非 PyPI,例如 pytorch-cpu、pytorch-cu129、nv-shared-pypi-local、flashinfer-jit-cache、nvidia-pypi-public;所有索引均设置 explicit = true,仅在 [tool.uv.sources] 映射时使用。

依赖管理:基础依赖用 uv add <package>;依赖组用 uv add --group dev <package>、uv add --group test <package>;可选 extra 需手动编辑 pyproject.toml 后执行 uv lock。依赖组包括 dev(含 docs、test 及 ipywidgets、pandas-stubs、prek、typer 等)、test(pytest 及插件)、docs(mkdocs-material、mkdocstrings 等)。

运行工具:始终使用 uv run,例如 uv run pytest ...、uv run --frozen pytest ...、uv run --group docs mkdocs serve、uv run --frozen --no-project --group docs mkdocs build。

构建与版本:构建 wheel 用 mise run build-wheel 或 uv build --wheel;发布内部制品用 mise run publish:internal。版本由 uv-dynamic-versioning 读取 git tag(PEP 440),浅克隆回退为 0.0.0。构建后端为 hatchling,wheel 目标 packages = ["src/nemo_safe_synthesizer"]。

关键 pyproject.toml 配置段: [tool.uv] 负责版本、缓存键、冲突、覆盖、环境;[tool.uv.sources] 按 extra/标记映射包到索引;[[tool.uv.index]] 定义命名索引;[build-system] 为 hatchling + uv-dynamic-versioning;[tool.hatch.version] 来源为 uv-dynamic-versioning;[tool.uv-dynamic-versioning] 使用 Git VCS、PEP 440、回退版本;[tool.vendor-package] 用于向 NMP SDK 打包,目标为 beta.safe_synthesizer,被 prek 工具在 NMP 同步时使用。

约定与限制:禁止使用 pip,始终用 uv;CI 与 Make 目标使用 --frozen 防止更新 lock;用 uv run 运行工具;uv 版本固定在 .mise.toml;extra 需手动编辑 pyproject.toml 后 uv lock;基础/组依赖使用 uv add。其他细节如具体版本号、依赖完整列表、平台限制等资料未完全提供。