# Code Formatting Pull requests fail if python, c++, and cmake files are not formatted according ``CONTRIBUTING.md`` policies. ``make format-pr`` can be used to ensure all the files that are a part of the pull request are formatted according to those policies. ## Dependencies ``` pip install black # format python files pip install cmake-format=0.6.13 # format cmake files ``` ### Linux ``` sudo apt install clang-format ``` ### Mac ``` brew install clang-format ``` ## Instructions Clone the nrn repository and configure with cmake. Cmake will automatically clone a subrepository into nrn/external/coding-conventions No special cmake formatting options are needed. ``` make format # formats all cmake, c++, and *.py files. make format-pr # formats all files that are different from the nrn master branch. ``` ## Behind the scenes ``nrn/.bbp-project.yaml`` specifies the tools used for format python files (black), cpp,c,h files (ClangFormat version 12.0.1), and cmake files (CMakeFormat version 0.6.13) ``nrn/.clang-format`` specfies our choices for clang format options. ``nrn/.cmake-format.yaml`` specifies our choices for cmake file format options. ``make format-pr`` executes the command ``` cd /home/hines/neuron/format && external/coding-conventions/bin/format `git diff --name-only master` ``` ``black`` can be executed from anywhere with folder args or python file args.