# Python
__pycache__/
*.py[cod]
*.pyo
*.pyd
*.so
*.egg
*.egg-info/
dist/
build/
.eggs/
*.whl

# Virtual environments
.venv/
venv/
env/

# uv
.uv/

# Testing
.pytest_cache/
.coverage
htmlcov/
.tox/

# Type checking
.mypy_cache/
.ruff_cache/

# Secrets — never commit these
.env
.env.*
*.pem
*.key
!*.key.example
id_rsa
id_ed25519
id_ecdsa
id_dsa

# macOS
.DS_Store
.AppleDouble
.LSOverride

# IDE
.idea/
.vscode/
*.swp
*.swo

# Logs
*.log

# Local
*.local
dist/
manifest.toml
# hatch-vcs writes this at build time (see [tool.hatch.build.hooks.vcs]).
src/curu_infra/_version.py

# Agent and feature worktrees. These were only in .git/info/exclude, which is
# local and uncommitted -- git honoured it, so the tree looked clean, but
# hatchling reads .gitignore and packaged them: the 0.61.0 sdist shipped 22k
# files from .claude/ and 9.7k from .worktrees/ against 62 from src/, at 50MB.
.worktrees/
**/.claude/worktrees/
