Prompt
When using uv to build Python extensions via PEP 517 (e.g., maturin), ensure cache invalidation is keyed to the actual build inputs. Configure tool.uv.cache-keys so builds rerun only when the underlying sources for the compiled artifact change—especially Rust sources and Cargo manifests—rather than rebuilding whatever project owns the root pyproject.toml.
Apply this by:
- Adding Rust build inputs to
tool.uv.cache-keys(e.g.,src/**/*.rs,Cargo.toml,Cargo.lock, or the whole crate dir likerustbpe/**). - Including the crate in the workspace so uv associates changes with the correct package (e.g.,
rustbpe = { workspace = true }). - Verifying
uv sync/uv runactually rebuilds the intended artifact when Rust code changes.
Example:
[tool.uv]
# Invalidate build cache when Rust crate inputs change
cache-keys = [
{ file = "pyproject.toml" },
{ file = "rustbpe/**" },
# alternatively, more targeted keys like:
# { file = "src/**/*.rs" },
# { file = "Cargo.toml" },
# { file = "Cargo.lock" }
]
# Ensure the crate is part of the workspace so the right package rebuilds
[rustbpe]
# (or in the relevant uv sources section)
# rustbpe = { workspace = true }