# --- local-only agent/context files (never commit) ---
CLAUDE.md
.claude/
.codex/
AGENTS.md
.cursor/
.aider*
.github/copilot-instructions.md

# --- python ---
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
dist/
dist-from-sdist/
wheels/
*.egg-info/
*.egg
pip-wheel-metadata/
share/python-wheels/
MANIFEST

# --- virtual envs ---
.venv/
# per-version envs used to reproduce the CI matrix locally; `.venv/` does not
# match them, and hatchling then tries to pull one into the sdist and fails
.venv-*/
venv/
ENV/
env/
# throwaway envs the packaging smoke checks install into; an sdist build fails
# outright if a virtualenv is left sitting in the project root
.release-smoke/
.sdist-smoke/

# --- uv ---
# uv.lock IS committed; ignore cache only
.uv-cache/

# --- test/coverage ---
.pytest_cache/
.coverage
.coverage.*
coverage.xml
htmlcov/
.tox/
.nox/
.hypothesis/

# --- lint/format ---
.ruff_cache/
.mypy_cache/
.pytype/
.pyre/

# --- editors ---
.idea/
.vscode/
*.swp
*.swo
*~

# --- macOS ---
.DS_Store
.AppleDouble
.LSOverride

# --- project output (captures/PDFs are user data, not source) ---
output/
*.pdf
!docs/**/*.pdf

# --- logs ---
*.log
logs/
