Developer notes
team developer material
This section is intended to be usefull for team developers only.
Quick installation process
This process describes how to install and run the project locally, e.g. for development purposes.
Nota: command is to be executed through the terminal
pip install rougail
Code quality
We are using pre-commit, there is a .pre-commit-config.yaml
pre-commit config file in the root’s project.
You need to:
install the pre-commit library:
pip install pre-commitregistrer the pre-commit git hooks with this command:
pre-commit installlaunch the quality code procedure with:
pre-commitor simply just commit your changes, pre-commit will automatically be launched.
Attention
If an error is found, the commit will not happen. You must resolve all errors that pre-commit that pre-commit points out to you before.
Note
If you need for some reason to disable pre-commit, just set
the PRE_COMMIT_ALLOW_NO_CONFIG environment variable before commiting:
PRE_COMMIT_ALLOW_NO_CONFIG=1 git commit
Coding standard
We use black
- repo: https://github.com/psf/black
rev: 22.10.0
hooks:
- id: black
And some YAML and JSON validators.
The pre commit tool
pre-commit is a fantastic tool for automating code quality checks before you commit your changes. It’s especially useful in Python projects for running linters, formatters, and other checks automatically.
Here’s a practical, minimal example to get you started with a small Python project.
1. Install pre-commit
First, install the pre-commit package:
pip install pre-commit
2. Create a .pre-commit-config.yaml File
In the root of your Python project, create a file named
.pre-commit-config.yaml with the following content:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/psf/black
rev: 23.12.1
hooks:
- id: black
- repo: https://github.com/pycqa/flake8
rev: 6.1.0
hooks:
- id: flake8
This config: - Uses popular pre-commit hooks for basic checks - Adds Black for code formatting - Adds Flake8 for linting
3. Install the Git Hook
Run this command in your project root:
pre-commit install
This sets up a Git hook that runs the checks before each commit.
4. Try It Out
Now, when you try to commit:
git add .
git commit -m "My commit message"
pre-commit will run the hooks. If any check fails, you’ll see output like this:
Trim Trailing Whitespace............................................Passed
Fix End of Files....................................................Passed
Check Yaml..........................................................Passed
Check for added large files..........................................Passed
Black..............................................................Failed
- hook id: black
- exit code: 1
Reformatted /path/to/your/file.py
All done! ✨ 🍰 ✨
1 file reformatted.
If any hook fails, fix the issues and try committing again.
5. (Optional) Run pre-commit Manually
You can run all hooks against all files at any time:
pre-commit run --all-files
6. Update Hooks
To update your hooks to the latest versions:
pre-commit autoupdate
Summary Table
Step |
Action |
Command |
|---|---|---|
1 |
Install pre-commit |
|
2 |
Create config file |
|
3 |
Install Git hook |
|
4 |
Commit and see checks |
|
5 |
Run manually |
|
6 |
Update hooks |
|
more python linters
Customizing your .pre-commit-config.yaml to include pylint,
ruff, and additional hooks is a great way to maintain code quality.
Here’s how you can structure your config for a robust setup:
1. Basic Setup with pylint and ruff
Here’s a starting point for your .pre-commit-config.yaml:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.6
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
- repo: https://github.com/pycqa/pylint
rev: v3.0.3
hooks:
- id: pylint
args: [--rcfile=.pylintrc] # Optional: specify a pylint config file
2. Adding More Hooks
Here are some popular hooks you might want to add:
a. Black (Code Formatter)
- repo: https://github.com/psf/black
rev: 23.12.1
hooks:
- id: black
b. Mypy (Static Type Checker)
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.8.0
hooks:
- id: mypy
c. isort (Import Sorter)
- repo: https://github.com/pycqa/isort
rev: 5.13.2
hooks:
- id: isort
d. Bandit (Security Linter)
- repo: https://github.com/pycqa/bandit
rev: 1.7.7
hooks:
- id: bandit
3. Full Example Config
Here’s a full example with all the above hooks:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.6
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
- repo: https://github.com/pycqa/pylint
rev: v3.0.3
hooks:
- id: pylint
args: [--rcfile=.pylintrc]
- repo: https://github.com/psf/black
rev: 23.12.1
hooks:
- id: black
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.8.0
hooks:
- id: mypy
- repo: https://github.com/pycqa/isort
rev: 5.13.2
hooks:
- id: isort
- repo: https://github.com/pycqa/bandit
rev: 1.7.7
hooks:
- id: bandit
4. Customizing Hooks
pylint: You can specify a config file (
.pylintrc) or pass arguments directly.ruff: You can customize rules in
pyproject.tomlor.ruff.toml.Black, isort, mypy: Each can be configured via their respective config files.
5. Installing and Running
Save the config to
.pre-commit-config.yaml.Run:
pre-commit install pre-commit run --all-files