# v0.4.0 — frontend build output lands in the Python package's static
# directory at wheel-assembly time via the hatchling build hook. The
# .gitkeep file in static/ is tracked; everything else is regenerated.
packages/controlbridge-api/src/controlbridge_api/static/assets/
packages/controlbridge-api/src/controlbridge_api/static/index.html
packages/controlbridge-api/src/controlbridge_api/static/*.js
packages/controlbridge-api/src/controlbridge_api/static/*.css

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
# NB: `lib/` and `lib64/` above would otherwise also match
# packages/controlbridge-ui/src/lib/ (TypeScript utils). Scope to top-level
# only — there's no real Python-venv lib/ we'd fail to ignore because
# .venv/ and venv/ below cover that case.
!packages/controlbridge-ui/src/lib/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

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

# uv
# NOTE: uv.lock is committed for reproducible builds.
# https://docs.astral.sh/uv/concepts/projects/sync/#locking-dependencies

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

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Ruff
.ruff_cache/

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

# Claude Code local state
.claude/

# ControlBridge runtime — user project state (NOT bundled examples)
.controlbridge/
/controlbridge.yaml
*.local.yaml
evidence/
reports/
risks/

# Generated reports from examples (keep source files, ignore generated ones)
examples/**/report.json
examples/**/report.csv
examples/**/report.md
examples/**/report.oscal.json
examples/**/risks.json
