# Python __pycache__/ *.py[cod] *$py.class *.so *.egg-info/ *.egg dist/ build/ .eggs/ # Virtual environments .venv/ venv/ env/ # IDE .vscode/ .idea/ *.swp *.swo *~ # Testing and tooling .pytest_cache/ .ruff_cache/ .codex-pytest-temp/ .release-*/ .tdd-*/ .coverage coverage.xml htmlcov/ # Environment .env # OS .DS_Store Thumbs.db desktop.ini # Generated CAD and benchmark output out/ benchmarks/results/* !benchmarks/results/.gitkeep !benchmarks/results/published !benchmarks/results/published/** benchmarks/.competitors/ *.dxf *.dwg *.bak # Local editor/agent state .cursor/ # NOTE: uv.lock is deliberately *not* ignored. It used to be — back when the # committed one was stale and unvetted — but CI now installs from it with # `uv sync --locked`, so ignoring it would silently disarm every locked lane. # Regenerate with `uv lock` whenever pyproject.toml dependencies change.