# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
*.egg
*.egg-info/
.eggs/
build/
dist/
wheels/
*.whl

# Virtual environments
.venv/
venv/
env/
ENV/

# Testing / coverage
.pytest_cache/
.coverage
.coverage.*
htmlcov/
.tox/
.nox/
coverage.xml
*.cover
.hypothesis/

# Type checking
.mypy_cache/
.pytype/
.ruff_cache/

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

# OS
.DS_Store
Thumbs.db

# Docs build
docs/_build/
docs/api/

# Local secrets / config
.env
.env.local
*.pem
secrets.json

# Build artifacts
*.log

# Snapshot backups (local archive only)
backups/
# ⛔ CLAUDE.md is NOT ignored here. It is FORCE-INCLUDED into both build targets
# ([tool.hatch.build.targets.wheel.force-include] -> ligandai/CLAUDE.md and
# [tool.hatch.build.targets.sdist.force-include] -> CLAUDE.md), so ignoring it
# meant a clean checkout of HEAD lacked a file the build requires, and the
# released artifact depended on a file no reviewer of the release commit could
# see. Its sibling AGENTS.md, force-included the same way, was tracked all
# along -- the asymmetry is what gave it away. [bd-dre-a8p6m]
