Contribution guidelines


  1. Fork this repository;

  2. follow the project structure;

  3. commit frequently with clear messages;

  4. send a pull request to the master branch of this repository.


  1. Style - comply with PEP 8 and Wikimedia conventions:

    • 4 spaces for indentation;

    • snake-case style AKA underscore as a word separator (files, variables, functions);

    • UPPERCASE constants;

    • anything else is lowercase;

    • 2 empty lines to separate functions;

    • 80 characters per line, and up to 100 when suitable;

    • single-quoted strings, unless single-quotes are in a string.

  2. Type hints - add them at least to public function signatures;

  3. Documentation - write Sphinx docstrings at least for public functions and classes:

  4. Refactoring:

    • fix pylint errors: pylint -j 0 -E PATH_TO_YOUR_CONTRIBUTION;

    • look at pylint warnings: pylint -j 0 -d all -e W PATH_TO_YOUR_CONTRIBUTION;

    • reduce complexity: flake8 --select C90 --max-complexity 10 PATH_TO_YOUR_CONTRIBUTION;

    • apply relevant refactoring suggestions: pylint -j 0 -d all -e R PATH_TO_YOUR_CONTRIBUTION.