.. _follow the code style: Follow the code style ===================== We use the following tools to make the code style to be as consistent as possible: - `black `_, to format the code - `flake8 `_, to check the style and quality of the code - `isort `_, to sort ``imports`` The following versions of the above tools are used: - ``black == 22.3.0`` - ``flake8 == 5.0.4`` - ``isort == 5.10.1`` After running the following commands: .. code-block:: $ git clone https://github.com/k2-fsa/icefall $ cd icefall $ pip install pre-commit $ pre-commit install it will run the following checks whenever you run ``git commit``, **automatically**: .. figure:: images/pre-commit-check.png :width: 600 :align: center pre-commit hooks invoked by ``git commit`` (Failed). If any of the above checks failed, your ``git commit`` was not successful. Please fix any issues reported by the check tools. .. HINT:: Some of the check tools, i.e., ``black`` and ``isort`` will modify the files to be commited **in-place**. So please run ``git status`` after failure to see which file has been modified by the tools before you make any further changes. After fixing all the failures, run ``git commit`` again and it should succeed this time: .. figure:: images/pre-commit-check-success.png :width: 600 :align: center pre-commit hooks invoked by ``git commit`` (Succeeded). If you want to check the style of your code before ``git commit``, you can do the following: .. code-block:: bash $ pre-commit install $ pre-commit run Or without installing the pre-commit hooks: .. code-block:: bash $ cd icefall $ pip install black==22.3.0 flake8==5.0.4 isort==5.10.1 $ black --check your_changed_file.py $ black your_changed_file.py # modify it in-place $ $ flake8 your_changed_file.py $ $ isort --check your_changed_file.py # modify it in-place $ isort your_changed_file.py