# virtual environment
.venv/

# Python cache
__pycache__/
*.pyc
*.pyo
*.pyd

# packaging
dist/
build/
*.egg-info/

# test / coverage
.pytest_cache/
.coverage
htmlcov/

# IDE
.vscode/
.idea/

# OS
.DS_Store
Thumbs.db

# uv lock

# generated analysis artifacts (all regenerable from notebooks/)
#   dataset.npz      <- notebooks/glitch_GB/make_dataset.py
#   fd_chains.npz    <- notebooks/glitch_GB/glitch_and_gb.ipynb
#   wdm_chain.npz    <- notebooks/glitch_GB/glitch_and_gb_wdm.ipynb
#   gb_free_sky.npz  <- notebooks/glitch_GB/run_gb_free_sky.py
#   ppruns/, pp_summary.npz <- notebooks/pp/run_ppplot.py
#   decruns/, decimation_summary.npz <- notebooks/pp/run_decimation.py
#   comparison_runs/, glitch_comparison.npz <- notebooks/glitch_only/glitch_comparison.py
#   knee_scan.npz, knee_mcmc.npz, lpf_snr.npz <- notebooks/glitch_GB/run_knee_scan.py
#   unequal_vs_equal.npz <- notebooks/glitch_only/unequal_vs_equal_arm.ipynb
#   exact_vs_hybrid_chains.npz <- notebooks/glitch_only/exact_vs_hybrid.ipynb
#   unmodelled*.npz  <- notebooks/glitch_GB/run_unmodelled.py
notebooks/**/*.npz
notebooks/**/*.log

# figures: every PDF is regenerated by paper/make_figures.py, so none is committed
*.pdf
notebooks/pp/ppruns/
notebooks/pp/decruns/
notebooks/glitch_only/comparison_runs/

# jexplore sampler epoch spill files
epochs_*.h5

# paper draft (kept out of the package repo)
paper/

# presentation draft (kept out of the package repo)
presentation/

# generated documentation
site/

# rendered quick-start notebook (rebuilt from the ipynb)
docs/example.md
docs/assets/quickstart/
