# ===== Python =====
__pycache__/
*.py[cod]
*$py.class
*.so
build/
dist/
*.egg-info/
.eggs/
*.egg
wheels/
share/python-wheels/
MANIFEST
# NOTE: no bare `lib/` rule on purpose — this project's source lives in gai/lib/.

# ===== Python: virtual environments =====
# uv.lock is committed on purpose (reproducible installs); do NOT ignore it.
.venv/
venv/
env/
ENV/
.python-version

# ===== Python: testing / type-checking / linting =====
.pytest_cache/
.coverage
.coverage.*
coverage.xml
htmlcov/
.tox/
.nox/
.mypy_cache/
.dmypy.json
.pyre/
.pytype/
.ruff_cache/
.hypothesis/
.cache/

# ===== Python: notebooks =====
.ipynb_checkpoints/

# ===== Env / secrets =====
.env
.env.*
!.env.example
*.pem
*.key

# ===== Logs =====
*.log

# ===== Claude / AI tooling =====
# .claude/ is tracked in full (config, skills, hooks, agents, CLAUDE.md,
# settings) so the project's Claude setup travels with the repo. Runtime hook
# logs are still excluded by the general *.log rule above.
.claude/worktrees/
.agents/worktrees/
doc/agents/
.claude/journal/
tmp/

# ===== Editors / IDEs =====
.vscode/
.idea/
*.swp
*.swo
*~

# ===== OS =====
.DS_Store
Thumbs.db
desktop.ini
