Contributing
Thank you for your interest in contributing to eprbase. Contributions,
bug reports, and improvement suggestions are welcome.
Development setup
Clone the repository and install the development dependencies with uv:
git clone https://github.com/florianquintes/eprbase.git
cd eprbase
uv sync --dev
Install the optional GPU dependencies only if you are working on GPU functionality:
uv sync --extra gpu
Branches
The main branch contains the stable version of the project. Development
work should be based on the develop branch.
Create a feature or bug-fix branch from develop:
git switch develop
git pull
git switch -c feature/short-description
Use descriptive branch names, for example:
feature/add-new-interpolation-methodfix/grid-boundary-conditiondocs/improve-installation-guide
Pull requests
Before opening a pull request:
Keep the pull request focused on one topic.
Add or update tests for changed functionality.
Update the documentation where necessary.
Ensure that the code is formatted and passes the linter.
Ensure that the complete test suite passes.
Keep commits clear and descriptive.
Do not commit generated files, virtual environments, or credentials.
Run the local checks before submitting a pull request:
uv run pytest
uv run ruff format --check .
uv run ruff check .
Pull requests should target the develop branch unless they contain a
release-related change. The CI workflows must pass before a pull request can
be merged.
Code style
Use ruff for formatting and linting. Format code locally with:
uv run ruff format .
GPU contributions
GPU-specific code should preserve interface compatibility with the corresponding CPU implementation wherever possible.
GPU tests require a compatible NVIDIA GPU and CUDA environment. CPU tests must remain runnable without the optional GPU dependencies.
Documentation
Documentation is written in English and built with Sphinx. Build it locally with:
uv run sphinx-build -b html src/eprbase/docs/source \
src/eprbase/docs/build/html
When changing public APIs, update the relevant docstrings and API documentation.