Contributing
Contributions to BoFire are highly welcome!
Pull Requests
Pull requests are highly welcome:
- Create a fork from main.
- Add or adapt unit tests according to your change.
- Add doc-strings and update the documentation. You might consider contributing to the tutorials section.
- Make sure that the GitHub pipelines passes.
Development Environment
We recommend an editable installation. After cloning the repository via
git clone https://github.com/experimental-design/bofire.git
bofire
, you can proceed with
pip install -e ".[all]"
pytest tests/
Coding Style
We use Ruff for linting, sorting and formatting of our code. Our doc-strings are in Google-style.
In our CI/CD pipeline we check if contributions are compliant to Ruff. To make contributors' lives easier, we have pre-commit hooks for Ruff configured in the versions corresponding to the pipeline. They can be installed via
pip install pre-commit
pre-commit install
pre-commit
.
Type checks
We make heavy use of Pydantic to enforce type checks during runtime. Further, we use Pyright for static type checking. We enforce Pyright type checks in our CI/CD pipeline.
Tests
If you add new functionality, make sure that it is tested properly and that it does not break existing code. Our tests run in our CI/CD pipeline. The test coverage is hidden from our Readme because it is not a very robust metric. However, you can find it in the outputs of our test-CI/CD-pipeline. See example.
Documentation
We use MkDocs with material theme and deploy our documentation to https://experimental-design.github.io/bofire/. Thereby, an API description is extracted from the doc-strings. Additionally, we have tutorials and getting-started-sections.
License
By contributing you agree that your contributions will be licensed under the same BSD 3-Clause License as BoFire.