Contributor Guide
=================
Contributions are welcome. This section collects the development setup and the conceptual
material needed to extend ``irdl``.
Developer setup
---------------
``irdl`` uses `uv `_ for
development. ``uv`` handles virtual environment creation and dependency installation
automatically. Just prepend development commands with ``uv run``.
.. code-block:: console
$ uv run python -m pytest
$ uv run ruff check --fix
$ uv run ruff format
$ uv run make -C docs html
The documentation Makefile regenerates the dataset docs and CLI help snippets that are
included in the Sphinx documentation. Only the ``README.md`` may need manual updating.
Coding style
------------
The source of truth for formatting and linting is ``pyproject.toml`` and is enforced by
``ruff``. Important rules are:
- Line length: 120 characters.
- Double quotes.
- NumPy-style docstrings.
- Prefer explicit ``ValueError`` exceptions for invalid user input rather than ``assert``.
- After parameter validation, access required parameters directly, for example
``dataset_kwargs["scenario"]`` rather than ``dataset_kwargs.get("scenario")``.
Architecture and extension guides
---------------------------------
.. toctree::
:maxdepth: 1
Processing flow
Adding a new Dataset