"ASYNC100",# Async functions should not call blocking HTTP methods
"ASYNC101",# Async functions should not call `open`, `time.sleep`, or `subprocess` methods
"ASYNC102",# Async functions should not call synchronous `os` methods
# flake8-bugbear ('B')
"B002",# Python does not support the unary prefix increment operator (`++`)
"B003",# Assigning to `os.environ` doesn't clear the environment
"B004",# Using `hasattr(x, "__call__")` to test if x is callable is unreliable. Use `callable(x)` for consistent results.
"B005",# Using `.strip()` with multi-character strings is misleading the reader
"B006",# Do not use mutable data structures for argument defaults
"B007",# Loop control variable `{name}` not used within loop body
"B008",# Do not perform function call `{name}` in argument defaults
"B009",# Do not call `getattr` with a constant attribute value. It is not any safer than normal property access.
"B010",# Do not call `setattr` with a constant attribute value. It is not any safer than normal property access.
"B011",# Do not `assert False` (`python -O` removes these calls), raise `AssertionError()`
"B012",# `{name}` inside `finally` blocks cause exceptions to be silenced
"B013",# A length-one tuple literal is redundant. Write `except {name}` instead of `except ({name},)`.
"B014",# Exception handler with duplicate exception: `{name}`
"B015",# Pointless comparison. This comparison does nothing but waste CPU instructions. Either prepend `assert` or remove it.
"B016",# Cannot raise a literal. Did you intend to return it or raise an Exception?
"B017",# `{assertion}({exception})` should be considered evil
"B018",# Found useless expression. Either assign it to a variable or remove it.
"B019",# Use of `functools.lru_cache` or `functools.cache` on methods can lead to memory leaks
"B020",# Loop control variable `{name}` overrides iterable it iterates
"B021",# f-string used as docstring. Python will interpret this as a joined string, rather than a docstring.
"B022",# No arguments passed to `contextlib.suppress`. No exceptions will be suppressed and therefore this context manager is redundant
"B023",# Function definition does not bind loop variable `{name}`
"B024",# `{name}` is an abstract base class, but it has no abstract methods
"B025",# try-except block with duplicate exception `{name}`
"B026",# Star-arg unpacking after a keyword argument is strongly discouraged
"B027",# `{name}` is an empty method in an abstract base class, but has no abstract decorator
"B028",# No explicit `stacklevel` keyword argument found
"B029",# Using `except ():` with an empty tuple does not catch anything; add exceptions to handle
"B030",# `except` handlers should only be exception classes or tuples of exception classes
"B031",# Using the generator returned from `itertools.groupby()` more than once will do nothing on the second usage
"B032",# Possible unintentional type annotation (using `:`). Did you mean to assign (using `=`)?
"B033",# Sets should not contain duplicate item `{value}`
"B034",# `{method}` should pass `{param_name}` and `flags` as keyword arguments to avoid confusion due to unintuitive argument positions
"B904",# Within an `except` clause, raise exceptions with `raise ... from err` or `raise ... from None` to distinguish them from errors in exception handling
"B905",# `zip()` without an explicit `strict=` parameter
# flake8-blind-except ('BLE')
"BLE001",# Do not catch blind exception: `{name}`
# mccabe ('C')
"C400",# Unnecessary generator (rewrite as a `list` comprehension)
"C401",# Unnecessary generator (rewrite as a `set` comprehension)
"C402",# Unnecessary generator (rewrite as a `dict` comprehension)
"C403",# Unnecessary `list` comprehension (rewrite as a `set` comprehension)
"C404",# Unnecessary `list` comprehension (rewrite as a `dict` comprehension)
"C405",# Unnecessary `{obj_type}` literal (rewrite as a `set` literal)
"C406",# Unnecessary `{obj_type}` literal (rewrite as a `dict` literal)
"C408",# Unnecessary `{obj_type}` call (rewrite as a literal)
"C409",# Unnecessary `{literal}` literal passed to `tuple()` (rewrite as a `tuple` literal)
"C410",# Unnecessary `{literal}` literal passed to `list()` (remove the outer call to `list()`)
"C411",# Unnecessary `list` call (remove the outer call to `list()`)
"C413",# Unnecessary `{func}` call around `sorted()`
"C414",# Unnecessary `{inner}` call within `{outer}()`
"C415",# Unnecessary subscript reversal of iterable within `{func}()`
"C416",# Unnecessary `{obj_type}` comprehension (rewrite using `{obj_type}()`)
"C417",# Unnecessary `map` usage (rewrite using a {object_type})
"C418",# Unnecessary `dict` {kind} passed to `dict()` (remove the outer call to `dict()`)
"C419",# Unnecessary list comprehension.
"C901",# `{name}` is too complex ({complexity} > {max_complexity})
# flake8-commas ('COM')
"COM812",# Trailing comma missing
"COM818",# Trailing comma on bare tuple prohibited
"COM819",# Trailing comma prohibited
# pydocstyle ('D')
"D100",# Missing docstring in public module
"D101",# Missing docstring in public class
"D102",# Missing docstring in public method
"D103",# Missing docstring in public function
"D104",# Missing docstring in public package
"D105",# Missing docstring in magic method
"D106",# Missing docstring in public nested class
"D107",# Missing docstring in `__init__`
"D200",# One-line docstring should fit on one line
"D201",# No blank lines allowed before function docstring (found {num_lines})
"D202",# No blank lines allowed after function docstring (found {num_lines})
"D203",# 1 blank line required before class docstring
"D204",# 1 blank line required after class docstring
"D205",# 1 blank line required between summary line and description
"D206",# Docstring should be indented with spaces, not tabs
"D207",# Docstring is under-indented
"D208",# Docstring is over-indented
"D209",# Multi-line docstring closing quotes should be on a separate line
"D210",# No whitespaces allowed surrounding docstring text
"D211",# No blank lines allowed before class docstring
"D212",# Multi-line docstring summary should start at the first line
"D213",# Multi-line docstring summary should start at the second line
"D214",# Section is over-indented ("{name}")
"D215",# Section underline is over-indented ("{name}")
"D300",# Use triple double quotes `"""`
"D301",# Use `r"""` if any backslashes in a docstring
"D400",# First line should end with a period
"D401",# First line of docstring should be in imperative mood: "{first_line}"
"D402",# First line should not be the function's signature
"D403",# First word of the first line should be capitalized: `{}` -> `{}`
"D404",# First word of the docstring should not be "This"
"D405",# Section name should be properly capitalized ("{name}")
"D406",# Section name should end with a newline ("{name}")
"D407",# Missing dashed underline after section ("{name}")
"D408",# Section underline should be in the line following the section's name ("{name}")
"D409",# Section underline should match the length of its name ("{name}")
"D410",# Missing blank line after section ("{name}")
"D411",# Missing blank line before section ("{name}")
"D412",# No blank lines allowed between a section header and its content ("{name}")
"D413",# Missing blank line after last section ("{name}")
"D414",# Section has no content ("{name}")
"D415",# First line should end with a period, question mark, or exclamation point
"D416",# Section name should end with a colon ("{name}")
"D417",# Missing argument description in the docstring for `{definition}`: `{name}`
"D418",# Function decorated with `@overload` shouldn't contain a docstring
"D419",# Docstring is empty
# flake8-django ('DJ')
"DJ001",# Avoid using `null=True` on string-based fields such as {field_name}
"DJ003",# Avoid passing `locals()` as context to a `render` function
"DJ006",# Do not use `exclude` with `ModelForm`, use `fields` instead
"DJ007",# Do not use `__all__` with `ModelForm`, use `fields` instead
"DJ008",# Model does not define `__str__` method
"DJ012",# Order of model's inner classes, methods, and fields does not follow the Django Style Guide: {element_type} should come before {prev_element_type}
"DJ013",# `@receiver` decorator must be on top of all the other decorators
# flake8-datetimez ('DTZ')
"DTZ001",# The use of `datetime.datetime()` without `tzinfo` argument is not allowed
"DTZ002",# The use of `datetime.datetime.today()` is not allowed, use `datetime.datetime.now(tz=)` instead
"DTZ003",# The use of `datetime.datetime.utcnow()` is not allowed, use `datetime.datetime.now(tz=)` instead
"DTZ004",# The use of `datetime.datetime.utcfromtimestamp()` is not allowed, use `datetime.datetime.fromtimestamp(ts, tz=)` instead
"DTZ005",# The use of `datetime.datetime.now()` without `tz` argument is not allowed
"DTZ006",# The use of `datetime.datetime.fromtimestamp()` without `tz` argument is not allowed
"DTZ007",# The use of `datetime.datetime.strptime()` without %z must be followed by `.replace(tzinfo=)` or `.astimezone()`
"DTZ011",# The use of `datetime.date.today()` is not allowed, use `datetime.datetime.now(tz=).date()` instead
"DTZ012",# The use of `datetime.date.fromtimestamp()` is not allowed, use `datetime.datetime.fromtimestamp(ts, tz=).date()` instead
# pycodestyle ('E')
"E101",# Indentation contains mixed spaces and tabs
"RUF012",# Mutable class attributes should be annotated with `typing.ClassVar`
"RUF013",# PEP 484 prohibits implicit `Optional`
"RUF015",# Prefer `next({iterable})` over single element slice
"RUF016",# Slice in indexed access to type `{value_type}` uses type `{index_type}` instead of an integer.
"RUF100",# Unused `noqa` directive
"RUF200",# Failed to parse pyproject.toml: {}
# flake8-bandit ('S')
"S101",# Use of `assert` detected
"S102",# Use of `exec` detected
"S103",# `os.chmod` setting a permissive mask `{mask:#o}` on file or directory
"S104",# Possible binding to all interfaces
"S105",# Possible hardcoded password assigned to: "{}"
"S106",# Possible hardcoded password assigned to argument: "{}"
"S107",# Possible hardcoded password assigned to function default: "{}"
"S108",# Probable insecure usage of temporary file or directory: "{}"
"S110",# `try`-`except`-`pass` detected, consider logging the exception
"S112",# `try`-`except`-`continue` detected, consider logging the exception
"S113",# Probable use of requests call without timeout
"S301",# `pickle` and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue
"S302",# Deserialization with the `marshal` module is possibly dangerous
"S303",# Use of insecure MD2, MD4, MD5, or SHA1 hash function
"S304",# Use of insecure cipher, replace with a known secure cipher such as AES
"S305",# Use of insecure cipher mode, replace with a known secure cipher such as AES
"S306",# Use of insecure and deprecated function (`mktemp`)
"S307",# Use of possibly insecure function; consider using `ast.literal_eval`
"S308",# Use of `mark_safe` may expose cross-site scripting vulnerabilities
"S310",# Audit URL open for permitted schemes. Allowing use of `file:` or custom schemes is often unexpected.
"S311",# Standard pseudo-random generators are not suitable for cryptographic purposes
"S312",# Telnet-related functions are being called. Telnet is considered insecure. Use SSH or some other encrypted protocol.
"S313",# Using `xml` to parse untrusted data is known to be vulnerable to XML attacks; use `defusedxml` equivalents
"S314",# Using `xml` to parse untrusted data is known to be vulnerable to XML attacks; use `defusedxml` equivalents
"S315",# Using `xml` to parse untrusted data is known to be vulnerable to XML attacks; use `defusedxml` equivalents
"S316",# Using `xml` to parse untrusted data is known to be vulnerable to XML attacks; use `defusedxml` equivalents
"S317",# Using `xml` to parse untrusted data is known to be vulnerable to XML attacks; use `defusedxml` equivalents
"S318",# Using `xml` to parse untrusted data is known to be vulnerable to XML attacks; use `defusedxml` equivalents
"S319",# Using `xml` to parse untrusted data is known to be vulnerable to XML attacks; use `defusedxml` equivalents
"S320",# Using `lxml` to parse untrusted data is known to be vulnerable to XML attacks
"S321",# FTP-related functions are being called. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.
"S323",# Python allows using an insecure context via the `_create_unverified_context` that reverts to the previous behavior that does not validate certificates or perform hostname checks.
"S324",# Probable use of insecure hash functions in `hashlib`: `{string}`
"S501",# Probable use of `{string}` call with `verify=False` disabling SSL certificate checks
"S506",# Probable use of unsafe loader `{name}` with `yaml.load`. Allows instantiation of arbitrary objects. Consider `yaml.safe_load`.
"S508",# The use of SNMPv1 and SNMPv2 is insecure. Use SNMPv3 if able.
"S509",# You should not use SNMPv3 without encryption. `noAuthNoPriv` & `authNoPriv` is insecure.
"S601",# Possible shell injection via Paramiko call; check inputs are properly sanitized
"S602",# `subprocess` call with `shell=True` seems safe, but may be changed in the future; consider rewriting without `shell`
"S603",# `subprocess` call: check for execution of untrusted input
"S604",# Function call with `shell=True` parameter identified, security issue
"S605",# Starting a process with a shell: seems safe, but may be changed in the future; consider rewriting without `shell`
"S606",# Starting a process without a shell
"S607",# Starting a process with a partial executable path
"S608",# Possible SQL injection vector through string-based query construction
"S609",# Possible wildcard injection in call due to `*` usage
"S612",# Use of insecure `logging.config.listen` detected
"S701",# Using jinja2 templates with `autoescape=False` is dangerous and can lead to XSS. Ensure `autoescape=True` or use the `select_autoescape` function.
# flake8-simplify ('SIM')
"SIM101",# Multiple `isinstance` calls for `{name}`, merge into a single call
"SIM102",# Use a single `if` statement instead of nested `if` statements
"SIM103",# Return the condition `{condition}` directly
"SIM105",# Use `contextlib.suppress({exception})` instead of `try`-`except`-`pass`
"SIM107",# Don't use `return` in `try`-`except` and `finally`
"SIM108",# Use ternary operator `{contents}` instead of `if`-`else`-block
"SIM109",# Use `{replacement}` instead of multiple equality comparisons
"SIM110",# Use `{replacement}` instead of `for` loop
"SIM112",# Use capitalized environment variable `{expected}` instead of `{original}`
"SIM114",# Combine `if` branches using logical `or` operator
"SIM115",# Use context handler for opening files
"SIM116",# Use a dictionary instead of consecutive `if` statements
"SIM117",# Use a single `with` statement with multiple contexts instead of nested `with` statements
"SIM118",# Use `{key} {operator} {dict}` instead of `{key} {operator} {dict}.keys()`
"SIM201",# Use `{left} != {right}` instead of `not {left} == {right}`
"SIM202",# Use `{left} == {right}` instead of `not {left} != {right}`
"SIM208",# Use `{expr}` instead of `not (not {expr})`
"SIM210",# Use `bool({expr})` instead of `True if {expr} else False`
"SIM211",# Use `not {expr}` instead of `False if {expr} else True`
"SIM212",# Use `{expr_else} if {expr_else} else {expr_body}` instead of `{expr_body} if not {expr_else} else {expr_else}`
"SIM220",# Use `False` instead of `{name} and not {name}`
"SIM221",# Use `True` instead of `{name} or not {name}`
"SIM222",# Use `{expr}` instead of `{replaced}`
"SIM223",# Use `{expr}` instead of `{replaced}`
"SIM300",# Yoda conditions are discouraged, use `{suggestion}` instead
"SIM401",# Use `{contents}` instead of an `if` block
"SIM910",# Use `{expected}` instead of `{original}`
# flake8-self ('SLF')
"SLF001",# Private member accessed: `{access}`
# flake8-slots ('SLOT')
"SLOT000",# Subclasses of `str` should define `__slots__`
"SLOT001",# Subclasses of `tuple` should define `__slots__`
"SLOT002",# Subclasses of `collections.namedtuple()` should define `__slots__`
# flake8-print ('T')
"T100",# Trace found: `{name}` used
"T201",# `print` found
"T203",# `pprint` found
# flake8-type-checking ('TCH')
"TCH001",# Move application import `{}` into a type-checking block
"TCH002",# Move third-party import `{}` into a type-checking block
"TCH003",# Move standard library import `{}` into a type-checking block
"TCH004",# Move import `{qualified_name}` out of type-checking block. Import is used for more than type hinting.
"TCH005",# Found empty type-checking block
# flake8-todos ('TD')
"TD001",# Invalid TODO tag: `{tag}`
"TD002",# Missing author in TODO; try: `# TODO(<author_name>): ...` or `# TODO @<author_name>: ...`
"TD003",# Missing issue link on the line following this TODO
"TD004",# Missing colon in TODO
"TD005",# Missing issue description after `TODO`
"TD006",# Invalid TODO capitalization: `{tag}` should be `TODO`
"TD007",# Missing space after colon in TODO
# flake8-tidy-imports ('TID')
"TID251",# `{name}` is banned: {message}
"TID252",# Relative imports from parent modules are banned
# tryceratops ('TRY')
"TRY002",# Create your own exception
"TRY003",# Avoid specifying long messages outside the exception class
"TRY004",# Prefer `TypeError` exception for invalid type
"TRY200",# Use `raise from` to specify exception cause
"TRY201",# Use `raise` without specifying exception name
"TRY300",# Consider moving this statement to an `else` block
"TRY301",# Abstract `raise` to an inner function
"TRY302",# Remove exception handler; error is immediately re-raised
"TRY400",# Use `logging.exception` instead of `logging.error`
"TRY401",# Redundant exception object included in `logging.exception` call
# pyupgrade ('UP')
"UP001",# `__metaclass__ = type` is implied
"UP003",# Use `{}` instead of `type(...)`
"UP004",# Class `{name}` inherits from `object`
"UP005",# `{alias}` is deprecated, use `{target}`
"UP006",# Use `{to}` instead of `{from}` for type annotation
"UP007",# Use `X | Y` for type annotations
"UP008",# Use `super()` instead of `super(__class__, self)`
"UP009",# UTF-8 encoding declaration is unnecessary
"UP010",# Unnecessary `__future__` import `{import}` for target Python version
"UP011",# Unnecessary parentheses to `functools.lru_cache`
"UP012",# Unnecessary call to `encode` as UTF-8
"UP013",# Convert `{name}` from `TypedDict` functional to class syntax
"UP014",# Convert `{name}` from `NamedTuple` functional to class syntax
"UP015",# Unnecessary open mode parameters
"UP017",# Use `datetime.UTC` alias
"UP018",# Unnecessary `{literal_type}` call (rewrite as a literal)
"UP019",# `typing.Text` is deprecated, use `str`
"UP020",# Use builtin `open`
"UP021",# `universal_newlines` is deprecated, use `text`
"UP022",# Sending `stdout` and `stderr` to `PIPE` is deprecated, use `capture_output`
"UP023",# `cElementTree` is deprecated, use `ElementTree`
"UP024",# Replace aliased errors with `OSError`
"UP025",# Remove unicode literals from strings
"UP026",# `mock` is deprecated, use `unittest.mock`
"UP027",# Replace unpacked list comprehension with a generator expression
"UP028",# Replace `yield` over `for` loop with `yield from`
"UP029",# Unnecessary builtin import: `{import}`
"UP030",# Use implicit references for positional format fields
"UP031",# Use format specifiers instead of percent format
"UP032",# Use f-string instead of `format` call
"UP033",# Use `@functools.cache` instead of `@functools.lru_cache(maxsize=None)`
"UP034",# Avoid extraneous parentheses
"UP035",# Import from `{target}` instead: {names}
"UP036",# Version block is outdated for minimum Python version
"UP037",# Remove quotes from type annotation
"UP038",# Use `X | Y` in `{}` call instead of `(X, Y)`
"UP039",# Unnecessary parentheses after class definition
"UP040",# Type alias `{name}` uses `TypeAlias` annotation instead of the `type` keyword
# pycodestyle ('W')
"W191",# Indentation contains tabs
"W291",# Trailing whitespace
"W292",# No newline at end of file
"W293",# Blank line contains whitespace
"W505",# Doc line too long ({width} > {limit} characters)
"W605",# Invalid escape sequence: `\{char}`
# flake8-2020 ('YTT')
"YTT101",# `sys.version[:3]` referenced (python3.10), use `sys.version_info`
"YTT102",# `sys.version[2]` referenced (python3.10), use `sys.version_info`
"YTT103",# `sys.version` compared to string (python3.10), use `sys.version_info`
"YTT201",# `sys.version_info[0] == 3` referenced (python4), use `>=`
"YTT202",# `six.PY3` referenced (python4), use `not six.PY2`
"YTT203",# `sys.version_info[1]` compared to integer (python4), compare `sys.version_info` to tuple
"YTT204",# `sys.version_info.minor` compared to integer (python4), compare `sys.version_info` to tuple
"YTT301",# `sys.version[0]` referenced (python10), use `sys.version_info`
"YTT302",# `sys.version` compared to string (python10), use `sys.version_info`
"YTT303",# `sys.version[:1]` referenced (python10), use `sys.version_info`