diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2021-07-05 21:43:52 -0700 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2022-07-31 13:29:20 -0700 |
commit | 67d27841ae796f02bce3efa465d20211f5f3f084 (patch) | |
tree | 9c315560e8a1a1edecc15a334a7ed48ae1488398 /.flake8 | |
parent | ec879240396b457f8bf05361a7d55280e0fa19fb (diff) | |
download | spack-67d27841ae796f02bce3efa465d20211f5f3f084.tar.gz spack-67d27841ae796f02bce3efa465d20211f5f3f084.tar.bz2 spack-67d27841ae796f02bce3efa465d20211f5f3f084.tar.xz spack-67d27841ae796f02bce3efa465d20211f5f3f084.zip |
black: configuration
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>
Diffstat (limited to '.flake8')
-rw-r--r-- | .flake8 | 42 |
1 files changed, 12 insertions, 30 deletions
@@ -1,43 +1,25 @@ # -*- conf -*- -# flake8 settings for Spack core files. +# flake8 settings for Spack. # # These exceptions are for Spack core files. We're slightly more lenient # with packages. See .flake8_packages for that. # -# E1: Indentation -# - E129: visually indented line with same indent as next logical line -# -# E2: Whitespace -# - E221: multiple spaces before operator -# - E241: multiple spaces after ',' -# - E272: multiple spaces before keyword -# -# E7: Statement +# This is the only flake8 rule Spack violates somewhat flagrantly # - E731: do not assign a lambda expression, use a def # -# W5: Line break warning -# - W503: line break before binary operator -# - W504: line break after binary operator -# -# These are required to get the package.py files to test clean: -# - F999: syntax error in doctest -# -# N8: PEP8-naming -# - N801: class names should use CapWords convention -# - N813: camelcase imported as lowercase -# - N814: camelcase imported as constant +# This is the only flake8 exception needed when using Black. +# - E203: white space around slice operators can be required, ignore : warn # -# F4: pyflakes import checks, these are now checked by mypy more precisely -# - F403: from module import * +# 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 * -# -# Black ignores, these are incompatible with black style and do not follow PEP-8 -# - E203: white space around slice operators can be required, ignore : warn -# - W503: see above, already ignored for line-breaks +# - F821: undefined name (needed with from/import *) # [flake8] -ignore = E129,E221,E241,E272,E731,W503,W504,F999,N801,N813,N814,F403,F405 -max-line-length = 88 +#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` @@ -46,7 +28,7 @@ max-line-length = 88 # - F821: undefined name `name` # per-file-ignores = - var/spack/repos/*/package.py:F405,F821 + 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 |