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