Contributing#
In order to contibute to this repository you will need developer access to this repo. To know more about the project go to the README first.
Install Dev environment#
From the root of this repo, run
conda env create -f environment_dev.yaml
Pre-commit hooks#
Pre-commits hooks have been configured for this project using the pre-commit library:
To get them going on your side, make sure to have python installed, and run the following commands from the root directory of this repository:
pip install pre-commit
pre-commit install
pre-commit run --all-files
Coding conventions#
Please respect the following conventions to contribute to the code:
Use hard wrap at 88
Respect black, isort and flake8 conventions
Classes’ names are Caml case (example: MyClass)
Functions and variables are in lower case with _ as separator (example: my_function, my_var)
Names are explicit: avoid mathematical notations, functions’ names start with a verb
Use python typing library: each class and method should be typed (both for inputs and outputs)
Create custom types if needed
All classes and functions should have a docstring
Avoid repeating arguments and returns in docstring (should be explicit with the types) except when it is truly necessary
A function (or a class) does not take more than 5 arguments, if you need more create a data class
Avoid dictionaries to pass arguments when possible and prefer dataclasses instead
Repeat inputs names when calling a function: ex: compute_custom(arg1=arg1, arg2=my_arg2)
Use list comprehension when it is possible
Use f strings to add variables in strings: ex: print(f’my var value is {my_var}’)
Use PathLib to handle pathes
Prefer shutil to os to manage files/ folders creations and deletions