# Python
__pycache__/
*.py[cod]
*.egg-info/
.pytest_cache/
.ruff_cache/
.venv/
dist/
build/

# uv
# (uv.lock IS committed)

# Generated by `loopy compile` into example/user projects (the `loopy.events` package)
**/loopy/events.py
**/loopy/events.pyi
**/loopy/__init__.py

# Secrets — referenced env files, resolved at run time, never committed.
# NOTE: git has no inline comments — a `#` after a pattern becomes part of the
# pattern (matching nothing), silently disabling the rule. Keep each comment on
# its own line; `tests/test_gitignore_secrets.py` guards against regressions.
# control-plane infra creds (REDIS_URL, DAYTONA_API_KEY/URL)
loopy.env
# sensor-layer secrets (runner-wide dotenv)
**/sensors/.env
# sandbox env_file(s)
**/secrets/
# local state: GitHub App private key (loopy auth github) + the SQLite run-state DB
# written by `loopy run` (.loopy/state.db and its -wal/-shm sidecars)
.loopy/
