---
description: Python tooling and dependency conventions for plugin-eval and tools/
globs: ["**/*.py", "**/pyproject.toml", "**/uv.lock"]
---

# Python tooling

This project uses the Astral Rust toolchain:

- **uv** for package management. Run `uv run <cmd>` to execute inside the venv, `uv add <pkg>` to install.
- **ruff** for linting and formatting. `uv run ruff check .` / `uv run ruff format .`.
- **ty** for type checking. `uv run ty check .`.

Do not use `pip`, `mypy`, or `black`. Do not edit `requirements.txt` for Python deps — those belong in `pyproject.toml`.

Python ≥ 3.12 is required. Use modern syntax (`X | Y`, `list[T]`, structural pattern matching).
