# The following rules are incompatible with or enforced by black:
#       E203 whitespace before ':' -- scripts only
#       E301 expected 1 blank line -- stubs only
#       E302 expected 2 blank lines -- stubs only
#       E305 expected 2 blank lines -- stubs only
#       E501 line too long

# Some rules are considered irrelevant to stub files:
#       E701 multiple statements on one line (colon) -- disallows "..." on the same line
#       F401 imported but unused -- does not recognize re-exports
#            https://github.com/PyCQA/pyflakes/issues/474
#       F822 undefined name in __all__ -- flake8 does not recognize 'foo: Any'
#            https://github.com/PyCQA/pyflakes/issues/533

# Rules that are out of the control of stub authors:
#       E741 ambiguous variable name
#       F403 import *' used; unable to detect undefined names
#       F405 defined from star imports

# Rules that we'd like to enable in the future:
#       Y026 Use typing_extensions.TypeAlias for type aliases (blocked by #4913)
#       Y027 Disallow importing typing.ContextManager, typing.OrderedDict &
#            typing_extensions.OrderedDict (cannot be globally enabled while typeshed
#            still contains stubs supporting Python 2).
#       Y034 Detect common errors where certain methods are annotated as having a fixed
#            return type, despite returning self at runtime (temporarily disabled for
#            typing.pyi, enabled elsewhere).

[flake8]
per-file-ignores =
  *.py: E203, E501
  *.pyi: E301, E302, E305, E501, E701, E741, F401, F403, F405, F822, Y026
  # Since typing.pyi defines "overload" this is not recognized by flake8 as typing.overload.
  # Unfortunately, flake8 does not allow to "noqa" just a specific error inside the file itself.
  # https://github.com/PyCQA/flake8/issues/1079
  #     F811 redefinition of unused '...'
  stubs/*.pyi: E301, E302, E305, E501, E701, E741, F401, F403, F405, F822, Y026, Y027
  stdlib/@python2/*.pyi: E301, E302, E305, E501, E701, E741, F401, F403, F405, F822, Y026, Y027
  stdlib/@python2/typing.pyi: E301, E302, E305, E501, E701, E741, F401, F403, F405, F811, F822, Y026, Y027
  stdlib/typing.pyi: E301, E302, E305, E501, E701, E741, F401, F403, F405, F811, F822, Y026, Y034

# We are checking with Python 3 but many of the stubs are Python 2 stubs.
builtins = buffer,file,long,raw_input,unicode,xrange
exclude = .venv*,.git,*_pb2.pyi
