# ignore papers folder
papers/*

# ignore local .vscode
.vscode/*

# ignore local .devcontainer
.devcontainer/*

# ignore pdfs
*.pdf
# ...but the JOSS paper figures must be tracked despite the global *.pdf rule above
!figures/
!figures/*.pdf

# ignore .gz files (from profiling)
*.gz

# local research data (re-downloadable from the sources listed in its own README). The folder is
# not present in a fresh clone; the rule is here so a local copy stays out of git.
data/*

# ignore compiled docs
docs/build/*
# docs is a separate environment; it is re-instantiated in CI
docs/Manifest.toml
docs/LocalPreferences.toml

# macOS files
.DS_Store

# ignore all subfolders of the benchmark folder, but keep the readme file
performance/benchmarks/*
performance/data/*
!performance/benchmarks/readme.md
!performance/data/readme.md
# the BiCM medium/large benchmark graphs are required INPUTS (loaded, not regenerated), so they
# must be tracked. The UBCM graphs and BiCM_small regenerate deterministically (seed 161 /
# corporateclub()), and UBCM_large is ~94 MB, so those are intentionally not committed.
!performance/data/BiCM_medium.csv
!performance/data/BiCM_large.csv
# igore performance pycach
performance/__pycache__/*
# pytest/pytest-benchmark scratch, wherever it is invoked from. pytest writes a self-ignoring
# .gitignore inside .pytest_cache, so without these rules the stray copies are invisible to
# git status but still clutter the tree.
.pytest_cache/
.benchmarks/
# accuracy comparison output is regenerated by accuracy_comparison.jl
performance/accuracy/*
# uv virtual environment for the Python/NEMtropy benchmarks
performance/.venv/
# generated Python + shell benchmark scripts (emitted by the *_benchmarks.jl drivers).
# These are regenerated by benchmarks.sh on every run and embed absolute paths to the local
# .venv and benchmark store, so they must never be tracked (all eight models emit one).
performance/*.py
performance/*_script.sh
# ...but keep the hand-written helpers (not generated scripts)
!performance/reproducibility_check.py
!performance/merge_pytest_benchmarks.py
# generated outputs (plots and sampled networks) are not tracked; keep any readme
performance/plots/*
performance/samples/*
!performance/plots/readme.md
!performance/samples/readme.md
# the run log the readme tells you to create (`nohup ./benchmarks.sh >> benchmark.log`).
# It reaches hundreds of MB: a medium run emits ~190k lines, nearly all of them the same
# repeated solver warning.
performance/benchmark.log
# performance is a separate environment; don't track its lockfiles
performance/Manifest.toml
performance/LocalPreferences.toml

# a registered library ships only Project.toml; the root Manifest/LocalPreferences
# are environment-specific and must not be tracked
/Manifest.toml
/LocalPreferences.toml

# local scratch / prototypes / experiments (not part of the package). Not present in a fresh clone;
# the rule is here so a local scratch folder stays out of git.
/dev/

# the test environment resolves its own deps; don't track its lockfile
test/Manifest.toml

# the validation environment resolves its own deps; don't track its lockfile
validation/Manifest.toml

# the logo environment resolves its own deps; don't track its lockfile
logo/Manifest.toml

# keynote / binary design assets
*.key

# profiling output
*.pb.gz
