# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
pytest.ini

# sbom.json is intentionally tracked (NOT ignored) — it's a permanent, inert
# placeholder so `uv sync`/editable installs don't hard-fail on a fresh
# clone (hatchling's sbom-files check, see pyproject.toml). release.yml
# overwrites it with a real SBOM before every publish build; that real one
# is never committed. Re-adding this ignore rule silently breaks every
# fresh clone/CI/codespace install again — see pyproject.toml's comment.

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

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

# Type checking
.mypy_cache/
.dmypy.json
dmypy.json
.pyre/
.pytype/

# Linting
.ruff_cache/

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

# Jupyter
.ipynb_checkpoints
*.ipynb

# Contextual-specific
.contextual/
*.db
*.db-shm
*.db-wal
lance/

# Documentation builds
docs/_build/
site/

# Environment files
.env
.env.local
.envrc
uv.lock

# macOS
.DS_Store
.AppleDouble
.LSOverride

# Temporary files
*.tmp
*.bak
*.swp
*~

# Distribution
*.tar.gz
*.whl
.pypirc

# CI/CD
.github/workflows/*.log

#development markdown files
AGENTS.md
CLAUDE.md
repo_structure.md
SCAFFOLD_README.md
output.md
audit_report.mduv.lock
audit.md 
.agent
.cursor
.cursor/rules
.benchmarks
.github/copilot-instructions.md

# Golden-eval fixtures (eval/manifest.yml pins exact commits; CI/local runs
# clone these fresh via eval/runner/index_repo.py's ensure_checked_out() —
# they are not our source and must never be embedded as nested git repos).
# The eval/ runner code itself (scripts, manifest.yml, queries.yml,
# hardware_profiles.yml) IS meant to be committed — only these subdirs aren't.
eval/repos/
eval/results/

# --- Added by Contextual (contextual init) ---
# .contextual/ is Contextual's local per-workspace index/cache/state, fully
# regenerable from source — not meant to be shared or committed.
# .contextualignore is Contextual's own indexing-exclude config, written
# with a default pattern set on init; treated the same way (local,
# regenerable) unless you deliberately want to version and share it, in
# which case just delete the line below.
# Safe to remove this whole block if you stop using Contextual.
.contextual/
.contextualignore
# --- end Contextual block ---
