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

# Virtual envs (.venv-ci is the second env `make ci-offline` syncs exactly like the CI offline job)
.venv/
.venv-ci/
venv/

# uv
# (uv.lock IS committed — it pins the reproducible env)

# Artifacts / caches
*.pkl
*.parquet
.pytest_cache/
.ruff_cache/
.mypy_cache/
htmlcov/
.coverage
.coverage.*

# Documentation site build output (published by CI, never committed)
site/
.cache/

# Credentials / local config — never commit
.env
*.json.key
service-account*.json
application_default_credentials.json

# Terraform local state (remote GCS backend is authoritative)
*.tfstate
*.tfstate.*
.terraform/
.terraform-tmp/
.terraform.lock.hcl
# Never commit real ids (billing/org) or generated plans
terraform.tfvars
*.auto.tfvars
*.tfplan

# Throwaway spikes — live-infra experiments, never product surface
spikes/

# Notebooks
.ipynb_checkpoints/

# NeuralProphet / PyTorch-Lightning training artifacts (written to CWD on fit)
lightning_logs/
# Lightning's learning-rate finder drops a uuid-named checkpoint beside the process, not under
# lightning_logs/, so the directory rule above never catches it.
.lr_find_*.ckpt

# Local-only working files — never tracked (AGENTS.md at repo root is tracked).
.claude/
CLAUDE.md
NOTES.md

# OS / editor
.DS_Store
.idea/
.vscode/
