[flake8]

max-line-length = 119
extend-select = TC, TC1
ignore =
    # black disagrees with flake8 about these
    E203, E501, E701, E704, W503

    # Assigning to `os.environ` doesn't clear the environment.
    B003
    # Do not use mutable data structures for argument defaults.
    B006
    # Loop control variable not used within the loop body.
    B007
    # Do not perform function calls in argument defaults.
    B008
    # return/continue/break inside finally blocks cause exceptions to be
    # silenced.
    B012
    # Star-arg unpacking after a keyword argument is strongly discouraged
    B026
    # No explicit stacklevel argument found.
    B028

    # docstring does contain unindexed parameters
    P102
    # other string does contain unindexed parameters
    P103

    # Missing docstring in public module
    D100
    # Missing docstring in public class
    D101
    # Missing docstring in public method
    D102
    # Missing docstring in public function
    D103
    # Missing docstring in public package
    D104
    # Missing docstring in magic method
    D105
    # Missing docstring in public nested class
    D106
    # Missing docstring in __init__
    D107
    # One-line docstring should fit on one line with quotes
    D200
    # No blank lines allowed after function docstring
    D202
    # 1 blank line required between summary line and description
    D205
    # Multi-line docstring closing quotes should be on a separate line
    D209
    # First line should end with a period
    D400
    # First line should be in imperative mood; try rephrasing
    D401
    # First line should not be the function's "signature"
    D402
    # First word of the first line should be properly capitalized
    D403

    # Annotation in typing.cast() should be a string literal
    TC006
exclude =
    docs/conf.py

per-file-ignores =
# Exclude files that are meant to provide top-level imports
# E402: Module level import not at top of file
# F401: Module imported but unused
    scrapy/__init__.py:E402
    scrapy/core/downloader/handlers/http.py:F401
    scrapy/http/__init__.py:F401
    scrapy/linkextractors/__init__.py:E402,F401
    scrapy/selector/__init__.py:F401
    scrapy/spiders/__init__.py:E402,F401
    tests/CrawlerRunner/change_reactor.py:E402

    # Issues pending a review:
    scrapy/utils/url.py:F403,F405
    tests/test_loader.py:E741
