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

# Virtual environment
.venv/
venv/

# Environment (secrets)
.env

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

# OS
.DS_Store
Thumbs.db

# Test
.pytest_cache/
.coverage
htmlcov/

# Ruff
.ruff_cache/

# Mypy
.mypy_cache/

# The local EPICS test sandbox is kept OUTSIDE this repo (in a private workspace); never track it
# here. This blanket ignore also covers any leftover runtime/build artifacts on disk.
sandbox/

# Site-specific pre-commit PII/secret patterns (kept out of this public repo by design).
scripts/.pii_patterns.local

# Scratch trees of QA runs (isolated venvs, uv/pre-commit caches, coverage dumps, built sdists).
# They are throw-away by construction and nothing references them, but some are created with
# permissions git cannot read, so WITHOUT these rules every `git status` also emits a
# "could not open directory ... Permission denied" warning. Ignoring them silences that too.
qa_tmp*/
.qa_full*/

# Stray log files. This one is not hygiene for its own sake: an untracked `x.log` in the ROOT was
# packed into the published 0.4.0 sdist, because hatchling packs the working tree minus what VCS
# ignores, and nothing ignored it (the reasoning is in pyproject.toml beside the sdist
# declaration). The stray guard in tests/test_packaging.py cannot catch this one either: it reads
# the artifact, and only-include already keeps a ROOT file out, so the file reappears on disk
# release after release with every check green. Its own failure message says the remedy is this
# line (GB-33 d).
*.log
