# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

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

# Testing / coverage / type checking
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
.ruff_cache/
.mypy_cache/
.mutmut-cache/
htmlcov/

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

# OS
.DS_Store
Thumbs.db
desktop.ini

# Secrets
.env
.env.*
!.env.example
*.pem
*.key

# Local notes / scratch
_scratch/
_notes/
*.local.md

# Legacy ad-hoc scripts (migrated into tests/)
_test.py
_test_mcp_protocol.py
_verify_fixed.py

# Build artifacts from snapshots we don't want to commit half-baked
tests/**/__snapshots__/.DS_Store

# Benchmark expected answers — sealed via SHA-256 in `expected.hashes.jsonl`
# on `main`. The plaintext is local-only until a benchmark run publishes it
# alongside scoring output. See tests/benchmark/README.md for the protocol.
tests/benchmark/expected.jsonl

# mkdocs build output. Published via `.github/workflows/docs.yml` to
# GitHub Pages; never tracked in source.
site/
