Set Up¶
To edit the source code of DeepReg, besides the package installation, we recommend installing pre-commit for code style consistency and auto formatting before each commit to prevent unnecessary linting failure in Travis-CI.
Pre-commit¶
We are currently using (by order) the following pre-commit hooks:
seed-isort-config and isort to format package imports in python files.
Black to format python files.
Flake8 to perform python linting check,
Prettier to format markdown files.
Installation¶
Pre-commit is installed during the package installation via pip install -e .. To
activate pre-commit, make sure the git is installed (sudo apt install git for linux)
and run pre-commit install under the root of this repository DeepReg/.
Usage¶
We can use pre-commit run --all-files to trigger the hooks manually to format all
files before pull request.
Optionally, we can use
git commit --no-verify -m "This is a commit message placeholder." to skip pre-commit.
However, this is not recommended.
Linting conflicts¶
Sometimes, Black might have conflicts with flake8 and below are some possible cases and work around.
If a code is followed by a long comment in the same line, Black attempts to break lines. So we should put comment in the line above instead.
For lists/tuples, do not add comma after the last element, unless it’s a single element tuple, like
(1,).
To check if Black is causing conflicts, run black . in the root of DeepReg you will
see the formatted files by Black, run pre-commit run --all-files, you will see the
final versions. Compare them to understand an issue. If there’s a new conflict case,
please raise an issue.
Conda Environment¶
We recommend using conda env create -f environment.yml to create the conda environment
in installation. In case that we change the
dependencies later, please use conda env update -f environment.yml to update the
packages.
Otherwise, we can always remove the environment using conda env remove -n deepreg and
recreate it using conda env create -f environment.yml.