Python with uv
Use the repository's existing Python and verification choices first; use uv for dependency and execution operations unless a documented repository command wraps them.
Choose the Mode
- Project: a
pyproject.toml, lockfile, shared package, or local imports define an environment. - Standalone script: one file or stdin should run without creating a project.
- Use
--no-projectonly when the invocation must ignore the surrounding project and does not import its code.
Project Workflow
- Inspect
pyproject.toml, lockfiles, repository instructions, and existing tools. - Initialize only genuinely new projects with
uv init. Add or remove dependencies withuv addanduv remove; useuv syncto reconcile declared state. - Run Python and project tools through
uv runor the repository's documented wrapper. - Preserve the established test, lint, type-check, coverage, and hook stack. For a new project with no stated requirements, add only tools that serve the requested quality bar.
- Update and inspect the lockfile when dependency inputs change.
- Run the narrow checks needed during iteration, then the repository's aggregate gate.
Standalone Script Workflow
- Use
uv run script.pywhen no extra dependency is needed. - Use
uv run --with <dependency> script.pyfor disposable dependencies. - Use
uv init --scriptanduv add --scriptwhen dependencies or Python requirements should travel with a reusable script. - Put
--no-projectbefore the script name when isolation is intentional. - Read
references/scripts.mdonly for inline metadata, stdin, shebang, locking, alternate indexes, or platform-specific patterns.
Quality and Release
Use verification in this order: documented aggregate gate; the repository's configured hook runner; individual uv run ... commands when no aggregate gate exists or when narrowing a failure. Do not introduce or switch tools solely to run checks. Read references/quality.md for fallback patterns.
For release preparation:
- Run the repository gate.
- Build with
uv build --no-sourcesso local source overrides cannot leak. - Inspect wheel and sdist contents.
- Install and test the built wheel in a fresh uv-managed invocation.
- Record the artifact names, checks, and lockfile state.
Publishing is a separate external write. Do not run uv publish based only on a request to build, package, prepare, or release. Require authorization for the exact package/version, repository or index, and artifacts; use secret-safe credentials and verify the resulting release. Read references/packaging.md for the authorized publish path.
Invariants
- Do not use
pip installto mutate a uv-managed project. - Do not create
pyproject.tomlmerely to run a one-file script. - Do not use
--no-projectwhen local project imports are required. - Treat
--withas ephemeral; encode dependencies when reuse or reproducibility matters. - Test the built or published artifact, not only the source checkout.