Thank you for your interest in contributing! 🤗
This file covers:
- 🐞 Workflow for bug reports, feature requests and documentation improvements
- 🚀 Workflow for code contributions (bug fixes, enhancements)
- 🛠️ Development and testing
- 📦 Updating the package
- 🤝 Code of conduct
Before opening an issue, please search existing issues to avoid duplicates. If an issue exists, you can add a comment with additional details and/or upvote (👍) the issue. If there is not an existing issue, please open one and provide as much detail as possible.
- For feature requests or documentation improvements, please describe your suggestion clearly.
- For bugs, include:
- Steps to reproduce.
- Expected and actual behaviour.
- Environment details (operating system, python version, dependencies).
- Relevant files (e.g. problematic
.qmdfiles).
- Confirm reproducibility by following the reported steps.
- Label the issue appropriately (e.g.
bug). - Request additional information if necessary.
- Link related issues or pull requests.
- Once resolved, close the issue with a brief summary of the fix.
-
Fork the repository and clone your fork.
-
Create a new branch for your feature or fix:
git checkout -b my-feature
-
Make your changes and commit them with clear, descriptive messages using the conventional commits standard.
-
Push your branch to your fork:
git push origin my-feature
- Open a pull request against the main branch. Describe your changes and reference any related issues.
Set up the Python environment using conda (recommended):
conda env create --file environment.yaml
conda activate
There is also a requirements.txt file which can be used to set up the environment with virtualenv, but this won't fetch a specific version of Python - so please note the version listed in environment.yaml.
We follow the numpydoc style for docstrings.
Run all tests (with coverage):
pytest --cov
Run tests in parallel:
pytest -n auto
Run an individual test file:
pytest tests/testfile.py
Run a specific test:
pytest tests/testfile.py::testname
Lint all files:
bash lint.sh
Lint a specific .py file:
pylint simulation/model.py
Lint a specific .ipynb file:
nbqa pylint notebooks/analysis.ipynb
If you are a maintainer and need to publish a new release:
-
Update the
CHANGELOG.md. -
Update the version number in
simulation/__init__.pyandCITATION.cff, and update the date inCITATION.cff. -
Create a release on GitHub, which will automatically archive to Zenodo.
Please be respectful and considerate. See the code of conduct for details.