Welcome to NI's internal and external Python conventions and enforcement tooling.
Our written conventions can be found at https://ni.github.io/python-styleguide/.
Their source is in docs/Coding-Conventions.md.
NOTE: Using the GitHub Pages link is preferable to a GitHub /blob
link.
As a tool, ni-python-styleguide
is installed like any other script:
pip install ni-python-styleguide
To lint, just run the lint
subcommand (from within the project root, or lower):
ni-python-styleguide lint
# or
ni-python-styleguide lint ./dir/
# or
ni-python-styleguide lint module.py
The rules enforced are all rules documented in the written convention, which are marked as enforced.
ni-python-styleguide
aims to keep the configuration to a bare minimum (none wherever possible).
However there are some situations you might need to configure the tool.
ni-python-styleguide
has a subcommand fix
which will run black and isort.
Additionally, you can run fix
with the --aggressive
option and it will add acknowledgements (# noqa) for the remaining linting errors
it cannot fix, in addition to running black and isort.
If you're using setup.py
, you'll need to set your app's import names for import sorting.
# pyproject.toml
[tool.ni-python-styleguide]
application-import-names = "<app_name>"
ni-python-styleguide
in the future will have a format
command which we intend to fix as many lint issues as possible.
Until then you'll want to set the following to get black
formatting as the styleguide expects.
# pyproject.toml
[tool.black]
line-length = 100
(This section to come!)