Merge #15219: lint: Enable python linters via an array

948d8f4f10 lint: Enable python linters via an array (Ben Woosley)

Pull request description:

  This assures consistent recording of the enabled linters.

  This applies the same fix as #15170 to lint-python.sh

Tree-SHA512: 6d03f919e86e7c2465475c88b25dd84391282bcc11728078024daf0432a7dccddf9e4a2cdae35d6ef374971cb4e12f0fa21b58f757e25f2fe7c12ceb4f4b2c57
This commit is contained in:
Wladimir J. van der Laan 2019-01-21 20:50:32 +01:00
commit 9bad1e0b22
No known key found for this signature in database
GPG key ID: 1E4AED62986CD25D

View file

@ -1,4 +1,4 @@
#!/bin/sh #!/usr/bin/env bash
# #
# Copyright (c) 2017 The Bitcoin Core developers # Copyright (c) 2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying # Distributed under the MIT software license, see the accompanying
@ -8,77 +8,79 @@
export LC_ALL=C export LC_ALL=C
# E101 indentation contains mixed spaces and tabs enabled=(
# E112 expected an indented block E101 # indentation contains mixed spaces and tabs
# E113 unexpected indentation E112 # expected an indented block
# E115 expected an indented block (comment) E113 # unexpected indentation
# E116 unexpected indentation (comment) E115 # expected an indented block (comment)
# E125 continuation line with same indent as next logical line E116 # unexpected indentation (comment)
# E129 visually indented line with same indent as next logical line E125 # continuation line with same indent as next logical line
# E131 continuation line unaligned for hanging indent E129 # visually indented line with same indent as next logical line
# E133 closing bracket is missing indentation E131 # continuation line unaligned for hanging indent
# E223 tab before operator E133 # closing bracket is missing indentation
# E224 tab after operator E223 # tab before operator
# E242 tab after ',' E224 # tab after operator
# E266 too many leading '#' for block comment E242 # tab after ','
# E271 multiple spaces after keyword E266 # too many leading '#' for block comment
# E272 multiple spaces before keyword E271 # multiple spaces after keyword
# E273 tab after keyword E272 # multiple spaces before keyword
# E274 tab before keyword E273 # tab after keyword
# E275 missing whitespace after keyword E274 # tab before keyword
# E304 blank lines found after function decorator E275 # missing whitespace after keyword
# E306 expected 1 blank line before a nested definition E304 # blank lines found after function decorator
# E401 multiple imports on one line E306 # expected 1 blank line before a nested definition
# E402 module level import not at top of file E401 # multiple imports on one line
# F403 'from foo_module import *' used; unable to detect undefined names E402 # module level import not at top of file
# F405 foo_function may be undefined, or defined from star imports: bar_module E502 # the backslash is redundant between brackets
# E502 the backslash is redundant between brackets E701 # multiple statements on one line (colon)
# E701 multiple statements on one line (colon) E702 # multiple statements on one line (semicolon)
# E702 multiple statements on one line (semicolon) E703 # statement ends with a semicolon
# E703 statement ends with a semicolon E711 # comparison to None should be 'if cond is None:'
# E711 comparison to None should be 'if cond is None:' E714 # test for object identity should be "is not"
# E714 test for object identity should be "is not" E721 # do not compare types, use "isinstance()"
# E721 do not compare types, use "isinstance()" E741 # do not use variables named "l", "O", or "I"
# E741 do not use variables named "l", "O", or "I" E742 # do not define classes named "l", "O", or "I"
# E742 do not define classes named "l", "O", or "I" E743 # do not define functions named "l", "O", or "I"
# E743 do not define functions named "l", "O", or "I" E901 # SyntaxError: invalid syntax
# E901 SyntaxError: invalid syntax E902 # TokenError: EOF in multi-line string
# E902 TokenError: EOF in multi-line string F401 # module imported but unused
# F401 module imported but unused F402 # import module from line N shadowed by loop variable
# F402 import module from line N shadowed by loop variable F403 # 'from foo_module import *' used; unable to detect undefined names
# F404 future import(s) name after other statements F404 # future import(s) name after other statements
# F406 "from module import *" only allowed at module level F405 # foo_function may be undefined, or defined from star imports: bar_module
# F407 an undefined __future__ feature name was imported F406 # "from module import *" only allowed at module level
# F601 dictionary key name repeated with different values F407 # an undefined __future__ feature name was imported
# F602 dictionary key variable name repeated with different values F601 # dictionary key name repeated with different values
# F621 too many expressions in an assignment with star-unpacking F602 # dictionary key variable name repeated with different values
# F622 two or more starred expressions in an assignment (a, *b, *c = d) F621 # too many expressions in an assignment with star-unpacking
# F631 assertion test is a tuple, which are always True F622 # two or more starred expressions in an assignment (a, *b, *c = d)
# F701 a break statement outside of a while or for loop F631 # assertion test is a tuple, which are always True
# F702 a continue statement outside of a while or for loop F701 # a break statement outside of a while or for loop
# F703 a continue statement in a finally block in a loop F702 # a continue statement outside of a while or for loop
# F704 a yield or yield from statement outside of a function F703 # a continue statement in a finally block in a loop
# F705 a return statement with arguments inside a generator F704 # a yield or yield from statement outside of a function
# F706 a return statement outside of a function/method F705 # a return statement with arguments inside a generator
# F707 an except: block as not the last exception handler F706 # a return statement outside of a function/method
# F811 redefinition of unused name from line N F707 # an except: block as not the last exception handler
# F812 list comprehension redefines 'foo' from line N F811 # redefinition of unused name from line N
# F821 undefined name 'Foo' F812 # list comprehension redefines 'foo' from line N
# F822 undefined name name in __all__ F821 # undefined name 'Foo'
# F823 local variable name … referenced before assignment F822 # undefined name name in __all__
# F831 duplicate argument name in function definition F823 # local variable name … referenced before assignment
# F841 local variable 'foo' is assigned to but never used F831 # duplicate argument name in function definition
# W191 indentation contains tabs F841 # local variable 'foo' is assigned to but never used
# W291 trailing whitespace W191 # indentation contains tabs
# W292 no newline at end of file W291 # trailing whitespace
# W293 blank line contains whitespace W292 # no newline at end of file
# W504 line break after binary operator W293 # blank line contains whitespace
# W601 .has_key() is deprecated, use "in" W504 # line break after binary operator
# W602 deprecated form of raising exception W601 # .has_key() is deprecated, use "in"
# W603 "<>" is deprecated, use "!=" W602 # deprecated form of raising exception
# W604 backticks are deprecated, use "repr()" W603 # "<>" is deprecated, use "!="
# W605 invalid escape sequence "x" W604 # backticks are deprecated, use "repr()"
# W606 'async' and 'await' are reserved keywords starting with Python 3.7 W605 # invalid escape sequence "x"
W606 # 'async' and 'await' are reserved keywords starting with Python 3.7
)
if ! command -v flake8 > /dev/null; then if ! command -v flake8 > /dev/null; then
echo "Skipping Python linting since flake8 is not installed. Install by running \"pip3 install flake8\"" echo "Skipping Python linting since flake8 is not installed. Install by running \"pip3 install flake8\""
@ -88,4 +90,4 @@ elif PYTHONWARNINGS="ignore" flake8 --version | grep -q "Python 2"; then
exit 0 exit 0
fi fi
PYTHONWARNINGS="ignore" flake8 --ignore=B,C,E,F,I,N,W --select=E101,E112,E113,E115,E116,E125,E129,E131,E133,E223,E224,E242,E266,E271,E272,E273,E274,E275,E304,E306,E401,E402,E502,E701,E702,E703,E711,E714,E721,E741,E742,E743,E901,E902,F401,F402,F403,F404,F405,F406,F407,F601,F602,F621,F622,F631,F701,F702,F703,F704,F705,F706,F707,F811,F812,F821,F822,F823,F831,F841,W191,W291,W292,W293,W504,W601,W602,W603,W604,W605,W606 "${@:-.}" PYTHONWARNINGS="ignore" flake8 --ignore=B,C,E,F,I,N,W --select=$(IFS=","; echo "${enabled[*]}") "${@:-.}"