# Python
__pycache__/
*.pyc
*.pyo
*.pyd
.Python
.venv/
.pytest_cache/
.ruff_cache/
.mypy_cache/

# Build artifacts
dist/
build/
*.egg-info/

# Local config & secrets
.env
.env.local
*.env

# Tooling
.git/
.github/
.claude/
.idea/
.vscode/
.DS_Store

# Tests & docs not needed at runtime
tests/
docs/
design/
*.md
!README.md
# The notice is copied into the image, so it has to survive the *.md sweep
# above. Excluding it does not fail the build loudly at the COPY -- it fails
# with "not found", which reads like a missing file rather than an ignored one.
!THIRD_PARTY_NOTICES.md

# Source control
.gitignore
.dockerignore

# Editor
*.swp
*.swo
