Contributing¶
Pull requests are welcome. Please keep changes focused and match the existing style in the files you touch.
Quick start for contributors¶
- Install in editable mode with dev dependencies:
pip install -e ".[test,dev,docs,reports]"
Use pip install -e ".[all]" only when you also need the heavier data-driven dependencies
(scikit-learn and torch).
-
Read the architecture overview: Architecture explains the benchmark loop, key modules, and how to add generators, contaminations, and estimators.
-
Follow the estimator guide if needed: Adding estimators shows the shortest path for enrolling a new estimator.
-
Run validation before submitting:
python -m ruff check .
python -m pytest
python -m mkdocs build --strict
python -m build
- Verify smoke output for packaging or CLI changes:
lrdbench list-suites
lrdbench run smoke_ground_truth --dry-run
lrdbench run smoke_ground_truth
lrdbench validate-output reports/<run_id>
If you are working in a minimal environment without pytest-cov, use
python -m pytest -q -o addopts='' for a no-coverage smoke check. Full submissions should still
run the default python -m pytest after installing the test extra.
Windows notes¶
- Line endings are governed by
.gitattributes(text files are LF,*.ps1/*.bat/*.cmdare CRLF). Leave Git'score.autocrlfunset orfalse; the attributes take precedence, so no per-file configuration is needed. - Long paths: some bundled fixtures (e.g. under
configs/suites/data/openneuro_ds002691_pilot/csv/) have long filenames. Cloning into a deep directory can hit Windows' 260-characterMAX_PATHlimit and fail checkout withFilename too long. Enable long-path support once:
git config --global core.longpaths true
(You may also need to enable long paths in Windows itself via the LongPathsEnabled policy.)
Cloning into a short path such as C:\src\lrdbench also avoids this.
Checklists and policies¶
- Contributor checklist: pre-submission checklist for estimators, outputs, and validation.
- Estimator contract: formal contract every estimator must satisfy.
- Third-party estimator workflow: how to register estimators without modifying the core package.
- Leaderboard submission policy: rules for public leaderboard entries.
Getting help¶
If you are unsure whether a change fits the project scope, open a GitHub issue first. For common errors during development, see FAQ.