Formatting code¶
The PTB automatically formats code and ensures via a step in the checks.yml GitHub
workflow that committed code adheres to these standards. The goals of this are to
improve the readability and maintainability of the code and to provide a uniform
experience across projects.
Nox sessions¶
For autoformatting, the following tools are used:
black - formats Python code to maintain consistent styling standards.
isort - organizes and formats Python import statements alphabetically and by type (from __future__, standard library packages, third party packages, and local application imports).
pyupgrade - upgrades syntax for newer versions of the Python language.
ruff - includes a plethora of tools to check and automatically format code. In the PTB, only the following checks are active:
unused-import (F401) - removes unused imports
In the PTB, these tools are bundled into nox sessions to ensure that they are run in a deterministic manner.
Nox session |
CI Usage |
Action |
|---|---|---|
|
No |
Applies code formatting changes |
|
|
Checks that current code does not need to be re-formatted |
Configuration¶
black¶
Your black configuration should look similar to this:
[tool.black]
line-length = 88
verbose = false
include = "\\.pyi?$"
For further configuration options, see black configuration.
isort¶
Ensure isort is configured with compatibility for black:
[tool.isort]
profile = "black"
force_grid_wrap = 2
For further configuration options, see isort options.
pyupgrade¶
No initial configuration of pyupgrade is required. By default, this is
configured to be derived from the minimum Python version that your project supports
and is defined in the exasol.toolbox.config.BaseConfig.pyupgrade_argument().
For further configuration options, see the pyupgrade documentation.
ruff¶
Ensure ruff is configured like so:
[tool.ruff.lint]
extend-ignore = [
"E", # Syntax errors
"F", # Pyflakes rules (excluding F401)
"UP", # pyupgrade rules
"D", # Docstring rules
]
extend-select = ["F401"]
unfixable = []
For further configuration options, see ruff options.