Use this skill when updating dependencies managed by uv: bumping a package version, upgrading the uv tool itself, updating torch/CUDA stack, switching transformers version, or regenerating the lockfile. Trigger: 'update dependency', 'bump version', 'upgrade uv', 'update torch', 'update lockfile', 'uv sync fails'.
69
83%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Critical
Do not install without reviewing
Read .agents/knowledge/uv.md for the full dependency architecture. The key things that make VeOmni's uv setup non-trivial:
gpu / npu / npu_aarch64, mutually exclusive,
each a complete supersetuv is pinned to a specific version. Update all three locations together:
pyproject.toml -> [tool.uv] -> required-version = "==X.Y.Z"docker/cuda/Dockerfile.cu130 -> COPY --from=ghcr.io/astral-sh/uv:X.Y.Zdocker/ascend/Dockerfile.ascend_* -> same pattern (if present)Then regenerate the lockfile:
uv lock
uv sync --extra gpu --devVerify the lockfile diff is reasonable (git diff uv.lock — should only show version changes, not wholesale rewrites).
pyproject.toml under [project.dependencies] or the relevant [project.optional-dependencies] extra.uv lock
uv sync --extra gpu --devpytest tests/pyproject.toml and uv.lock together.This is the most complex update. torch versions are pinned in multiple places:
For GPU (gpu extra):
pyproject.toml -> [project.optional-dependencies] -> gpu listpyproject.toml -> [tool.uv] -> override-dependencies (the extra == 'gpu' entries)pyproject.toml -> [tool.uv.sources] -> torch (direct wheel URL — must update to matching wheel)torchvision, torchaudio, torchcodec, nvidia-cusparselt-cu13, nvidia-nccl-cu13, nvidia-cutlass-dslFor NPU (npu / npu_aarch64 extras):
+cpu suffix or no suffixSteps:
pyproject.toml (extras, overrides, sources)flash-attn (cp311 + cp312) and flash-attn-3 are pinned to Luosuu prebuilt wheel URLs in [tool.uv.sources] (cu130/torch2.11/cxx11abi=true). Bumping torch / Python / cuda requires a matching Luosuu release — see https://github.com/Luosuu/flash-attention3-wheels/releases.flash-attn-4 and flash-qla source-build from git pins; torch ABI bumps may need bumping the git revs. flash-qla's [[tool.uv.dependency-metadata]] block mirrors its install_requires (tilelang==0.1.8, apache-tvm-ffi==0.1.9); refresh the pins if upstream bumps them.torchcodec version if needed (compatibility note in pyproject.toml)uv lock
uv sync --extra gpu --devpytest tests/transformers is pinned by the transformers-stable dependency group
(pyproject.toml -> [dependency-groups] transformers-stable), which is
listed in [tool.uv] default-groups so uv sync installs it automatically.
Bump within v5 (e.g. 5.2.0 → 5.3.0):
[dependency-groups] transformers-stable.uv lock
uv sync --extra gpu --devveomni/ accordingly. Forward-looking
guards may be expressed with
is_transformers_version_greater_or_equal_to() from
veomni/utils/import_utils.py.pytest tests/models/ tests/e2e/make patchgen (with the target transformers installed)When uv.lock is out of sync or corrupt:
uv lock
uv sync --extra gpu --devIf uv lock fails due to version conflicts, check:
[tool.uv] -> conflicts declarationsoverride-dependencies markersdocker/ Dockerfiles, otherwise CI builds will fail.torch but not torchvision/torchaudio/torchcodec to matching versions causes import errors.uv.lock together. Docker builds use --locked which requires the lockfile to match.extra == 'gpu' markers in overrides are critical. Removing them causes uv to download wrong torch variants from PyPI.flash-attn and flash-attn-3 are listed under no-build-isolation-package. They require torch to be installed first. If sync fails, try uv sync without these extras first, then add them.9ff4858
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.