# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

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

# Project specific
.uv/
uv.lock

# Claude Code runtime data (session transcripts, credentials, todos)
# dotclaude/ is the container's ~/.claude — contains credentials and sessions.
# settings.json and .claude.json.seed are tracked (safe, no credentials).
# .credentials.json and .claude.json are NOT committed:
#   .credentials.json — OAuth token (copy manually from host or complete auth)
#   .claude.json      — runtime state written/updated by claude on each run
dotclaude/**
!dotclaude/settings.json
!dotclaude/.claude.json.seed
dotcodex/auth.json

# Web frontend (Next.js)
web/frontend/node_modules/
web/frontend/.next/
web/frontend/out/
# Allow frontend src/lib (overrides Python lib/ rule above)
!web/frontend/src/lib/

# Web backend (Python)
web/backend/.venv/
web/backend/__pycache__/
web/backend/*.egg-info/
web/backend/uv.lock
.playwright-mcp
*.png