Code formatting and linting¶
Introduction¶
Code formatting guidelines set a standard for the layout of your code, for stylistic elements such as use of line breaks and whitespace. Format doesn’t have any impact on how the code works, but using a consistent style makes your code more readable, and makes it more likely to be reused.
Linting tools check your code for errors such as a missing bracket or line indent. This can save time and frustration because you can catch errors in advance of running the code.
As a project grows and goes through various stages of development it becomes important to maintain code quality. Using a consistent format and linting your code ensures that it is consistent, readable, and easy to debug and maintain.
Set up Python tools¶
There are a variety of Python tools available to use with your Kedro projects. This guide shows you how to use ruff
.
ruff
is a fast linter and formatter that replaces flake8
, pylint
, pyupgrade
, isort
, black
and more.
It helps to make your code compliant to PEP 8.
It reformats code and sorts imports alphabetically and automatically separating them into sections by type.
Install the tools¶
Install ruff
by adding the following lines to your project’s requirements.txt
file:
ruff # Used for linting, formatting and sorting module imports
To install all the project-specific dependencies, including the linting tools, navigate to the root directory of the project and run:
pip install -r requirements.txt
Alternatively, you can individually install the linting tools using the following shell commands:
pip install ruff
Configure ruff
¶
ruff
read configurations from pyproject.toml
within your project root. You can enable different rule sets within the [tool.ruff]
section. For example, the rule set F
is equivalent to Pyflakes
.
To start with ruff
, we recommend adding this section to enable a few basic rules sets.
[tool.ruff]
select = [
"F", # Pyflakes
"E", # Pycodestyle
"W", # Pycodestyle
"UP", # pyupgrade
"I", # isort
"PL", # Pylint
]
Note
It is a good practice to split your line when it is too long, so it can be read easily even in a small screen. ruff
treats this slightly different from black
, when using together we recommend to disable this rule, i.e. E501
to avoid conflicts.
Run the tools¶
Use the following commands to run lint checks:
ruff format --check <project_root>
ruff check <project_root>
You can also have ruff format
automatically format your code by omitting the --check
flag.
Automated formatting and linting with pre-commit
hooks¶
You can automate the process of formatting and linting with pre-commit
hooks.
These hooks are run before committing your code to your repositories to automatically point out formatting issues,
making code reviews easier and less time-consuming.
Install pre-commit
¶
You can install pre-commit
along with other dependencies by including it in the requirements.txt
file of your
Kedro project by adding the following line:
pre-commit
You can also install pre-commit
using the following command:
pip install pre-commit
Add pre-commit
configuration file¶
Create a file named .pre-commit-config.yaml
in your Kedro project root directory. You can add entries for the hooks
you want to run before each commit
.
Below is a sample YAML
file with entries for ruff
:
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: '' # Replace with latest version, for example 'v0.1.8'
hooks:
- id: ruff
args: [--fix]
- id: ruff-format
See GitHub for the latest configuration for ruff’s pre-commit.
Install git hook scripts¶
Run the following command to complete installation:
pre-commit install
This enables pre-commit
hooks to run automatically every time you execute git commit
.