Contributing Guidelines#

First off, thanks for considering to contribute to this project!

These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.

Versioning and changelog#

This project adheres to Semantic Versioning.
The CHANGELOG format tries to complies with Keep a Changelog but it’s mainly a concatenation of autogenerated release notes by GitHub Release.

Git hooks#

We use git hooks through pre-commit to enforce and automatically check some “rules”. Please install it before any commit: pre-commit install.

See the relevant configuration file: .pre-commit-config.yaml.

Code Style#

Make sure your code roughly follows PEP-8 and keeps things consistent with the rest of the code:

  • docstrings: sphinx-style is used to write technical documentation.

  • formatting: black is used to automatically format the code without debate.

  • sorted imports: isort is used to sort imports

  • static analisis: flake8 is used to catch some dizziness and keep the source code healthy.

Security#

As the aim of this project is to be carried out on large-scale IT infrastructures, security is one of the development challenges. It’s enforced through automated checks, which are mainly executed in CI. But there are a few best practices to bear in mind:

  • give preference to the standard Python library, even it’s longer to develop

  • or consider adding an additional third-party dependency (interest, consequences, linked dependencies, etc.)

  • take security alerts into account

Read the security section in documentation.

IDE#

Feel free to use the IDE you love. Here come configurations for some popular IDEs to fit those guidelines.

Visual Studio Code#

It’s the IDE used by the main developer, so the configuration is tracked on this repository until new contributors with other IDEs are joining the project.

Configuration is under: .vscode/settings.json