# Python
__pycache__/
*.py[cod]
*.so
.Python
build/
build-*/
dist/
*.egg-info/
eggs/
.eggs/
sdist/
var/
wheels/
.venv/
venv/
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
.coverage.*
htmlcov/

# Compiled extension
*.pyd
*.pdb
*.lib
*.exp
CMakeFiles/
CMakeCache.txt
cmake_install.cmake
CMakeUserPresets.json
_deps/
Makefile
# The CMake-generated Makefile is the one to ignore; the paper's own build file is
# hand-written and is the command the paper is built with.
!paper/Makefile

# C++ object files
*.o
*.obj
*.a
*.dll
*.dylib
*.exe

# Docs
docs/_build/
docs/_build*/
docs/_static/
docs/_templates/

# Editors and OS
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store
Thumbs.db

# Local working files
.claude/settings.local.json
planning/
scratch/

# Stray page captures in the repo root
/*.html

# Logs the CI steps write into the checkout (build.log, pytest.log)
*.log

# Built wheels belong in CI artifacts, never in history
wheelhouse/
*.whl

# H6 study output: raw cells and logs are regenerated by the run; pilot.json is tracked
studies/results/cells/
studies/results/logs/
studies/results/pilot/
studies/results/all.csv
# auto-v1's raw rows: regenerated by `python -m studies.run_auto`. Its analysis
# (`studies/results/auto/analysis/`) is committed, like the H6 analysis.
studies/results/auto/*.csv
studies/results/auto/*.done
benchmarks/.cache/

# Documentation fragments generated from committed measurements (docs/_gen.py)
docs/_generated/
