67d27841ae
This adds necessary configuration for flake8 and black to work together. This also sets the line length to 99, per the data here: * https://github.com/spack/spack/pull/24718#issuecomment-876933636 Given the data and the spirit of black's 88-character limit, we set the limit to 99 characters for all of Spack, because: * 99 is one less than 100, a nice round number, and all lines will fit in a 100-character wide terminal (even when the text editor puts a \ at EOL). * 99 is just past the knee the file size curve for packages, and it means that packages remain readable and not significantly longer than they are now. * It doesn't seem to hurt core -- files in core might change length by a few percent but seem like they'll be mostly the same as before -- just a bit more roomy. - [x] set line length to 99 - [x] remove most exceptions from `.flake8` and add the ones black cares about - [x] add `[tool.black]` to `pyproject.toml` - [x] make `black` run if available in `spack style --fix` Co-Authored-By: Tom Scogland <tscogland@llnl.gov>
55 lines
1.4 KiB
INI
55 lines
1.4 KiB
INI
# -*- conf -*-
|
|
# flake8 settings for Spack.
|
|
#
|
|
# These exceptions are for Spack core files. We're slightly more lenient
|
|
# with packages. See .flake8_packages for that.
|
|
#
|
|
# This is the only flake8 rule Spack violates somewhat flagrantly
|
|
# - E731: do not assign a lambda expression, use a def
|
|
#
|
|
# This is the only flake8 exception needed when using Black.
|
|
# - E203: white space around slice operators can be required, ignore : warn
|
|
#
|
|
# We still allow these in packages (Would like to get rid of them or rely on mypy
|
|
# in the future)
|
|
# - F403: from/import * used; unable to detect undefined names
|
|
# - F405: undefined name or from *
|
|
# - F821: undefined name (needed with from/import *)
|
|
#
|
|
[flake8]
|
|
#ignore = E129,,W503,W504,F999,N801,N813,N814,F403,F405,E203
|
|
extend-ignore = E731,E203
|
|
max-line-length = 99
|
|
|
|
# F4: Import
|
|
# - F405: `name` may be undefined, or undefined from star imports: `module`
|
|
#
|
|
# F8: Name
|
|
# - F821: undefined name `name`
|
|
#
|
|
per-file-ignores =
|
|
var/spack/repos/*/package.py:F403,F405,F821
|
|
|
|
# exclude things we usually do not want linting for.
|
|
# These still get linted when passed explicitly, as when spack flake8 passes
|
|
# them on the command line.
|
|
exclude =
|
|
.git
|
|
etc/
|
|
opt/
|
|
share/
|
|
var/spack/cache/
|
|
var/spack/gpg*/
|
|
var/spack/junit-report/
|
|
var/spack/mock-configs/
|
|
lib/spack/external
|
|
__pycache__
|
|
var
|
|
|
|
format = spack
|
|
|
|
[flake8:local-plugins]
|
|
report =
|
|
spack = flake8_formatter:SpackFormatter
|
|
paths =
|
|
./share/spack/qa/
|