| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
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-styleguideThe script name nps is a short-name for ni-python-styleguide, and may be used in place of ni-python-styleguide in any CLI command.
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
nps lint module.pyThe 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 to apply basic formatting fixes.
When using the --aggressive option with fix, it will first run black and isort to fix what it can then add acknowledgements (# noqa) for any remaining linting errors that cannot be automatically fixed.
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 has a subcommand format which will run black and isort with the correct settings to match the linting expectations.
If you wish to be able to invoke black directly, you'll want to set the following to get black formatting as the styleguide expects.
# pyproject.toml
[tool.black]
line-length = 100let g:ale_python_flake8_executable = 'ni-python-styleguide'
let g:ale_python_flake8_options = 'lint'
let g:ale_linters = {'python': ['flake8']}
let g:ale_python_black_executable = 'ni-python-styleguide'
let g:ale_python_black_options = 'fix'
let g:ale_fixers = {'python': ['isort', 'black']}Note: You can set all of these with b: as well.
let g:ale_fix_on_save = 1 " Fix on save
nmap <F8> <Plug>(ale_fix) " Fix on F8Change all of these to your taste.
One can configure VSCode either in the User 'settings.json' file, or in a local .vscode/settings.json.
Install the Python extension by Microsoft
Because ni-python-styleguide is a wrapper around flake8, you can add the following configuration to make it uses ni-python-styleguide's rules.
If using Poetry:
"flake8.path": [
"poetry",
"run",
"ni-python-styleguide",
"lint"
],If ni-python-styleguide is directly installed
"flake8.path": [
"ni-python-styleguide",
"lint"
],(alternatively, tell flake8 to use the ni-python-styleguide config - although this method does not evaluate what the module's application-import-names are)
"flake8.args": [
"--config=.venv\\lib\\site-packages\\ni_python_styleguide\\config.ini"
],Telling the formatter to use ni-python-styleguide's settings
(telling VS Code to use black and telling black to use ni-python-styleguide's settings file)
"[python]": {
"editor.formatOnType": true,
"editor.defaultFormatter": "ms-python.black-formatter"
},
"black-formatter.args": [
"--config=.venv\\lib\\site-packages\\ni_python_styleguide\\config.toml"
],| Back | FazBrowse Home | New Git URL |