[flake8]

ignore =
  # 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).
  C407,
  # The following codes belong to pycodestyle, and overlap with black:
  # indentation contains mixed spaces and tabs
  E101,
  # indentation is not a multiple of four
  E111,
  # expected an indented block
  E112,
  # unexpected indentation
  E113,
  # indentation is not a multiple of four (comment)
  E114,
  # expected an indented block (comment)
  E115,
  # unexpected indentation (comment)
  E116,
  # continuation line under-indented for hanging indent
  E121,
  # continuation line missing indentation or outdented
  E122,
  # closing bracket does not match indentation of opening bracket’s line
  E123,
  # closing bracket does not match visual indentation
  E124,
  # continuation line with same indent as next logical line
  E125,
  # continuation line over-indented for hanging indent
  E126,
  # continuation line over-indented for visual indent; is harmless
  # (over-indent is visually unambiguous) and currently generates too
  # many warnings for existing code.
  E127,
         
  # continuation line under-indented for visual indent
  E128,
  # visually indented line with same indent as next logical line
  E129,
  # continuation line unaligned for hanging indent
  E131,
  # closing bracket is missing indentation
  E133,
  # whitespace after ‘(‘
  E201,
  # whitespace before ‘)’
  E202,
  # whitespace before ‘:’; this warning is invalid for slices
  E203,
  # whitespace before ‘(‘
  E211,
  # multiple spaces before operator
  E221,
  # multiple spaces after operator
  E222,
  # tab before operator
  E223,
  # tab after operator
  E224,
  # missing whitespace around operator
  E225,
  # missing whitespace around arithmetic operator
  E226,
  # missing whitespace around bitwise or shift operator
  E227,
  # missing whitespace around modulo operator
  E228,
  # missing whitespace after ‘,’, ‘;’, or ‘:’
  E231,
  # multiple spaces after ‘,’
  E241,
  # tab after ‘,’
  E242,
  # unexpected spaces around keyword / parameter equals
  E251,
  # at least two spaces before inline comment
  E261,
  # inline comment should start with ‘# ‘
  E262,
  # block comment should start with ‘# ‘
  E265,
  # too many leading ‘#’ for block comment
  E266,
  # multiple spaces after keyword
  E271,
  # multiple spaces before keyword
  E272,
  # tab after keyword
  E273,
  # tab before keyword
  E274,
  # missing whitespace after keyword
  E275,
  # expected 1 blank line, found 0
  E301,
  # expected 2 blank lines, found 0
  E302,
  # too many blank lines (3)
  E303,
  # blank lines found after function decorator
  E304,
  # expected 2 blank lines after end of function or class
  E305,
  # expected 1 blank line before a nested definition
  E306,
  # multiple imports on one line
  E401,
  # line too long (> 79 characters)
  E501,
  # the backslash is redundant between brackets
  E502,
  # multiple statements on one line (colon)
  E701,
  # multiple statements on one line (semicolon)
  E702,
  # statement ends with a semicolon
  E703,
  # multiple statements on one line (def)
  E704,
  # 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
  # isn't aware of type-only imports, results in false-positives
  F811,
  # indentation contains tabs
  W191,
  # trailing whitespace
  W291,
  # no newline at end of file
  W292,
  # blank line contains whitespace
  W293,
  # blank line at end of file
  W391,
  # line break before binary operator; binary operator in a new line is
  # the standard
  W503,
  # line break after binary operator
  W504,
  # not part of PEP8; doc line too long (> 79 characters)
  W505,
  # 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 =
  .pyre,
  __pycache__,
  .tox,
  native,

max-complexity = 12

