[flake8]
select = C,E,F,W
exclude =
    ./build,
    # A trick to exclude fluid/ but keep fluid/tests/, see more at
    # https://github.com/PaddlePaddle/Paddle/pull/46290#discussion_r976392010
    ./python/paddle/fluid/[!t]**,
    ./python/paddle/fluid/tra**,
    # Exclude third-party libraries
    ./python/paddle/utils/gast/**,
ignore =
    # Whitespace before ‘,’, ‘;’, or ‘:’, it is not compatible with black
    E203,
    # Module level import not at top of file
    E402,
    # Line too long (82 > 79 characters)
    E501,
    # Do not compare types, use `isinstance()`
    E721,
    # Do not use bare except, specify exception instead
    E722,
    # Do not assign a lambda expression, use a def
    E731,
    # Do not use variables named ‘l’, ‘O’, or ‘I’
    E741,
    # `name` may be undefined, or defined from star imports: `module`
    F405,
    # Local variable name is assigned to but never used
    F841,
    # Line break before binary operator, it is not compatible with black
    W503
per-file-ignores =
    # These files need tabs for testing.
    test/dygraph_to_static/test_error.py:E101,W191
    python/paddle/fluid/tests/unittests/collective/fleet/test_hdfs1.py:E101,W191
    # Ignore unused imports in __init__.py
    __init__.py: F401
    # Ignore undefined variables in CMake config and some dygraph_to_static tests
    .cmake-format.py: F821
    test/dygraph_to_static/test_loop.py: F821
    test/dygraph_to_static/test_closure_analysis.py: F821
    python/paddle/static/amp/decorator.py: F811
