# Local, uncommitted configuration overrides (see docs/REFACTOR_PLAN.md §4.7).
# Promote one deliberately with `specmod config freeze > studies/<name>.toml`.
specmod.local.toml
*.local.toml

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

# Environments
.venv/
venv/
env/

# Tooling caches
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
coverage.xml
htmlcov/

# Docs
docs/_build/
# `docs/conf.py` copies `tutorial/` here so Sphinx can build the notebook from
# inside its source directory, with the data it reads by relative path. The
# copy is also what the notebook's own output lands in, which is the point —
# executing it where it lives would write into the working tree.
docs/tutorial/

# Editors / OS
.ftpconfig
.DS_Store
.idea/
.vscode/
*.swp

# Notebook checkpoints
.ipynb_checkpoints/

# Tutorial output. Regenerated by running the notebook; committing it means a
# diff every time anyone executes it, and a stale copy the moment the pipeline
# changes. The inputs — waveforms, stations, picks — *are* committed.
#
# These patterns named `Tutorial/Spectra/` until now, the capitalised layout
# from before the `src/` move, so they had matched nothing for the whole
# refactor and the three files below were tracked in spite of the rule above.
tutorial/data/events/*/spectra/

# Created by `uv run` without --no-sync; this project resolves fresh on
# purpose so the floors job can test the declared minimums.
uv.lock
