add flake8 and config

This commit is contained in:
Jimmy Lai 2019-07-12 15:28:17 -07:00 committed by Benjamin Woodruff
parent d615628c86
commit 08bb31b577
2 changed files with 136 additions and 1 deletions

131
.flake8 Normal file
View file

@ -0,0 +1,131 @@
[flake8]
ignore =
T400,T484,T499 # can't prevent flake8-mypy from running, but we can ignore it
P209, # is about @csrf_protect, we have @performs_writes instead
B001, # Do not use bare except:, IG90 will catch this.
C407, # unnecessary list comprehension; A generator only better than a list
# comprehension if we don't always need to iterate through all items in
# the generator (based on the use case).
# The following codes belong to pycodestyle, and overlap with black:
E101, # indentation contains mixed spaces and tabs; is subset of TXT2 (Tab
# Literal).
E111, # indentation is not a multiple of four
E112, # expected an indented block
E113, # unexpected indentation
E114, # indentation is not a multiple of four (comment)
E115, # expected an indented block (comment)
E116, # unexpected indentation (comment)
E121, # continuation line under-indented for hanging indent
E122, # continuation line missing indentation or outdented
E123, # closing bracket does not match indentation of opening brackets line
E124, # closing bracket does not match visual indentation
E125, # continuation line with same indent as next logical line
E126, # continuation line over-indented for hanging indent
E127, # continuation line over-indented for visual indent; is harmless
# (over-indent is visually unambiguous) and currently generates too
# many warnings for existing code.
E128, # continuation line under-indented for visual indent
E129, # visually indented line with same indent as next logical line
E131, # continuation line unaligned for hanging indent
E133, # closing bracket is missing indentation
E201, # whitespace after (
E202, # whitespace before )
E203, # whitespace before :; this warning is invalid for slices
E211, # whitespace before (
E221, # multiple spaces before operator
E222, # multiple spaces after operator
E223, # tab before operator
E224, # tab after operator
E225, # missing whitespace around operator
E226, # missing whitespace around arithmetic operator
E227, # missing whitespace around bitwise or shift operator
E228, # missing whitespace around modulo operator
E231, # missing whitespace after ,, ;, or :
E241, # multiple spaces after ,
E242, # tab after ,
E251, # unexpected spaces around keyword / parameter equals
E261, # at least two spaces before inline comment
E262, # inline comment should start with #
E265, # block comment should start with #
E266, # too many leading # for block comment
E271, # multiple spaces after keyword
E272, # multiple spaces before keyword
E273, # tab after keyword
E274, # tab before keyword
E275, # missing whitespace after keyword
E301, # expected 1 blank line, found 0
E302, # expected 2 blank lines, found 0
E303, # too many blank lines (3)
E304, # blank lines found after function decorator
E305, # expected 2 blank lines after end of function or class
E306, # expected 1 blank line before a nested definition
E401, # multiple imports on one line
E402, # module level import not at top of file; warns on imports coming after
# statements. There are important use cases like demandimport
# (https://fburl.com/demandimport) that require statements before
# imports.
E501, # line too long (82 > 79 characters); is same as TXT3 (Line Too Long).
E502, # the backslash is redundant between brackets
E701, # multiple statements on one line (colon)
E702, # multiple statements on one line (semicolon)
E703, # statement ends with a semicolon
E704, # multiple statements on one line (def)
# These are pycodestyle lints that black doesn't catch:
# E711, # comparison to None should be if cond is None:
# E712, # comparison to True should be if cond is True: or if cond:
# E713, # test for membership should be not in
# E714, # test for object identity should be is not
# E721, # do not compare types, use isinstance()
# E722, # do not use bare except, specify exception instead
# E731, # do not assign a lambda expression, use a def
# E741, # do not use variables 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
# I think these are internal to pycodestyle?
# E901, # SyntaxError or IndentationError
# E902, # IOError
W191, # indentation contains tabs
W291, # trailing whitespace; is same as TXT6 (Trailing Whitespace).
W292, # no newline at end of file; is same as TXT4 (File Does Not End in
# Newline).
W293, # blank line contains whitespace; is same as TXT6 (Trailing
# Whitespace).
W391, # blank line at end of file; is same as TXT9 (Trailing Whitespace at
# End of File).
W503, # line break before binary operator; binary operator in a new line is
# the standard
W504, # line break after binary operator
W505, # not part of PEP8; doc line too long (82 > 79 characters)
# These are pycodestyle lints that black doesn't catch:
# W601, # .has_key() is deprecated, use in
# W602, # deprecated form of raising exception
# W603, # <> is deprecated, use !=
# W604, # backticks are deprecated, use repr()
# W605, # invalid escape sequence x
# W606, # async and await are reserved keywords starting with Python 3.7
# We should've silenced all of Flake8's line-length related lints, in favor of
# Black. However, let's just set this to a large value just to be safe, in case
# we accidentally left in a line-length related lint rule. If we don't set
# anything, it defaults to 79, which is also wrong.
max-line-length = 999
exclude =
# version control
.svn,
CVS,
.bzr,
.hg,
.git,
# caches and environment
__pycache__,
.tox,
.eggs,
*.egg,
# Thrift-generated files
ttypes.py
max-complexity = 12

View file

@ -2,4 +2,8 @@
envlist = py36, py37
[testenv]
commands = python -m unittest
deps = flake8
commands =
python -m unittest
flake8