Contributing#
Contributions are always welcome, no matter how small!
If you think you can help in any of the areas of MOABB (and we bet you can) or in any of the many areas that we haven’t yet thought of (and here we’re sure you can) then please check out our roadmap.
Please note that it’s very important to us that we maintain a positive and supportive environment for everyone who wants to participate. When you join us we ask that you follow our code of conduct in all interactions both on and offline.
The following is a small set of guidelines for how to contribute to the project
Where to start#
Code of Conduct#
This project adheres to the Contributor Covenant Code of Conduct. By participating you are expected to adhere to these expectations. Please report unacceptable behavior to hi@pushtheworld.us
Contributing on Github#
If you’re new to Git and want to learn how to fork this repo, make your own additions, and include those additions in the master version of this project, check out this great tutorial.
Community#
This project is maintained by the NeuroTechX community. Join the Gitter, where discussions about MOABB takes place.
How can I contribute?#
If there’s a feature you’d be interested in building or you find a bug or have a suggestion on how to improve the project, go ahead! Let us know on the Gitter or open an issue so others can follow along and we’ll support you as much as we can. When you’re finished submit a pull request to the master branch referencing the specific issue you addressed.
Steps to Contribute#
Look for open issues or open one
Discuss the problem and or propose a solution
Fork it! (and clone fork locally)
Branch from
develop
:git checkout --track develop
Create your feature branch:
git checkout -b my-new-feature
Make changes
Commit your changes:
git commit -m 'Add some feature'
Don’t forget to fix issues from
pre-commit
pipeline (either add changes made by hooks or fix them manually in case offlake8
)Push to the branch:
git push origin my-new-feature
Submit a pull request. Make sure it is based on the
develop
branch when submitting! :DDon’t forget to update the what’s new and documentation pages if needed
Setup development environment#
install
poetry
(only once per machine):curl -sSL https://install.python-poetry.org | python3 -
or checkout installation instruction or use conda forge version(Optional, skip if not sure) Disable automatic environment creation:
poetry config virtualenvs.create false
install all dependencies in one command (have to be run in thibe project directory):
poetry install --extras [deeplearning, codecarbon]
install
pre-commit
hooks to git repo:pre-commit install
you are ready to code!
Note 1:Your first commit will trigger pre-commit
to download Code Quality tools.
That’s OK and it is intended behavior. This will be done once per machine automatically.
Note 2:By default poetry
creates separate Python virtual environment for every project (more details in documentation).
If you use conda
or any other way to manage different environments by hand - you need to
disable poetry
environment creation. Also in this case be careful with version of Python
in your environment - it has to satisfy requirements stated in pyproject.toml
. In case you
disable poetry
you are in charge of this.
Tools used#
MOABB uses poetry for dependency management. This tool enables one to have a reproducible environment on all popular OS (Linux, MacOS and Windows) and provides easy publishing pipeline.
Another tool that makes development more stable is pre-commit. It automatically runs variety of Code Quality instruments against the code you produced.
For Code Quality verification, we use:
Generate the documentation#
To generate a local version of the documentation:
cd docs
make html