In coding, we follow:
code formatting according to
We adhere to the following code formatting standards:
black with default settings
flake8 with a
max_line_length=88and some exceptions as per
isortwith default settings
This is enforced through our CI/CD workflows via pre-commit.
Use underscores to separate words in non-class names:
exceptionally, capital letters
Z, are permissible as variable names or part of variable names such as
X_trainif referring to data sets, in accordance with the PEP8 convention that such variable names are permissible if in prior use in an area (here, this is the
Avoid multiple statements on one line. Prefer a line return after a control flow statement (
Use absolute imports for references inside sktime.
import *in the source code. It is considered harmful by the official Python recommendations. It makes the code harder to read as the origin of symbols is no longer explicitly referenced, but most important, it prevents using a static analysis tool like pyflakes to automatically find bugs.
There are two options to set up local code quality checks:
pre-commitfor automated code formatting
numpydocmanually in a local dev IDE
To set up pre-commit, follow these steps in a python environment
dev dependencies installed.
Type the below in your python environment, and in the root of your local repository clone:
If not already done, ensure
devdependencies is installed, this includes
pip install -e .[dev]
Set up pre-commit:
Once installed, pre-commit will automatically run all
sktime code quality
checks on the files you changed whenever you make a new commit.
If you want to exclude some line of code from being checked, you can add a
# noqa (no quality assurance) comment at the end of that line.
Local developer IDEs will usually integrate with common code quality checks, but need setting them up in IDE specific ways.
For Visual Studio Code,
numpydoc will need to be activated individually in the preferences
(e.g., search for
black and check the box). The packages
black etc will need to be installed in the python environment used by the IDE,
this can be achieved by an install of
Visual Studio Code preferences also allow setting of parameters such as
In Visual Studio Code, we also recommend to add
"editor.ruler": 88 to your local
settings.json to display the max line length.
The general design approach of sktime is described in the paper “Designing Machine Learning Toolboxes: Concepts, Principles and Patterns”.
Feedback and improvement suggestions are very welcome!