Skip to content

Rules

Ruff supports over 900 lint rules, many of which are inspired by popular tools like Flake8, isort, pyupgrade, and others. Regardless of the rule's origin, Ruff re-implements every rule in Rust as a first-party feature.

By default, Ruff enables rules from the F, E, B, UP, and RUF categories, as well as many more, omitting any stylistic rules that overlap with the use of a formatter, like ruff format or Black.

If you're just getting started with Ruff, the default rule set is a great place to start: it catches a wide variety of common errors (like unused imports) with zero configuration. See Default Rules for the complete list.

Rule legend

Legend

    ๐Ÿงช     The rule is unstable and is in "preview".
    โš ๏ธ     The rule has been deprecated and will be removed in a future release.
    โŒ     The rule has been removed only the documentation is available.
    ๐Ÿ› ๏ธ     The rule is automatically fixable by the --fix command-line option.
    โœ…     The rule is enabled by default.

All rules not marked as preview, deprecated or removed are stable.

Code Rule Category Linter Status
AIR001 airflow-variable-name-task-id-mismatch
Task variable name should match the task_id: "{task_id}"
style Airflow
Rule has been stable since v0.0.271
AIR002 airflow-dag-no-schedule-argument
DAG or @dag should have an explicit schedule argument
suspicious Airflow
Rule has been stable since 0.13.0
AIR003 airflow-variable-get-outside-task
Variable.get() outside of a task
suspicious Airflow
Rule has been in preview since 0.15.6
AIR004 airflow-task-branch-as-short-circuit
@task.branch can be replaced with @task.short_circuit
complexity Airflow
Rule has been in preview since 0.15.12
AIR201 airflow-xcom-pull-in-template-string
Use the .output attribute on the task object for "{task_id}" instead of xcom_pull in a template string
complexity Airflow
Rule has been in preview since 0.15.11Automatic fix available
AIR202 airflow-task-implicit-multiple-outputs
@task-decorated function relies on multiple_outputs inference
style Airflow
Rule has been in preview since 0.15.14Automatic fix available
AIR301 airflow3-removal
{deprecated} is removed in Airflow 3.0
pedantic Airflow
Rule has been stable since 0.13.0Automatic fix available
AIR302 airflow3-moved-to-provider
{deprecated} is moved into {provider} provider in Airflow 3.0;
pedantic Airflow
Rule has been stable since 0.13.0Automatic fix available
AIR303 airflow3-incompatible-function-signature
{function_name} signature is changed in Airflow 3.0
pedantic Airflow
Rule has been stable since 0.16.0
AIR304 airflow3-dag-dynamic-value
{function_name}() produces a value that changes at runtime; using it in a Dag or task argument causes infinite Dag version creation
correctness Airflow
Rule has been in preview since 0.15.6
AIR311 airflow3-suggested-update
{deprecated} is removed in Airflow 3.0; It still works in Airflow 3.0 but is expected to be removed in a future version.
pedantic Airflow
Rule has been stable since 0.13.0Automatic fix available
AIR312 airflow3-suggested-to-move-to-provider
{deprecated} is deprecated and moved into {provider} provider in Airflow 3.0; It still works in Airflow 3.0 but is expected to be removed in a future version.
pedantic Airflow
Rule has been stable since 0.13.0Automatic fix available
AIR321 airflow31-moved
{deprecated} is moved in Airflow 3.1
pedantic Airflow
Rule has been in preview since 0.15.1Automatic fix available
ERA001 commented-out-code
Found commented-out code
pedantic eradicate
Rule has been stable since v0.0.145
FAST001 fast-api-redundant-response-model
FastAPI route with redundant response_model argument
complexity FastAPI
Rule has been stable since 0.8.0Automatic fix available
FAST002 fast-api-non-annotated-dependency
FastAPI dependency without Annotated
style FastAPI
Rule has been stable since 0.8.0Automatic fix available
FAST003 fast-api-unused-path-parameter
Parameter {arg_name} appears in route path, but not in {function_name} signature
suspicious FastAPI
Rule has been stable since 0.10.0Automatic fix available
YTT101 sys-version-slice3
sys.version[:3] referenced (python3.10), use sys.version_info
suspicious flake8-2020
Rule has been stable since v0.0.113Enabled by default
YTT102 sys-version2
sys.version[2] referenced (python3.10), use sys.version_info
suspicious flake8-2020
Rule has been stable since v0.0.113Enabled by default
YTT103 sys-version-cmp-str3
sys.version compared to string (python3.10), use sys.version_info
suspicious flake8-2020
Rule has been stable since v0.0.113Enabled by default
YTT201 sys-version-info0-eq3
sys.version_info[0] == 3 referenced (python4), use >=
suspicious flake8-2020
Rule has been stable since v0.0.113Enabled by default
YTT202 six-py3
six.PY3 referenced (python4), use not six.PY2
suspicious flake8-2020
Rule has been stable since v0.0.113Enabled by default
YTT203 sys-version-info1-cmp-int
sys.version_info[1] compared to integer (python4), compare sys.version_info to tuple
suspicious flake8-2020
Rule has been stable since v0.0.113Enabled by default
YTT204 sys-version-info-minor-cmp-int
sys.version_info.minor compared to integer (python4), compare sys.version_info to tuple
suspicious flake8-2020
Rule has been stable since v0.0.113Enabled by default
YTT301 sys-version0
sys.version[0] referenced (python10), use sys.version_info
suspicious flake8-2020
Rule has been stable since v0.0.113Enabled by default
YTT302 sys-version-cmp-str10
sys.version compared to string (python10), use sys.version_info
suspicious flake8-2020
Rule has been stable since v0.0.113Enabled by default
YTT303 sys-version-slice1
sys.version[:1] referenced (python10), use sys.version_info
suspicious flake8-2020
Rule has been stable since v0.0.113Enabled by default
ANN001 missing-type-function-argument
Missing type annotation for function argument {name}
pedantic flake8-annotations
Rule has been stable since v0.0.105
ANN002 missing-type-args
Missing type annotation for *{name}
pedantic flake8-annotations
Rule has been stable since v0.0.105
ANN003 missing-type-kwargs
Missing type annotation for **{name}
pedantic flake8-annotations
Rule has been stable since v0.0.105
ANN101 missing-type-self
Missing type annotation for {name} in method
pedantic flake8-annotations
Rule was removed in 0.8.0
ANN102 missing-type-cls
Missing type annotation for {name} in classmethod
pedantic flake8-annotations
Rule was removed in 0.8.0
ANN201 missing-return-type-undocumented-public-function
Missing return type annotation for public function {name}
pedantic flake8-annotations
Rule has been stable since v0.0.105Automatic fix available
ANN202 missing-return-type-private-function
Missing return type annotation for private function {name}
pedantic flake8-annotations
Rule has been stable since v0.0.105Automatic fix available
ANN204 missing-return-type-special-method
Missing return type annotation for special method {name}
pedantic flake8-annotations
Rule has been stable since v0.0.105Automatic fix available
ANN205 missing-return-type-static-method
Missing return type annotation for staticmethod {name}
pedantic flake8-annotations
Rule has been stable since v0.0.105Automatic fix available
ANN206 missing-return-type-class-method
Missing return type annotation for classmethod {name}
pedantic flake8-annotations
Rule has been stable since v0.0.105Automatic fix available
ANN401 any-type
Dynamically typed expressions (typing.Any) are disallowed in {name}
pedantic flake8-annotations
Rule has been stable since v0.0.108
ASYNC100 cancel-scope-no-checkpoint
A with {method_name}(...): context does not contain any await statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
suspicious flake8-async
Rule has been stable since v0.0.269Enabled by default
ASYNC105 trio-sync-call
Call to {method_name} is not immediately awaited
suspicious flake8-async
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
ASYNC109 async-function-with-timeout
Async function definition with a timeout parameter
pedantic flake8-async
Rule has been stable since 0.5.0
ASYNC110 async-busy-wait
Use {module}.Event instead of awaiting {module}.sleep in a while loop
pedantic flake8-async
Rule has been stable since 0.5.0
ASYNC115 async-zero-sleep
Use {module}.lowlevel.checkpoint() instead of {module}.sleep(0)
style flake8-async
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
ASYNC116 long-sleep-not-forever
{module}.sleep() with >24 hour interval should usually be {module}.sleep_forever()
style flake8-async
Rule has been stable since 0.13.0Automatic fix availableEnabled by default
ASYNC119 yield-in-context-manager-in-async-generator
Yield in context manager in async generator may not trigger cleanup
pedantic flake8-async
Rule has been in preview since 0.15.16
ASYNC210 blocking-http-call-in-async-function
Async functions should not call blocking HTTP methods
suspicious flake8-async
Rule has been stable since 0.5.0Enabled by default
ASYNC212 blocking-http-call-httpx-in-async-function
Blocking httpx method {name}.{call}() in async context, use httpx.AsyncClient
suspicious flake8-async
Rule has been stable since 0.15.0
ASYNC220 create-subprocess-in-async-function
Async functions should not create subprocesses with blocking methods
suspicious flake8-async
Rule has been stable since 0.5.0Enabled by default
ASYNC221 run-process-in-async-function
Async functions should not run processes with blocking methods
suspicious flake8-async
Rule has been stable since 0.5.0Enabled by default
ASYNC222 wait-for-process-in-async-function
Async functions should not wait on processes with blocking methods
suspicious flake8-async
Rule has been stable since 0.5.0Enabled by default
ASYNC230 blocking-open-call-in-async-function
Async functions should not open files with blocking methods like open
suspicious flake8-async
Rule has been stable since 0.5.0Enabled by default
ASYNC240 blocking-path-method-in-async-function
Async functions should not perform blocking {path_library} operations
suspicious flake8-async
Rule has been stable since 0.15.0
ASYNC250 blocking-input-in-async-function
Blocking call to input() in async context
suspicious flake8-async
Rule has been stable since 0.15.0
ASYNC251 blocking-sleep-in-async-function
Async functions should not call time.sleep
suspicious flake8-async
Rule has been stable since 0.5.0Enabled by default
S101 assert
Use of assert detected
restriction flake8-bandit
Rule has been stable since v0.0.116
S102 exec-builtin
Use of exec detected
security flake8-bandit
Rule has been stable since v0.0.116Enabled by default
S103 bad-file-permissions
os.chmod setting a permissive mask {mask:#o} on file or directory
security flake8-bandit
Rule has been stable since v0.0.211
S104 hardcoded-bind-all-interfaces
Possible binding to all interfaces
security flake8-bandit
Rule has been stable since v0.0.116
S105 hardcoded-password-string
Possible hardcoded password assigned to: "{}"
security flake8-bandit
Rule has been stable since v0.0.116
S106 hardcoded-password-func-arg
Possible hardcoded password assigned to argument: "{}"
security flake8-bandit
Rule has been stable since v0.0.116
S107 hardcoded-password-default
Possible hardcoded password assigned to function default: "{}"
security flake8-bandit
Rule has been stable since v0.0.116
S108 hardcoded-temp-file
Probable insecure usage of temporary file or directory: "{}"
security flake8-bandit
Rule has been stable since v0.0.211
S110 try-except-pass
try-except-pass detected, consider logging the exception
suspicious flake8-bandit
Rule has been stable since v0.0.237Enabled by default
S112 try-except-continue
try-except-continue detected, consider logging the exception
suspicious flake8-bandit
Rule has been stable since v0.0.245Enabled by default
S113 request-without-timeout
Probable use of {module} call without timeout
security flake8-bandit
Rule has been stable since v0.0.213
S201 flask-debug-true
Use of debug=True in Flask app detected
security flake8-bandit
Rule has been stable since v0.2.0
S202 tarfile-unsafe-members
Uses of tarfile.extractall()
security flake8-bandit
Rule has been stable since v0.2.0
S301 suspicious-pickle-usage
pickle and modules that wrap it can be unsafe when used to deserialize untrusted data, possible security issue
security flake8-bandit
Rule has been stable since v0.0.258
S302 suspicious-marshal-usage
Deserialization with the marshal module is possibly dangerous
security flake8-bandit
Rule has been stable since v0.0.258
S303 suspicious-insecure-hash-usage
Use of insecure MD2, MD4, MD5, or SHA1 hash function
security flake8-bandit
Rule has been stable since v0.0.258
S304 suspicious-insecure-cipher-usage
Use of insecure cipher, replace with a known secure cipher such as AES
security flake8-bandit
Rule has been stable since v0.0.258
S305 suspicious-insecure-cipher-mode-usage
Use of insecure block cipher mode, replace with a known secure mode such as CBC or CTR
security flake8-bandit
Rule has been stable since v0.0.258
S306 suspicious-mktemp-usage
Use of insecure and deprecated function (mktemp)
security flake8-bandit
Rule has been stable since v0.0.258
S307 suspicious-eval-usage
Use of possibly insecure function; consider using ast.literal_eval
security flake8-bandit
Rule has been stable since v0.0.258
S308 suspicious-mark-safe-usage
Use of mark_safe may expose cross-site scripting vulnerabilities
security flake8-bandit
Rule has been stable since v0.0.258
S310 suspicious-url-open-usage
Audit URL open for permitted schemes. Allowing use of file: or custom schemes is often unexpected.
security flake8-bandit
Rule has been stable since v0.0.258
S311 suspicious-non-cryptographic-random-usage
Standard pseudo-random generators are not suitable for cryptographic purposes
security flake8-bandit
Rule has been stable since v0.0.258
S312 suspicious-telnet-usage
Telnet is considered insecure. Use SSH or some other encrypted protocol.
security flake8-bandit
Rule has been stable since v0.0.258
S313 suspicious-xmlc-element-tree-usage
Using xml to parse untrusted data is known to be vulnerable to XML attacks; use defusedxml equivalents
security flake8-bandit
Rule has been stable since v0.0.258
S314 suspicious-xml-element-tree-usage
Using xml to parse untrusted data is known to be vulnerable to XML attacks; use defusedxml equivalents
security flake8-bandit
Rule has been stable since v0.0.258
S315 suspicious-xml-expat-reader-usage
Using xml to parse untrusted data is known to be vulnerable to XML attacks; use defusedxml equivalents
security flake8-bandit
Rule has been stable since v0.0.258
S316 suspicious-xml-expat-builder-usage
Using xml to parse untrusted data is known to be vulnerable to XML attacks; use defusedxml equivalents
security flake8-bandit
Rule has been stable since v0.0.258
S317 suspicious-xml-sax-usage
Using xml to parse untrusted data is known to be vulnerable to XML attacks; use defusedxml equivalents
security flake8-bandit
Rule has been stable since v0.0.258
S318 suspicious-xml-mini-dom-usage
Using xml to parse untrusted data is known to be vulnerable to XML attacks; use defusedxml equivalents
security flake8-bandit
Rule has been stable since v0.0.258
S319 suspicious-xml-pull-dom-usage
Using xml to parse untrusted data is known to be vulnerable to XML attacks; use defusedxml equivalents
security flake8-bandit
Rule has been stable since v0.0.258
S320 suspicious-xmle-tree-usage
Using lxml to parse untrusted data is known to be vulnerable to XML attacks
security flake8-bandit
Rule was removed in 0.12.0
S321 suspicious-ftp-lib-usage
FTP-related functions are being called. FTP is considered insecure. Use SSH/SFTP/SCP or some other encrypted protocol.
security flake8-bandit
Rule has been stable since v0.0.258
S323 suspicious-unverified-context-usage
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.
security flake8-bandit
Rule has been stable since v0.0.258
S324 hashlib-insecure-hash-function
Probable use of insecure hash functions in {library}: {string}
security flake8-bandit
Rule has been stable since v0.0.212
S401 suspicious-telnetlib-import
telnetlib and related modules are considered insecure. Use SSH or another encrypted protocol.
security flake8-bandit
Rule has been in preview since v0.1.12
S402 suspicious-ftplib-import
ftplib and related modules are considered insecure. Use SSH, SFTP, SCP, or another encrypted protocol.
security flake8-bandit
Rule has been in preview since v0.1.12
S403 suspicious-pickle-import
pickle, cPickle, dill, and shelve modules are possibly insecure
security flake8-bandit
Rule has been in preview since v0.1.12
S404 suspicious-subprocess-import
subprocess module is possibly insecure
security flake8-bandit
Rule has been in preview since v0.1.12
S405 suspicious-xml-etree-import
xml.etree methods are vulnerable to XML attacks
security flake8-bandit
Rule has been in preview since v0.1.12
S406 suspicious-xml-sax-import
xml.sax methods are vulnerable to XML attacks
security flake8-bandit
Rule has been in preview since v0.1.12
S407 suspicious-xml-expat-import
xml.dom.expatbuilder is vulnerable to XML attacks
security flake8-bandit
Rule has been in preview since v0.1.12
S408 suspicious-xml-minidom-import
xml.dom.minidom is vulnerable to XML attacks
security flake8-bandit
Rule has been in preview since v0.1.12
S409 suspicious-xml-pulldom-import
xml.dom.pulldom is vulnerable to XML attacks
security flake8-bandit
Rule has been in preview since v0.1.12
S410 suspicious-lxml-import
lxml is vulnerable to XML attacks
security flake8-bandit
Rule was removed in v0.3.0
S411 suspicious-xmlrpc-import
XMLRPC is vulnerable to remote XML attacks
security flake8-bandit
Rule has been in preview since v0.1.12
S412 suspicious-httpoxy-import
httpoxy is a set of vulnerabilities that affect application code running inCGI, or CGI-like environments. The use of CGI for web applications should be avoided
security flake8-bandit
Rule has been in preview since v0.1.12
S413 suspicious-pycrypto-import
pycrypto library is known to have publicly disclosed buffer overflow vulnerability
security flake8-bandit
Rule has been in preview since v0.1.12
S415 suspicious-pyghmi-import
An IPMI-related module is being imported. Prefer an encrypted protocol over IPMI.
security flake8-bandit
Rule has been in preview since v0.1.12
S501 request-with-no-cert-validation
Probable use of {string} call with verify=False disabling SSL certificate checks
security flake8-bandit
Rule has been stable since v0.0.213
S502 ssl-insecure-version
Call made with insecure SSL protocol: {protocol}
security flake8-bandit
Rule has been stable since v0.2.0
S503 ssl-with-bad-defaults
Argument default set to insecure SSL protocol: {protocol}
security flake8-bandit
Rule has been stable since v0.2.0
S504 ssl-with-no-version
ssl.wrap_socket called without an `ssl_version``
security flake8-bandit
Rule has been stable since v0.2.0
S505 weak-cryptographic-key
{cryptographic_key} key sizes below {minimum_key_size} bits are considered breakable
security flake8-bandit
Rule has been stable since v0.2.0
S506 unsafe-yaml-load
Probable use of unsafe loader {name} with yaml.load. Allows instantiation of arbitrary objects. Consider yaml.safe_load.
security flake8-bandit
Rule has been stable since v0.0.212
S507 ssh-no-host-key-verification
Paramiko call with policy set to automatically trust the unknown host key
security flake8-bandit
Rule has been stable since v0.2.0
S508 snmp-insecure-version
The use of SNMPv1 and SNMPv2 is insecure. Use SNMPv3 if able.
security flake8-bandit
Rule has been stable since v0.0.218
S509 snmp-weak-cryptography
You should not use SNMPv3 without encryption. noAuthNoPriv & authNoPriv is insecure.
security flake8-bandit
Rule has been stable since v0.0.218
S601 paramiko-call
Possible shell injection via Paramiko call; check inputs are properly sanitized
security flake8-bandit
Rule has been stable since v0.0.270
S602 subprocess-popen-with-shell-equals-true
subprocess call with shell=True seems safe, but may be changed in the future; consider rewriting without shell
security flake8-bandit
Rule has been stable since v0.0.262
S603 subprocess-without-shell-equals-true
subprocess call: check for execution of untrusted input
security flake8-bandit
Rule has been stable since v0.0.262
S604 call-with-shell-equals-true
Function call with shell=True parameter identified, security issue
security flake8-bandit
Rule has been stable since v0.0.262
S605 start-process-with-a-shell
Starting a process with a shell: seems safe, but may be changed in the future; consider rewriting without shell
security flake8-bandit
Rule has been stable since v0.0.262
S606 start-process-with-no-shell
Starting a process without a shell
security flake8-bandit
Rule has been stable since v0.0.262
S607 start-process-with-partial-path
Starting a process with a partial executable path
security flake8-bandit
Rule has been stable since v0.0.262
S608 hardcoded-sql-expression
Possible SQL injection vector through string-based query construction
security flake8-bandit
Rule has been stable since v0.0.245
S609 unix-command-wildcard-injection
Possible wildcard injection in call due to * usage
security flake8-bandit
Rule has been stable since v0.0.271
S610 django-extra
Use of Django extra can lead to SQL injection vulnerabilities
security flake8-bandit
Rule has been stable since 0.5.0
S611 django-raw-sql
Use of RawSQL can lead to SQL injection vulnerabilities
security flake8-bandit
Rule has been stable since v0.2.0
S612 logging-config-insecure-listen
Use of insecure logging.config.listen detected
security flake8-bandit
Rule has been stable since v0.0.231
S701 jinja2-autoescape-false
Using jinja2 templates with autoescape=False is dangerous and can lead to XSS. Ensure autoescape=True or use the select_autoescape function.
security flake8-bandit
Rule has been stable since v0.0.220
S702 mako-templates
Mako templates allow HTML and JavaScript rendering by default and are inherently open to XSS attacks
security flake8-bandit
Rule has been stable since v0.2.0
S704 unsafe-markup-use
Unsafe use of {name} detected
security flake8-bandit
Rule has been stable since 0.10.0
BLE001 blind-except
Do not catch blind exception: {name}
suspicious flake8-blind-except
Rule has been stable since v0.0.127Enabled by default
FBT001 boolean-type-hint-positional-argument
Boolean-typed positional argument in function definition
pedantic flake8-boolean-trap
Rule has been stable since v0.0.127
FBT002 boolean-default-value-positional-argument
Boolean default positional argument in function definition
pedantic flake8-boolean-trap
Rule has been stable since v0.0.127
FBT003 boolean-positional-value-in-call
Boolean positional value in function call
pedantic flake8-boolean-trap
Rule has been stable since v0.0.127
B002 unary-prefix-increment-decrement
Python does not support the unary prefix increment operator (++)
correctness flake8-bugbear
Rule has been stable since v0.0.83Enabled by default
B003 assignment-to-os-environ
Assigning to os.environ doesn't clear the environment
suspicious flake8-bugbear
Rule has been stable since v0.0.102Enabled by default
B004 unreliable-callable-check
Using hasattr(x, "__call__") to test if x is callable is unreliable. Use callable(x) for consistent results.
suspicious flake8-bugbear
Rule has been stable since v0.0.106Automatic fix availableEnabled by default
B005 strip-with-multi-characters
Using .strip() with multi-character strings is misleading
correctness flake8-bugbear
Rule has been stable since v0.0.106Enabled by default
B006 mutable-argument-default
Do not use mutable data structures for argument defaults
suspicious flake8-bugbear
Rule has been stable since v0.0.92Automatic fix availableEnabled by default
B007 unused-loop-control-variable
Loop control variable {name} not used within loop body
pedantic flake8-bugbear
Rule has been stable since v0.0.84Automatic fix available
B008 function-call-in-default-argument
Do not perform function call {name} in argument defaults; instead, perform the call within the function, or read the default from a module-level singleton variable
suspicious flake8-bugbear
Rule has been stable since v0.0.102Enabled by default
B009 get-attr-with-constant
Do not call getattr with a constant attribute value. It is not any safer than normal property access.
complexity flake8-bugbear
Rule has been stable since v0.0.110Automatic fix availableEnabled by default
B010 set-attr-with-constant
Do not call setattr with a constant attribute value. It is not any safer than normal property access.
complexity flake8-bugbear
Rule has been stable since v0.0.111Automatic fix availableEnabled by default
B011 assert-false
Do not assert False (python -O removes these calls), raise AssertionError()
pedantic flake8-bugbear
Rule has been stable since v0.0.67Automatic fix available
B012 jump-statement-in-finally
{name} inside finally blocks cause exceptions to be silenced
suspicious flake8-bugbear
Rule has been stable since v0.0.116Enabled by default
B013 redundant-tuple-in-exception-handler
A length-one tuple literal is redundant in exception handlers
complexity flake8-bugbear
Rule has been stable since v0.0.89Automatic fix availableEnabled by default
B014 duplicate-handler-exception
Exception handler with duplicate exception: {name}
correctness flake8-bugbear
Rule has been stable since v0.0.67Automatic fix availableEnabled by default
B015 useless-comparison
Pointless comparison. Did you mean to assign a value? Otherwise, prepend assert or remove it.
correctness flake8-bugbear
Rule has been stable since v0.0.102Enabled by default
B016 raise-literal
Cannot raise a literal. Did you intend to return it or raise an Exception?
correctness flake8-bugbear
Rule has been stable since v0.0.102Enabled by default
B017 assert-raises-exception
Do not assert blind exception: {exception}
suspicious flake8-bugbear
Rule has been stable since v0.0.83Enabled by default
B018 useless-expression
Found useless expression. Either assign it to a variable or remove it.
suspicious flake8-bugbear
Rule has been stable since v0.0.100Enabled by default
B019 cached-instance-method
Use of functools.lru_cache or functools.cache on methods can lead to memory leaks
suspicious flake8-bugbear
Rule has been stable since v0.0.114Enabled by default
B020 loop-variable-overrides-iterator
Loop control variable {name} overrides iterable it iterates
suspicious flake8-bugbear
Rule has been stable since v0.0.121Enabled by default
B021 f-string-docstring
f-string used as docstring. Python will interpret this as a joined string, rather than a docstring.
correctness flake8-bugbear
Rule has been stable since v0.0.116Enabled by default
B022 useless-contextlib-suppress
No arguments passed to contextlib.suppress. No exceptions will be suppressed and therefore this context manager is redundant
correctness flake8-bugbear
Rule has been stable since v0.0.118Enabled by default
B023 function-uses-loop-variable
Function definition does not bind loop variable {name}
suspicious flake8-bugbear
Rule has been stable since v0.0.139Enabled by default
B024 abstract-base-class-without-abstract-method
{name} is an abstract base class, but it has no abstract methods or properties
suspicious flake8-bugbear
Rule has been stable since v0.0.118
B025 duplicate-try-block-exception
try-except* block with duplicate exception {name}
correctness flake8-bugbear
Rule has been stable since v0.0.67Enabled by default
B026 star-arg-unpacking-after-keyword-arg
Star-arg unpacking after a keyword argument is strongly discouraged
suspicious flake8-bugbear
Rule has been stable since v0.0.109Enabled by default
B027 empty-method-without-abstract-decorator
{name} is an empty method in an abstract base class, but has no abstract decorator
suspicious flake8-bugbear
Rule has been stable since v0.0.118
B028 no-explicit-stacklevel
No explicit stacklevel keyword argument found
pedantic flake8-bugbear
Rule has been stable since v0.0.257Automatic fix available
B029 except-with-empty-tuple
Using except* (): with an empty tuple does not catch anything; add exceptions to handle
correctness flake8-bugbear
Rule has been stable since v0.0.250Enabled by default
B030 except-with-non-exception-classes
except* handlers should only be exception classes or tuples of exception classes
correctness flake8-bugbear
Rule has been stable since v0.0.255Enabled by default
B031 reuse-of-groupby-generator
Using the generator returned from itertools.groupby() more than once will do nothing on the second usage
suspicious flake8-bugbear
Rule has been stable since v0.0.260Enabled by default
B032 unintentional-type-annotation
Possible unintentional type annotation (using :). Did you mean to assign (using =)?
suspicious flake8-bugbear
Rule has been stable since v0.0.250Enabled by default
B033 duplicate-value
Sets should not contain duplicate item {value}
correctness flake8-bugbear
Rule has been stable since v0.0.271Automatic fix availableEnabled by default
B034 re-sub-positional-args
{method} should pass {param_name} and flags as keyword arguments to avoid confusion due to unintuitive argument positions
pedantic flake8-bugbear
Rule has been stable since v0.0.278
B035 static-key-dict-comprehension
Dictionary comprehension uses static key: {key}
correctness flake8-bugbear
Rule has been stable since v0.2.0Enabled by default
B039 mutable-contextvar-default
Do not use mutable data structures for ContextVar defaults
suspicious flake8-bugbear
Rule has been stable since 0.8.0Enabled by default
B043 del-attr-with-constant
Do not call delattr with a constant attribute value. It is not any safer than normal property deletion.
complexity flake8-bugbear
Rule has been in preview since 0.15.6Automatic fix available
B901 return-in-generator
Using yield and return {value} in a generator function can lead to confusing behavior
suspicious flake8-bugbear
Rule has been in preview since v0.4.8
B903 class-as-data-structure
Class could be dataclass or namedtuple
pedantic flake8-bugbear
Rule has been in preview since 0.9.0
B904 raise-without-from-inside-except
Within an except* clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling
pedantic flake8-bugbear
Rule has been stable since v0.0.138
B905 zip-without-explicit-strict
zip() without an explicit strict= parameter
pedantic flake8-bugbear
Rule has been stable since v0.0.167Automatic fix available
B909 loop-iterator-mutation
Mutation to loop iterable {name} during iteration
suspicious flake8-bugbear
Rule has been in preview since v0.3.7
B911 batched-without-explicit-strict
itertools.batched() without an explicit strict parameter
pedantic flake8-bugbear
Rule has been stable since 0.10.0
B912 map-without-explicit-strict
map() without an explicit strict= parameter
pedantic flake8-bugbear
Rule has been stable since 0.15.0Automatic fix available
A001 builtin-variable-shadowing
Variable {name} is shadowing a Python builtin
pedantic flake8-builtins
Rule has been stable since v0.0.48
A002 builtin-argument-shadowing
Function argument {name} is shadowing a Python builtin
pedantic flake8-builtins
Rule has been stable since v0.0.48
A003 builtin-attribute-shadowing
Python builtin is shadowed by class attribute {name} from {row}
pedantic flake8-builtins
Rule has been stable since v0.0.48
A004 builtin-import-shadowing
Import {name} is shadowing a Python builtin
pedantic flake8-builtins
Rule has been stable since 0.8.0
A005 stdlib-module-shadowing
Module {name} shadows a Python standard-library module
pedantic flake8-builtins
Rule has been stable since 0.9.0
A006 builtin-lambda-argument-shadowing
Lambda argument {name} is shadowing a Python builtin
pedantic flake8-builtins
Rule has been stable since 0.9.0
COM812 missing-trailing-comma
Trailing comma missing
formatting flake8-commas
Rule has been stable since v0.0.223Automatic fix available
COM818 trailing-comma-on-bare-tuple
Trailing comma on bare tuple prohibited
suspicious flake8-commas
Rule has been stable since v0.0.223
COM819 prohibited-trailing-comma
Trailing comma prohibited
formatting flake8-commas
Rule has been stable since v0.0.223Automatic fix available
C400 unnecessary-generator-list
Unnecessary generator (rewrite using list())
complexity flake8-comprehensions
Rule has been stable since v0.0.61Automatic fix availableEnabled by default
C401 unnecessary-generator-set
Unnecessary generator (rewrite using set())
complexity flake8-comprehensions
Rule has been stable since v0.0.61Automatic fix availableEnabled by default
C402 unnecessary-generator-dict
Unnecessary generator (rewrite as a dict comprehension)
complexity flake8-comprehensions
Rule has been stable since v0.0.61Automatic fix availableEnabled by default
C403 unnecessary-list-comprehension-set
Unnecessary list comprehension (rewrite as a set comprehension)
complexity flake8-comprehensions
Rule has been stable since v0.0.58Automatic fix availableEnabled by default
C404 unnecessary-list-comprehension-dict
Unnecessary list comprehension (rewrite as a dict comprehension)
complexity flake8-comprehensions
Rule has been stable since v0.0.58Automatic fix availableEnabled by default
C405 unnecessary-literal-set
Unnecessary {kind} literal (rewrite as a set literal)
complexity flake8-comprehensions
Rule has been stable since v0.0.61Automatic fix availableEnabled by default
C406 unnecessary-literal-dict
Unnecessary {obj_type} literal (rewrite as a dict literal)
complexity flake8-comprehensions
Rule has been stable since v0.0.61Automatic fix availableEnabled by default
C408 unnecessary-collection-call
Unnecessary {kind}() call (rewrite as a literal)
complexity flake8-comprehensions
Rule has been stable since v0.0.61Automatic fix availableEnabled by default
C409 unnecessary-literal-within-tuple-call
Unnecessary list literal passed to tuple() (rewrite as a tuple literal)
complexity flake8-comprehensions
Rule has been stable since v0.0.66Automatic fix availableEnabled by default
C410 unnecessary-literal-within-list-call
Unnecessary list literal passed to list() (remove the outer call to list())
complexity flake8-comprehensions
Rule has been stable since v0.0.66Automatic fix availableEnabled by default
C411 unnecessary-list-call
Unnecessary list() call (remove the outer call to list())
complexity flake8-comprehensions
Rule has been stable since v0.0.73Automatic fix availableEnabled by default
C413 unnecessary-call-around-sorted
Unnecessary {func}() call around sorted()
complexity flake8-comprehensions
Rule has been stable since v0.0.73Automatic fix availableEnabled by default
C414 unnecessary-double-cast-or-process
Unnecessary {inner}() call within {outer}()
complexity flake8-comprehensions
Rule has been stable since v0.0.70Automatic fix availableEnabled by default
C415 unnecessary-subscript-reversal
Unnecessary subscript reversal of iterable within {func}()
complexity flake8-comprehensions
Rule has been stable since v0.0.64Enabled by default
C416 unnecessary-comprehension
Unnecessary {kind} comprehension (rewrite using {kind}())
pedantic flake8-comprehensions
Rule has been stable since v0.0.73Automatic fix available
C417 unnecessary-map
Unnecessary map() usage (rewrite using a {object_type})
complexity flake8-comprehensions
Rule has been stable since v0.0.74Automatic fix availableEnabled by default
C418 unnecessary-literal-within-dict-call
Unnecessary dict {kind} passed to dict() (remove the outer call to dict())
complexity flake8-comprehensions
Rule has been stable since v0.0.262Automatic fix availableEnabled by default
C419 unnecessary-comprehension-in-call
Unnecessary list comprehension
complexity flake8-comprehensions
Rule has been stable since v0.0.262Automatic fix availableEnabled by default
C420 unnecessary-dict-comprehension-for-iterable
Unnecessary dict comprehension for iterable; use dict.fromkeys instead
complexity flake8-comprehensions
Rule has been stable since 0.10.0Automatic fix available
CPY001 missing-copyright-notice
Missing copyright notice at top of file
pedantic
Rule has been stable since 0.16.0
DTZ001 call-datetime-without-tzinfo
datetime.datetime() called without a tzinfo argument
pedantic flake8-datetimez
Rule has been stable since v0.0.188Enabled by default
DTZ002 call-datetime-today
datetime.datetime.today() used
suspicious flake8-datetimez
Rule has been stable since v0.0.188Enabled by default
DTZ003 call-datetime-utcnow
datetime.datetime.utcnow() used
suspicious flake8-datetimez
Rule has been stable since v0.0.188Enabled by default
DTZ004 call-datetime-utcfromtimestamp
datetime.datetime.utcfromtimestamp() used
suspicious flake8-datetimez
Rule has been stable since v0.0.188Enabled by default
DTZ005 call-datetime-now-without-tzinfo
datetime.datetime.now() called without a tz argument
pedantic flake8-datetimez
Rule has been stable since v0.0.188Enabled by default
DTZ006 call-datetime-fromtimestamp
datetime.datetime.fromtimestamp() called without a tz argument
pedantic flake8-datetimez
Rule has been stable since v0.0.188Enabled by default
DTZ007 call-datetime-strptime-without-zone
Naive datetime constructed using datetime.datetime.strptime() without %z
pedantic flake8-datetimez
Rule has been stable since v0.0.188Enabled by default
DTZ011 call-date-today
datetime.date.today() used
pedantic flake8-datetimez
Rule has been stable since v0.0.188Enabled by default
DTZ012 call-date-fromtimestamp
datetime.date.fromtimestamp() used
pedantic flake8-datetimez
Rule has been stable since v0.0.188Enabled by default
DTZ901 datetime-min-max
Use of datetime.datetime.{min_max} without timezone information
pedantic flake8-datetimez
Rule has been stable since 0.10.0Enabled by default
T100 debugger
Trace found: {name} used
correctness flake8-debugger
Rule has been stable since v0.0.141Enabled by default
DJ001 django-nullable-model-string-field
Avoid using null=True on string-based fields such as {field_name}
pedantic flake8-django
Rule has been stable since v0.0.246
DJ003 django-locals-in-render-function
Avoid passing locals() as context to a render function
security flake8-django
Rule has been stable since v0.0.253
DJ006 django-exclude-with-model-form
Do not use exclude with ModelForm, use fields instead
security flake8-django
Rule has been stable since v0.0.253
DJ007 django-all-with-model-form
Do not use __all__ with ModelForm, use fields instead
security flake8-django
Rule has been stable since v0.0.253
DJ008 django-model-without-dunder-str
Model does not define __str__ method
style flake8-django
Rule has been stable since v0.0.246
DJ012 django-unordered-body-content-in-model
Order of model's inner classes, methods, and fields does not follow the Django Style Guide: {element_type} should come before {prev_element_type}
style flake8-django
Rule has been stable since v0.0.258
DJ013 django-non-leading-receiver-decorator
@receiver decorator must be on top of all the other decorators
suspicious flake8-django
Rule has been stable since v0.0.246
EM101 raw-string-in-exception
Exception must not use a string literal, assign to variable first
pedantic flake8-errmsg
Rule has been stable since v0.0.183Automatic fix available
EM102 f-string-in-exception
Exception must not use an f-string literal, assign to variable first
pedantic flake8-errmsg
Rule has been stable since v0.0.183Automatic fix available
EM103 dot-format-in-exception
Exception must not use a .format() string directly, assign to variable first
pedantic flake8-errmsg
Rule has been stable since v0.0.183Automatic fix available
EXE001 shebang-not-executable
Shebang is present but file is not executable
suspicious flake8-executable
Rule has been stable since v0.0.233Enabled by default
EXE002 shebang-missing-executable-file
The file is executable but no shebang is present
correctness flake8-executable
Rule has been stable since v0.0.233Enabled by default
EXE003 shebang-missing-python
Shebang should contain python, pytest, or uv run
pedantic flake8-executable
Rule has been stable since v0.0.229
EXE004 shebang-leading-whitespace
Avoid whitespace before shebang
correctness flake8-executable
Rule has been stable since v0.0.229Automatic fix availableEnabled by default
EXE005 shebang-not-first-line
Shebang should be at the beginning of the file
suspicious flake8-executable
Rule has been stable since v0.0.229Enabled by default
FIX001 line-contains-fixme
Line contains FIXME, consider resolving the issue
pedantic flake8-fixme
Rule has been stable since v0.0.272
FIX002 line-contains-todo
Line contains TODO, consider resolving the issue
pedantic flake8-fixme
Rule has been stable since v0.0.272
FIX003 line-contains-xxx
Line contains XXX, consider resolving the issue
pedantic flake8-fixme
Rule has been stable since v0.0.272
FIX004 line-contains-hack
Line contains HACK, consider resolving the issue
pedantic flake8-fixme
Rule has been stable since v0.0.272
FA100 future-rewritable-type-annotation
Add from __future__ import annotations to simplify {name}
style flake8-future-annotations
Rule has been stable since v0.0.269Automatic fix availableEnabled by default
FA102 future-required-type-annotation
Missing from __future__ import annotations, but uses {reason}
correctness flake8-future-annotations
Rule has been stable since v0.0.271Automatic fix availableEnabled by default
INT001 f-string-in-get-text-func-call
f-string in plural argument is resolved before function call
suspicious flake8-gettext
Rule has been stable since v0.0.260Enabled by default
INT002 format-in-get-text-func-call
format method in plural argument is resolved before function call
suspicious flake8-gettext
Rule has been stable since v0.0.260Enabled by default
INT003 printf-in-get-text-func-call
printf-style format in plural argument is resolved before function call
suspicious flake8-gettext
Rule has been stable since v0.0.260Enabled by default
ISC001 single-line-implicit-string-concatenation
Implicitly concatenated string literals on one line
restriction flake8-implicit-str-concat
Rule has been stable since v0.0.201Automatic fix available
ISC002 multi-line-implicit-string-concatenation
Implicitly concatenated string literals over multiple lines
formatting flake8-implicit-str-concat
Rule has been stable since v0.0.201
ISC003 explicit-string-concatenation
Explicitly concatenated string should be implicitly concatenated
restriction flake8-implicit-str-concat
Rule has been stable since v0.0.201Automatic fix available
ISC004 implicit-string-concatenation-in-collection-literal
Unparenthesized implicit string concatenation in collection
suspicious flake8-implicit-str-concat
Rule has been stable since 0.16.0Automatic fix availableEnabled by default
ICN001 unconventional-import-alias
{name} should be imported as {asname}
pedantic flake8-import-conventions
Rule has been stable since v0.0.166Automatic fix available
ICN002 banned-import-alias
{name} should not be imported as {asname}
pedantic flake8-import-conventions
Rule has been stable since v0.0.262
ICN003 banned-import-from
Members of {name} should not be imported explicitly
pedantic flake8-import-conventions
Rule has been stable since v0.0.263
LOG001 direct-logger-instantiation
Use logging.getLogger() to instantiate loggers
correctness flake8-logging
Rule has been stable since v0.2.0Automatic fix availableEnabled by default
LOG002 invalid-get-logger-argument
Use __name__ with logging.getLogger()
suspicious flake8-logging
Rule has been stable since v0.2.0Automatic fix availableEnabled by default
LOG004 log-exception-outside-except-handler
.exception() call outside exception handlers
pedantic flake8-logging
Rule has been stable since 0.16.0Automatic fix available
LOG007 exception-without-exc-info
Use of logging.exception with falsy exc_info
pedantic flake8-logging
Rule has been stable since v0.2.0
LOG009 undocumented-warn
Use of undocumented logging.WARN constant
suspicious flake8-logging
Rule has been stable since v0.2.0Automatic fix availableEnabled by default
LOG014 exc-info-outside-except-handler
exc_info= outside exception handlers
suspicious flake8-logging
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
LOG015 root-logger-call
{}() call on root logger
style flake8-logging
Rule has been stable since 0.10.0Enabled by default
G001 logging-string-format
Logging statement uses str.format
pedantic flake8-logging-format
Rule has been stable since v0.0.236
G002 logging-percent-format
Logging statement uses %
pedantic flake8-logging-format
Rule has been stable since v0.0.236
G003 logging-string-concat
Logging statement uses +
pedantic flake8-logging-format
Rule has been stable since v0.0.236
G004 logging-f-string
Logging statement uses f-string
pedantic flake8-logging-format
Rule has been stable since v0.0.236Automatic fix available
G010 logging-warn
Logging statement uses warn instead of warning
suspicious flake8-logging-format
Rule has been stable since v0.0.236Automatic fix availableEnabled by default
G101 logging-extra-attr-clash
Logging statement uses an extra field that clashes with a LogRecord field: {key}
correctness flake8-logging-format
Rule has been stable since v0.0.236Enabled by default
G201 logging-exc-info
Logging .exception(...) should be used instead of .error(..., exc_info=True)
complexity flake8-logging-format
Rule has been stable since v0.0.236Enabled by default
G202 logging-redundant-exc-info
Logging statement has redundant exc_info
style flake8-logging-format
Rule has been stable since v0.0.236Enabled by default
INP001 implicit-namespace-package
File {filename} is part of an implicit namespace package. Add an __init__.py.
pedantic flake8-no-pep420
Rule has been stable since v0.0.225
PIE790 unnecessary-placeholder
Unnecessary pass statement
style flake8-pie
Rule has been stable since v0.0.208Automatic fix availableEnabled by default
PIE794 duplicate-class-field-definition
Class field {name} is defined multiple times
correctness flake8-pie
Rule has been stable since v0.0.208Automatic fix availableEnabled by default
PIE796 non-unique-enums
Enum contains duplicate value: {value}
suspicious flake8-pie
Rule has been stable since v0.0.224Enabled by default
PIE800 unnecessary-spread
Unnecessary spread **
complexity flake8-pie
Rule has been stable since v0.0.231Automatic fix availableEnabled by default
PIE804 unnecessary-dict-kwargs
Unnecessary dict kwargs
style flake8-pie
Rule has been stable since v0.0.231Automatic fix availableEnabled by default
PIE807 reimplemented-container-builtin
Prefer {container} over useless lambda
complexity flake8-pie
Rule has been stable since v0.0.208Automatic fix availableEnabled by default
PIE808 unnecessary-range-start
Unnecessary start argument in range
complexity flake8-pie
Rule has been stable since v0.0.286Automatic fix availableEnabled by default
PIE810 multiple-starts-ends-with
Call {attr} once with a tuple
complexity flake8-pie
Rule has been stable since v0.0.243Automatic fix availableEnabled by default
T201 print
print found
restriction flake8-print
Rule has been stable since v0.0.57Automatic fix available
T203 p-print
pprint found
restriction flake8-print
Rule has been stable since v0.0.57Automatic fix available
PYI001 unprefixed-type-param
Name of private {kind} must start with _
style flake8-pyi
Rule has been stable since v0.0.245Enabled by default
PYI002 complex-if-statement-in-stub
if test in a stub file must be a simple comparison against sys.platform or sys.version_info
suspicious flake8-pyi
Rule has been stable since v0.0.276Enabled by default
PYI003 unrecognized-version-info-check
Unrecognized sys.version_info check
suspicious flake8-pyi
Rule has been stable since v0.0.276Enabled by default
PYI004 patch-version-comparison
Version comparison must use only major and minor version
suspicious flake8-pyi
Rule has been stable since v0.0.276Enabled by default
PYI005 wrong-tuple-length-version-comparison
Version comparison must be against a length-{expected_length} tuple
suspicious flake8-pyi
Rule has been stable since v0.0.276Enabled by default
PYI006 bad-version-info-comparison
Use < or >= for sys.version_info comparisons
suspicious flake8-pyi
Rule has been stable since v0.0.254Enabled by default
PYI007 unrecognized-platform-check
Unrecognized sys.platform check
suspicious flake8-pyi
Rule has been stable since v0.0.246Enabled by default
PYI008 unrecognized-platform-name
Unrecognized platform {platform}
suspicious flake8-pyi
Rule has been stable since v0.0.246Enabled by default
PYI009 pass-statement-stub-body
Empty body should contain ..., not pass
style flake8-pyi
Rule has been stable since v0.0.253Automatic fix availableEnabled by default
PYI010 non-empty-stub-body
Function body must contain only ...
correctness flake8-pyi
Rule has been stable since v0.0.253Automatic fix availableEnabled by default
PYI011 typed-argument-default-in-stub
Only simple default values allowed for typed arguments
pedantic flake8-pyi
Rule has been stable since v0.0.253Automatic fix available
PYI012 pass-in-class-body
Class body must not contain pass
correctness flake8-pyi
Rule has been stable since v0.0.260Automatic fix availableEnabled by default
PYI013 ellipsis-in-non-empty-class-body
Non-empty class body must not contain ...
correctness flake8-pyi
Rule has been stable since v0.0.270Automatic fix availableEnabled by default
PYI014 argument-default-in-stub
Only simple default values allowed for arguments
pedantic flake8-pyi
Rule has been stable since v0.0.253Automatic fix available
PYI015 assignment-default-in-stub
Only simple default values allowed for assignments
style flake8-pyi
Rule has been stable since v0.0.260Automatic fix availableEnabled by default
PYI016 duplicate-union-member
Duplicate union member {}
correctness flake8-pyi
Rule has been stable since v0.0.262Automatic fix availableEnabled by default
PYI017 complex-assignment-in-stub
Stubs should not contain assignments to attributes or multiple targets
suspicious flake8-pyi
Rule has been stable since v0.0.279Enabled by default
PYI018 unused-private-type-var
Private {type_var_like_kind} {type_var_like_name} is never used
suspicious flake8-pyi
Rule has been stable since v0.0.281Automatic fix availableEnabled by default
PYI019 custom-type-var-for-self
Use Self instead of custom TypeVar {}
complexity flake8-pyi
Rule has been stable since v0.0.283Automatic fix availableEnabled by default
PYI020 quoted-annotation-in-stub
Quoted annotations should not be included in stubs
style flake8-pyi
Rule has been stable since v0.0.265Automatic fix availableEnabled by default
PYI021 docstring-in-stub
Docstrings should not be included in stubs
pedantic flake8-pyi
Rule has been stable since v0.0.253Automatic fix available
PYI024 collections-named-tuple
Use typing.NamedTuple instead of collections.namedtuple
pedantic flake8-pyi
Rule has been stable since v0.0.271
PYI025 unaliased-collections-abc-set-import
Use from collections.abc import Set as AbstractSet to avoid confusion with the set builtin
style flake8-pyi
Rule has been stable since v0.0.271Automatic fix availableEnabled by default
PYI026 type-alias-without-annotation
Use {module}.TypeAlias for type alias, e.g., {name}: TypeAlias = {value}
style flake8-pyi
Rule has been stable since v0.0.279Automatic fix availableEnabled by default
PYI029 str-or-repr-defined-in-stub
Defining {name} in a stub is almost always redundant
style flake8-pyi
Rule has been stable since v0.0.271Automatic fix availableEnabled by default
PYI030 unnecessary-literal-union
Multiple literal members in a union. Use a single literal, e.g. Literal[{}]
complexity flake8-pyi
Rule has been stable since v0.0.278Automatic fix availableEnabled by default
PYI032 any-eq-ne-annotation
Prefer object to Any for the second parameter to {method_name}
style flake8-pyi
Rule has been stable since v0.0.271Automatic fix availableEnabled by default
PYI033 legacy-type-comment
Don't use type comments
suspicious flake8-pyi
Rule has been stable since v0.0.254Enabled by default
PYI034 non-self-return-type
__new__ methods usually return self at runtime
suspicious flake8-pyi
Rule has been stable since v0.0.271Automatic fix availableEnabled by default
PYI035 unassigned-special-variable-in-stub
{name} in a stub file must have a value, as it has the same semantics as {name} at runtime
correctness flake8-pyi
Rule has been stable since v0.0.271Enabled by default
PYI036 bad-exit-annotation
Star-args in {method_name} should be annotated with object
suspicious flake8-pyi
Rule has been stable since v0.0.279Automatic fix availableEnabled by default
PYI041 redundant-numeric-union
Use {supertype} instead of {subtype} | {supertype}
complexity flake8-pyi
Rule has been stable since v0.0.279Automatic fix availableEnabled by default
PYI042 snake-case-type-alias
Type alias {name} should be CamelCase
style flake8-pyi
Rule has been stable since v0.0.265Enabled by default
PYI043 t-suffixed-type-alias
Private type alias {name} should not be suffixed with T (the T suffix implies that an object is a TypeVar)
style flake8-pyi
Rule has been stable since v0.0.265Enabled by default
PYI044 future-annotations-in-stub
from __future__ import annotations has no effect in stub files, since type checkers automatically treat stubs as having those semantics
correctness flake8-pyi
Rule has been stable since v0.0.273Automatic fix availableEnabled by default
PYI045 iter-method-return-iterable
__aiter__ methods should return an AsyncIterator, not an AsyncIterable
correctness flake8-pyi
Rule has been stable since v0.0.271Enabled by default
PYI046 unused-private-protocol
Private protocol {name} is never used
suspicious flake8-pyi
Rule has been stable since v0.0.281Enabled by default
PYI047 unused-private-type-alias
Private TypeAlias {name} is never used
suspicious flake8-pyi
Rule has been stable since v0.0.281Enabled by default
PYI048 stub-body-multiple-statements
Function body must contain exactly one statement
correctness flake8-pyi
Rule has been stable since v0.0.271Enabled by default
PYI049 unused-private-typed-dict
Private TypedDict {name} is never used
suspicious flake8-pyi
Rule has been stable since v0.0.281Enabled by default
PYI050 no-return-argument-annotation-in-stub
Prefer {module}.Never over NoReturn for argument annotations
style flake8-pyi
Rule has been stable since v0.0.272Enabled by default
PYI051 redundant-literal-union
Literal[{literal}] is redundant in a union with {builtin_type}
pedantic flake8-pyi
Rule has been stable since v0.0.283
PYI052 unannotated-assignment-in-stub
Need type annotation for {name}
suspicious flake8-pyi
Rule has been stable since v0.0.269Enabled by default
PYI053 string-or-bytes-too-long
String and bytes literals longer than 50 characters are not permitted
pedantic flake8-pyi
Rule has been stable since v0.0.271Automatic fix available
PYI054 numeric-literal-too-long
Numeric literals with a string representation longer than ten characters are not permitted
pedantic flake8-pyi
Rule has been stable since v0.0.271Automatic fix available
PYI055 unnecessary-type-union
Multiple type members in a union. Combine them into one, e.g., type[{union_str}].
complexity flake8-pyi
Rule has been stable since v0.0.283Automatic fix availableEnabled by default
PYI056 unsupported-method-call-on-all
Calling .{name}() on __all__ may not be supported by all type checkers (use += instead)
pedantic flake8-pyi
Rule has been stable since v0.0.281
PYI057 byte-string-usage
Do not use {origin}.ByteString, which has unclear semantics and is deprecated
suspicious flake8-pyi
Rule has been stable since 0.6.0Enabled by default
PYI058 generator-return-from-iter-method
Use {return_type} as the return value for simple {method} methods
style flake8-pyi
Rule has been stable since v0.2.0Automatic fix availableEnabled by default
PYI059 generic-not-last-base-class
Generic[] should always be the last base class
correctness flake8-pyi
Rule has been stable since 0.13.0Automatic fix availableEnabled by default
PYI061 redundant-none-literal
Use None rather than Literal[None]
style flake8-pyi
Rule has been stable since 0.13.0Automatic fix availableEnabled by default
PYI062 duplicate-literal-member
Duplicate literal member {}
suspicious flake8-pyi
Rule has been stable since 0.6.0Automatic fix availableEnabled by default
PYI063 pep484-style-positional-only-parameter
Use PEP 570 syntax for positional-only parameters
style flake8-pyi
Rule has been stable since 0.8.0Enabled by default
PYI064 redundant-final-literal
Final[Literal[{literal}]] can be replaced with a bare Final
complexity flake8-pyi
Rule has been stable since 0.8.0Automatic fix availableEnabled by default
PYI066 bad-version-info-order
Put branches for newer Python versions first when branching on sys.version_info comparisons
style flake8-pyi
Rule has been stable since 0.8.0Enabled by default
PT001 pytest-fixture-incorrect-parentheses-style
Use @pytest.fixture{expected} over @pytest.fixture{actual}
pedantic flake8-pytest-style
Rule has been stable since v0.0.208Automatic fix available
PT002 pytest-fixture-positional-args
Configuration for fixture {function} specified via positional args, use kwargs
pedantic flake8-pytest-style
Rule has been stable since v0.0.208
PT003 pytest-extraneous-scope-function
scope='function' is implied in @pytest.fixture()
pedantic flake8-pytest-style
Rule has been stable since v0.0.208Automatic fix available
PT004 pytest-missing-fixture-name-underscore
Fixture {function} does not return anything, add leading underscore
pedantic flake8-pytest-style
Rule was removed in 0.8.0
PT005 pytest-incorrect-fixture-name-underscore
Fixture {function} returns a value, remove leading underscore
pedantic flake8-pytest-style
Rule was removed in 0.8.0
PT006 pytest-parametrize-names-wrong-type
Wrong type passed to first argument of pytest.mark.parametrize; expected {expected_string}
pedantic flake8-pytest-style
Rule has been stable since v0.0.208Automatic fix available
PT007 pytest-parametrize-values-wrong-type
Wrong values type in pytest.mark.parametrize expected {values}
pedantic flake8-pytest-style
Rule has been stable since v0.0.208Automatic fix available
PT008 pytest-patch-with-lambda
Use return_value= instead of patching with lambda
complexity flake8-pytest-style
Rule has been stable since v0.0.208
PT009 pytest-unittest-assertion
Use a regular assert instead of unittest-style {assertion}
pedantic flake8-pytest-style
Rule has been stable since v0.0.208Automatic fix available
PT010 pytest-raises-without-exception
Set the expected exception in pytest.raises()
correctness flake8-pytest-style
Rule has been stable since v0.0.208Enabled by default
PT011 pytest-raises-too-broad
pytest.raises({exception}) is too broad, set the match parameter or use a more specific exception
pedantic flake8-pytest-style
Rule has been stable since v0.0.208
PT012 pytest-raises-with-multiple-statements
pytest.raises() block should contain a single simple statement
suspicious flake8-pytest-style
Rule has been stable since v0.0.208
PT013 pytest-incorrect-pytest-import
Incorrect import of pytest; use import pytest instead
pedantic flake8-pytest-style
Rule has been stable since v0.0.208
PT014 pytest-duplicate-parametrize-test-cases
Duplicate of test case at index {index} in pytest.mark.parametrize
correctness flake8-pytest-style
Rule has been stable since v0.0.285Automatic fix availableEnabled by default
PT015 pytest-assert-always-false
Assertion always fails, replace with pytest.fail()
pedantic flake8-pytest-style
Rule has been stable since v0.0.208
PT016 pytest-fail-without-message
No message passed to pytest.fail()
pedantic flake8-pytest-style
Rule has been stable since v0.0.208
PT017 pytest-assert-in-except
Found assertion on exception {name} in except block, use pytest.raises() instead
pedantic flake8-pytest-style
Rule has been stable since v0.0.208
PT018 pytest-composite-assertion
Assertion should be broken down into multiple parts
pedantic flake8-pytest-style
Rule has been stable since v0.0.208Automatic fix available
PT019 pytest-fixture-param-without-value
Fixture {name} without value is injected as parameter, use @pytest.mark.usefixtures instead
pedantic flake8-pytest-style
Rule has been stable since v0.0.208
PT020 pytest-deprecated-yield-fixture
@pytest.yield_fixture is deprecated, use @pytest.fixture
suspicious flake8-pytest-style
Rule has been stable since v0.0.208Automatic fix availableEnabled by default
PT021 pytest-fixture-finalizer-callback
Use yield instead of request.addfinalizer
pedantic flake8-pytest-style
Rule has been stable since v0.0.208
PT022 pytest-useless-yield-fixture
No teardown in fixture {name}, use return instead of yield
pedantic flake8-pytest-style
Rule has been stable since v0.0.208Automatic fix available
PT023 pytest-incorrect-mark-parentheses-style
Use @pytest.mark.{mark_name}{expected_parens} over @pytest.mark.{mark_name}{actual_parens}
pedantic flake8-pytest-style
Rule has been stable since v0.0.208Automatic fix available
PT024 pytest-unnecessary-asyncio-mark-on-fixture
pytest.mark.asyncio is unnecessary for fixtures
correctness flake8-pytest-style
Rule has been stable since v0.0.208Automatic fix available
PT025 pytest-erroneous-use-fixtures-on-fixture
pytest.mark.usefixtures has no effect on fixtures
correctness flake8-pytest-style
Rule has been stable since v0.0.208Automatic fix availableEnabled by default
PT026 pytest-use-fixtures-without-parameters
Useless pytest.mark.usefixtures without parameters
correctness flake8-pytest-style
Rule has been stable since v0.0.208Automatic fix availableEnabled by default
PT027 pytest-unittest-raises-assertion
Use pytest.raises instead of unittest-style {assertion}
pedantic flake8-pytest-style
Rule has been stable since v0.0.285Automatic fix available
PT028 pytest-parameter-with-default-argument
Test function parameter {} has default argument
suspicious flake8-pytest-style
Rule has been stable since 0.12.0
PT029 pytest-warns-without-warning
Set the expected warning in pytest.warns()
pedantic flake8-pytest-style
Rule has been in preview since 0.9.2
PT030 pytest-warns-too-broad
pytest.warns({warning}) is too broad, set the match parameter or use a more specific warning
pedantic flake8-pytest-style
Rule has been stable since 0.12.0
PT031 pytest-warns-with-multiple-statements
pytest.warns() block should contain a single simple statement
suspicious flake8-pytest-style
Rule has been stable since 0.12.0Enabled by default
Q000 bad-quotes-inline-string
Single quotes found but double quotes preferred
formatting flake8-quotes
Rule has been stable since v0.0.88Automatic fix available
Q001 bad-quotes-multiline-string
Single quote multiline found but double quotes preferred
formatting flake8-quotes
Rule has been stable since v0.0.88Automatic fix available
Q002 bad-quotes-docstring
Single quote docstring found but double quotes preferred
formatting flake8-quotes
Rule has been stable since v0.0.88Automatic fix available
Q003 avoidable-escaped-quote
Change outer quotes to avoid escaping inner quotes
formatting flake8-quotes
Rule has been stable since v0.0.88Automatic fix available
Q004 unnecessary-escaped-quote
Unnecessary escape on inner quote character
formatting flake8-quotes
Rule has been stable since v0.2.0Automatic fix available
RSE102 unnecessary-paren-on-raise-exception
Unnecessary parentheses on raised exception
pedantic flake8-raise
Rule has been stable since v0.0.239Automatic fix available
RET501 unnecessary-return-none
Do not explicitly return None in function if it is the only possible return value
style flake8-return
Rule has been stable since v0.0.154Automatic fix availableEnabled by default
RET502 implicit-return-value
Do not implicitly return None in function able to return non-None value
pedantic flake8-return
Rule has been stable since v0.0.154Automatic fix available
RET503 implicit-return
Missing explicit return at the end of function able to return non-None value
pedantic flake8-return
Rule has been stable since v0.0.154Automatic fix available
RET504 unnecessary-assign
Unnecessary assignment to {name} before return statement
pedantic flake8-return
Rule has been stable since v0.0.154Automatic fix available
RET505 superfluous-else-return
Unnecessary {branch} after return statement
pedantic flake8-return
Rule has been stable since v0.0.154Automatic fix available
RET506 superfluous-else-raise
Unnecessary {branch} after raise statement
pedantic flake8-return
Rule has been stable since v0.0.154Automatic fix available
RET507 superfluous-else-continue
Unnecessary {branch} after continue statement
pedantic flake8-return
Rule has been stable since v0.0.154Automatic fix available
RET508 superfluous-else-break
Unnecessary {branch} after break statement
pedantic flake8-return
Rule has been stable since v0.0.154Automatic fix available
SLF001 private-member-access
Private member accessed: {access}
pedantic flake8-self
Rule has been stable since v0.0.240
SIM101 duplicate-isinstance-call
Multiple isinstance calls for {name}, merge into a single call
complexity flake8-simplify
Rule has been stable since v0.0.212Automatic fix availableEnabled by default
SIM102 collapsible-if
Use a single if statement instead of nested if statements
complexity flake8-simplify
Rule has been stable since v0.0.211Automatic fix availableEnabled by default
SIM103 needless-bool
Return the condition {condition} directly
complexity flake8-simplify
Rule has been stable since v0.0.214Automatic fix availableEnabled by default
SIM105 suppressible-exception
Use contextlib.suppress({exception}) instead of try-except-pass
pedantic flake8-simplify
Rule has been stable since v0.0.211Automatic fix available
SIM107 return-in-try-except-finally
Don't use return in try-except and finally
correctness flake8-simplify
Rule has been stable since v0.0.211Enabled by default
SIM108 if-else-block-instead-of-if-exp
Use ternary operator {contents} instead of if-else-block
pedantic flake8-simplify
Rule has been stable since v0.0.213Automatic fix available
SIM109 compare-with-tuple
Use {replacement} instead of multiple equality comparisons
pedantic flake8-simplify
Rule has been stable since v0.0.213Automatic fix available
SIM110 reimplemented-builtin
Use {replacement} instead of for loop
complexity flake8-simplify
Rule has been stable since v0.0.211Automatic fix available
SIM112 uncapitalized-environment-variables
Use capitalized environment variable {expected} instead of {actual}
pedantic flake8-simplify
Rule has been stable since v0.0.218Automatic fix available
SIM113 enumerate-for-loop
Use enumerate() for index variable {index} in for loop
complexity flake8-simplify
Rule has been stable since v0.2.0Enabled by default
SIM114 if-with-same-arms
Combine if branches using logical or operator
suspicious flake8-simplify
Rule has been stable since v0.0.246Automatic fix availableEnabled by default
SIM115 open-file-with-context-handler
Use a context manager for opening files
suspicious flake8-simplify
Rule has been stable since v0.0.219Enabled by default
SIM116 if-else-block-instead-of-dict-lookup
Use a dictionary instead of consecutive if statements
pedantic flake8-simplify
Rule has been stable since v0.0.250
SIM117 multiple-with-statements
Use a single with statement with multiple contexts instead of nested with statements
complexity flake8-simplify
Rule has been stable since v0.0.211Automatic fix availableEnabled by default
SIM118 in-dict-keys
Use key {operator} dict instead of key {operator} dict.keys()
complexity flake8-simplify
Rule has been stable since v0.0.176Automatic fix availableEnabled by default
SIM201 negate-equal-op
Use {left} != {right} instead of not {left} == {right}
complexity flake8-simplify
Rule has been stable since v0.0.213Automatic fix availableEnabled by default
SIM202 negate-not-equal-op
Use {left} == {right} instead of not {left} != {right}
complexity flake8-simplify
Rule has been stable since v0.0.213Automatic fix availableEnabled by default
SIM208 double-negation
Use {expr} instead of not (not {expr})
complexity flake8-simplify
Rule has been stable since v0.0.213Automatic fix availableEnabled by default
SIM210 if-expr-with-true-false
Remove unnecessary True if ... else False
complexity flake8-simplify
Rule has been stable since v0.0.214Automatic fix availableEnabled by default
SIM211 if-expr-with-false-true
Use not ... instead of False if ... else True
complexity flake8-simplify
Rule has been stable since v0.0.214Automatic fix availableEnabled by default
SIM212 if-expr-with-twisted-arms
Use {expr_else} if {expr_else} else {expr_body} instead of {expr_body} if not {expr_else} else {expr_else}
pedantic flake8-simplify
Rule has been stable since v0.0.214Automatic fix available
SIM220 expr-and-not-expr
Use False instead of {name} and not {name}
correctness flake8-simplify
Rule has been stable since v0.0.211Automatic fix availableEnabled by default
SIM221 expr-or-not-expr
Use True instead of {name} or not {name}
correctness flake8-simplify
Rule has been stable since v0.0.211Automatic fix availableEnabled by default
SIM222 expr-or-true
Use {expr} instead of {replaced}
correctness flake8-simplify
Rule has been stable since v0.0.208Automatic fix availableEnabled by default
SIM223 expr-and-false
Use {expr} instead of {replaced}
correctness flake8-simplify
Rule has been stable since v0.0.208Automatic fix availableEnabled by default
SIM300 yoda-conditions
Yoda condition detected
pedantic flake8-simplify
Rule has been stable since v0.0.207Automatic fix available
SIM401 if-else-block-instead-of-dict-get
Use {contents} instead of an if block
complexity flake8-simplify
Rule has been stable since v0.0.219Automatic fix availableEnabled by default
SIM905 split-static-string
Consider using a list literal instead of str.{}
complexity flake8-simplify
Rule has been stable since 0.10.0Automatic fix availableEnabled by default
SIM910 dict-get-with-none-default
Use {expected} instead of {actual}
pedantic flake8-simplify
Rule has been stable since v0.0.261Automatic fix available
SIM911 zip-dict-keys-and-values
Use {expected} instead of {actual}
complexity flake8-simplify
Rule has been stable since v0.2.0Automatic fix availableEnabled by default
SLOT000 no-slots-in-str-subclass
Subclasses of str should define __slots__
pedantic flake8-slots
Rule has been stable since v0.0.273
SLOT001 no-slots-in-tuple-subclass
Subclasses of tuple should define __slots__
pedantic flake8-slots
Rule has been stable since v0.0.273
SLOT002 no-slots-in-namedtuple-subclass
Subclasses of {namedtuple_kind} should define __slots__
pedantic flake8-slots
Rule has been stable since v0.0.273
TID251 banned-api
{name} is banned: {message}
restriction flake8-tidy-imports
Rule has been stable since v0.0.201
TID252 relative-imports
Prefer absolute imports over relative imports from parent modules
restriction flake8-tidy-imports
Rule has been stable since v0.0.169Automatic fix available
TID253 banned-module-level-imports
{name} is banned at the module level
restriction flake8-tidy-imports
Rule has been stable since v0.0.285
TID254 lazy-import-mismatch
{name} should be imported lazily
restriction flake8-tidy-imports
Rule has been in preview since 0.15.6Automatic fix available
TID255 lazy-import-immediately-resolved
Lazy import {name} is resolved immediately
correctness flake8-tidy-imports
Rule has been in preview since 0.15.13Automatic fix available
TD001 invalid-todo-tag
Invalid TODO tag: {tag}
pedantic flake8-todos
Rule has been stable since v0.0.269
TD002 missing-todo-author
Missing author in TODO; try: # TODO(<author_name>): ... or # TODO @<author_name>: ...
pedantic flake8-todos
Rule has been stable since v0.0.269
TD003 missing-todo-link
Missing issue link for this TODO
pedantic flake8-todos
Rule has been stable since v0.0.269
TD004 missing-todo-colon
Missing colon in TODO
pedantic flake8-todos
Rule has been stable since v0.0.269
TD005 missing-todo-description
Missing issue description after TODO
pedantic flake8-todos
Rule has been stable since v0.0.269
TD006 invalid-todo-capitalization
Invalid TODO capitalization: {tag} should be TODO
pedantic flake8-todos
Rule has been stable since v0.0.269Automatic fix available
TD007 missing-space-after-todo-colon
Missing space after colon in TODO
pedantic flake8-todos
Rule has been stable since v0.0.269
TC001 typing-only-first-party-import
Move application import {} into a type-checking block
pedantic flake8-type-checking
Rule has been stable since 0.8.0Automatic fix available
TC002 typing-only-third-party-import
Move third-party import {} into a type-checking block
pedantic flake8-type-checking
Rule has been stable since 0.8.0Automatic fix available
TC003 typing-only-standard-library-import
Move standard library import {} into a type-checking block
pedantic flake8-type-checking
Rule has been stable since 0.8.0Automatic fix available
TC004 runtime-import-in-type-checking-block
Move import {qualified_name} out of type-checking block. Import is used for more than type hinting.
correctness flake8-type-checking
Rule has been stable since 0.8.0Automatic fix availableEnabled by default
TC005 empty-type-checking-block
Found empty type-checking block
suspicious flake8-type-checking
Rule has been stable since 0.8.0Automatic fix availableEnabled by default
TC006 runtime-cast-value
Add quotes to type expression in typing.cast()
pedantic flake8-type-checking
Rule has been stable since 0.10.0Automatic fix available
TC007 unquoted-type-alias
Add quotes to type alias
correctness flake8-type-checking
Rule has been stable since 0.10.0Automatic fix availableEnabled by default
TC008 quoted-type-alias
Remove quotes from type alias
pedantic flake8-type-checking
Rule has been in preview since 0.8.1Automatic fix available
TC010 runtime-string-union
Invalid string member in X | Y-style union type
correctness flake8-type-checking
Rule has been stable since 0.8.0Enabled by default
ARG001 unused-function-argument
Unused function argument: {name}
pedantic flake8-unused-arguments
Rule has been stable since v0.0.168
ARG002 unused-method-argument
Unused method argument: {name}
pedantic flake8-unused-arguments
Rule has been stable since v0.0.168
ARG003 unused-class-method-argument
Unused class method argument: {name}
pedantic flake8-unused-arguments
Rule has been stable since v0.0.168
ARG004 unused-static-method-argument
Unused static method argument: {name}
pedantic flake8-unused-arguments
Rule has been stable since v0.0.168
ARG005 unused-lambda-argument
Unused lambda argument: {name}
pedantic flake8-unused-arguments
Rule has been stable since v0.0.168
PTH100 os-path-abspath
os.path.abspath() should be replaced by Path.resolve()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH101 os-chmod
os.chmod() should be replaced by Path.chmod()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH102 os-mkdir
os.mkdir() should be replaced by Path.mkdir()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH103 os-makedirs
os.makedirs() should be replaced by Path.mkdir(parents=True)
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH104 os-rename
os.rename() should be replaced by Path.rename()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH105 os-replace
os.replace() should be replaced by Path.replace()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH106 os-rmdir
os.rmdir() should be replaced by Path.rmdir()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH107 os-remove
os.remove() should be replaced by Path.unlink()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH108 os-unlink
os.unlink() should be replaced by Path.unlink()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH109 os-getcwd
os.getcwd() should be replaced by Path.cwd()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH110 os-path-exists
os.path.exists() should be replaced by Path.exists()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH111 os-path-expanduser
os.path.expanduser() should be replaced by Path.expanduser()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH112 os-path-isdir
os.path.isdir() should be replaced by Path.is_dir()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH113 os-path-isfile
os.path.isfile() should be replaced by Path.is_file()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH114 os-path-islink
os.path.islink() should be replaced by Path.is_symlink()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH115 os-readlink
os.readlink() should be replaced by Path.readlink()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH116 os-stat
os.stat() should be replaced by Path.stat(), Path.owner(), or Path.group()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH117 os-path-isabs
os.path.isabs() should be replaced by Path.is_absolute()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH118 os-path-join
os.{module}.join() should be replaced by Path with / operator
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231
PTH119 os-path-basename
os.path.basename() should be replaced by Path.name
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH120 os-path-dirname
os.path.dirname() should be replaced by Path.parent
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH121 os-path-samefile
os.path.samefile() should be replaced by Path.samefile()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH122 os-path-splitext
os.path.splitext() should be replaced by Path.suffix, Path.stem, and Path.parent
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231
PTH123 builtin-open
open() should be replaced by Path.open()
pedantic flake8-use-pathlib
Rule has been stable since v0.0.231Automatic fix available
PTH124 py-path
py.path is in maintenance mode, use pathlib instead
suspicious flake8-use-pathlib
Rule has been stable since v0.0.231Enabled by default
PTH201 path-constructor-current-directory
Do not pass the current directory explicitly to Path
pedantic flake8-use-pathlib
Rule has been stable since v0.0.279Automatic fix available
PTH202 os-path-getsize
os.path.getsize should be replaced by Path.stat().st_size
pedantic flake8-use-pathlib
Rule has been stable since v0.0.279Automatic fix available
PTH203 os-path-getatime
os.path.getatime should be replaced by Path.stat().st_atime
pedantic flake8-use-pathlib
Rule has been stable since v0.0.279Automatic fix available
PTH204 os-path-getmtime
os.path.getmtime should be replaced by Path.stat().st_mtime
pedantic flake8-use-pathlib
Rule has been stable since v0.0.279Automatic fix available
PTH205 os-path-getctime
os.path.getctime should be replaced by Path.stat().st_ctime
pedantic flake8-use-pathlib
Rule has been stable since v0.0.279Automatic fix available
PTH206 os-sep-split
Replace .split(os.sep) with Path.parts
pedantic flake8-use-pathlib
Rule has been stable since v0.0.281
PTH207 glob
Replace {function} with Path.glob or Path.rglob
pedantic flake8-use-pathlib
Rule has been stable since v0.0.281
PTH208 os-listdir
Use pathlib.Path.iterdir() instead.
pedantic flake8-use-pathlib
Rule has been stable since 0.10.0Automatic fix available
PTH210 invalid-pathlib-with-suffix
Invalid suffix passed to .with_suffix()
correctness flake8-use-pathlib
Rule has been stable since 0.10.0Automatic fix availableEnabled by default
PTH211 os-symlink
os.symlink should be replaced by Path.symlink_to
pedantic flake8-use-pathlib
Rule has been stable since 0.13.0Automatic fix available
FLY002 static-join-to-f-string
Consider {expression} instead of string join
complexity flynt
Rule has been stable since v0.0.266Automatic fix availableEnabled by default
I001 unsorted-imports
Import block is un-sorted or un-formatted
style isort
Rule has been stable since v0.0.110Automatic fix availableEnabled by default
I002 missing-required-import
Missing required import: {name}
pedantic isort
Rule has been stable since v0.0.218Automatic fix available
C901 complex-structure
{name} is too complex ({complexity} > {max_complexity})
restriction mccabe
Rule has been stable since v0.0.127
NPY001 numpy-deprecated-type-alias
Type alias np.{type_name} is deprecated, replace with builtin type
suspicious NumPy
Rule has been stable since v0.0.247Automatic fix available
NPY002 numpy-legacy-random
Replace legacy np.random.{method_name} call with np.random.Generator
suspicious NumPy
Rule has been stable since v0.0.248
NPY003 numpy-deprecated-function
np.{existing} is deprecated; use np.{replacement} instead
suspicious NumPy
Rule has been stable since v0.0.276Automatic fix available
NPY201 numpy2-deprecation
np.{existing} will be removed in NumPy 2.0. {migration_guide}
suspicious NumPy
Rule has been stable since v0.2.0Automatic fix available
PD002 pandas-use-of-inplace-argument
inplace=True should be avoided; it has inconsistent behavior
pedantic pandas-vet
Rule has been stable since v0.0.188Automatic fix available
PD003 pandas-use-of-dot-is-null
.isna is preferred to .isnull; functionality is equivalent
style pandas-vet
Rule has been stable since v0.0.188
PD004 pandas-use-of-dot-not-null
.notna is preferred to .notnull; functionality is equivalent
style pandas-vet
Rule has been stable since v0.0.188
PD007 pandas-use-of-dot-ix
.ix is deprecated; use more explicit .loc or .iloc
pedantic pandas-vet
Rule has been stable since v0.0.188
PD008 pandas-use-of-dot-at
Use .loc instead of .at. If speed is important, use NumPy.
pedantic pandas-vet
Rule has been stable since v0.0.188
PD009 pandas-use-of-dot-iat
Use .iloc instead of .iat. If speed is important, use NumPy.
pedantic pandas-vet
Rule has been stable since v0.0.188
PD010 pandas-use-of-dot-pivot-or-unstack
.pivot_table is preferred to .pivot or .unstack; provides same functionality
pedantic pandas-vet
Rule has been stable since v0.0.188
PD011 pandas-use-of-dot-values
Use .to_numpy() or .array instead of .values
pedantic pandas-vet
Rule has been stable since v0.0.188
PD012 pandas-use-of-dot-read-table
Use .read_csv instead of .read_table to read CSV files
complexity pandas-vet
Rule has been stable since v0.0.188
PD013 pandas-use-of-dot-stack
.melt is preferred to .stack; provides same functionality
pedantic pandas-vet
Rule has been stable since v0.0.188
PD015 pandas-use-of-pd-merge
Use .merge method instead of pd.merge function. They have equivalent functionality.
style pandas-vet
Rule has been stable since v0.0.188
PD101 pandas-nunique-constant-series-check
Using series.nunique() for checking that a series is constant is inefficient
pedantic pandas-vet
Rule has been stable since v0.0.279
PD901 pandas-df-variable-name
Avoid using the generic variable name df for DataFrames
pedantic pandas-vet
Rule was removed in 0.13.0
N801 invalid-class-name
Class name {name} should use CapWords convention
pedantic pep8-naming
Rule has been stable since v0.0.77
N802 invalid-function-name
Function name {name} should be lowercase
pedantic pep8-naming
Rule has been stable since v0.0.77
N803 invalid-argument-name
Argument name {name} should be lowercase
pedantic pep8-naming
Rule has been stable since v0.0.77
N804 invalid-first-argument-name-for-class-method
First argument of a class method should be named cls
pedantic pep8-naming
Rule has been stable since v0.0.77Automatic fix available
N805 invalid-first-argument-name-for-method
First argument of a method should be named self
pedantic pep8-naming
Rule has been stable since v0.0.77Automatic fix available
N806 non-lowercase-variable-in-function
Variable {name} in function should be lowercase
pedantic pep8-naming
Rule has been stable since v0.0.89
N807 dunder-function-name
Function name should not start and end with __
pedantic pep8-naming
Rule has been stable since v0.0.82
N811 constant-imported-as-non-constant
Constant {name} imported as non-constant {asname}
pedantic pep8-naming
Rule has been stable since v0.0.82
N812 lowercase-imported-as-non-lowercase
Lowercase {name} imported as non-lowercase {asname}
pedantic pep8-naming
Rule has been stable since v0.0.82
N813 camelcase-imported-as-lowercase
Camelcase {name} imported as lowercase {asname}
pedantic pep8-naming
Rule has been stable since v0.0.82
N814 camelcase-imported-as-constant
Camelcase {name} imported as constant {asname}
pedantic pep8-naming
Rule has been stable since v0.0.82
N815 mixed-case-variable-in-class-scope
Variable {name} in class scope should not be mixedCase
pedantic pep8-naming
Rule has been stable since v0.0.89
N816 mixed-case-variable-in-global-scope
Variable {name} in global scope should not be mixedCase
pedantic pep8-naming
Rule has been stable since v0.0.89
N817 camelcase-imported-as-acronym
CamelCase {name} imported as acronym {asname}
pedantic pep8-naming
Rule has been stable since v0.0.82
N818 error-suffix-on-exception-name
Exception name {name} should be named with an Error suffix
pedantic pep8-naming
Rule has been stable since v0.0.89
N999 invalid-module-name
Invalid module name: '{name}'
style pep8-naming
Rule has been stable since v0.0.248Enabled by default
PERF101 unnecessary-list-cast
Do not cast an iterable to list before iterating over it
performance Perflint
Rule has been stable since v0.0.276Automatic fix availableEnabled by default
PERF102 incorrect-dict-iterator
When using only the {subset} of a dict use the {subset}() method
complexity Perflint
Rule has been stable since v0.0.273Automatic fix availableEnabled by default
PERF203 try-except-in-loop
try-except within a loop incurs performance overhead
pedantic Perflint
Rule has been stable since v0.0.276
PERF401 manual-list-comprehension
Use {message_str} to create a transformed list
pedantic Perflint
Rule has been stable since v0.0.276Automatic fix available
PERF402 manual-list-copy
Use list or list.copy to create a copy of a list
complexity Perflint
Rule has been stable since v0.0.276Enabled by default
PERF403 manual-dict-comprehension
Use a dictionary comprehension instead of {modifier} for-loop
pedantic Perflint
Rule has been stable since 0.5.0Automatic fix available
E101 mixed-spaces-and-tabs
Indentation contains mixed spaces and tabs
formatting pycodestyle
Rule has been stable since v0.0.229
E111 indentation-with-invalid-multiple
Indentation is not a multiple of {indent_width}
formatting pycodestyle
Rule has been in preview since v0.0.269
E112 no-indented-block
Expected an indented block
pedantic pycodestyle
Rule has been in preview since v0.0.269
E113 unexpected-indentation
Unexpected indentation
pedantic pycodestyle
Rule has been in preview since v0.0.269
E114 indentation-with-invalid-multiple-comment
Indentation is not a multiple of {indent_width} (comment)
formatting pycodestyle
Rule has been in preview since v0.0.269
E115 no-indented-block-comment
Expected an indented block (comment)
formatting pycodestyle
Rule has been in preview since v0.0.269
E116 unexpected-indentation-comment
Unexpected indentation (comment)
formatting pycodestyle
Rule has been in preview since v0.0.269
E117 over-indented
Over-indented (comment)
formatting pycodestyle
Rule has been in preview since v0.0.269
E201 whitespace-after-open-bracket
Whitespace after '{symbol}'
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E202 whitespace-before-close-bracket
Whitespace before '{symbol}'
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E203 whitespace-before-punctuation
Whitespace before '{symbol}'
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E204 whitespace-after-decorator
Whitespace after decorator
formatting pycodestyle
Rule has been in preview since 0.5.1Automatic fix available
E211 whitespace-before-parameters
Whitespace before '{bracket}'
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E221 multiple-spaces-before-operator
Multiple spaces before operator
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E222 multiple-spaces-after-operator
Multiple spaces after operator
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E223 tab-before-operator
Tab before operator
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E224 tab-after-operator
Tab after operator
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E225 missing-whitespace-around-operator
Missing whitespace around operator
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E226 missing-whitespace-around-arithmetic-operator
Missing whitespace around arithmetic operator
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E227 missing-whitespace-around-bitwise-or-shift-operator
Missing whitespace around bitwise or shift operator
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E228 missing-whitespace-around-modulo-operator
Missing whitespace around modulo operator
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E231 missing-whitespace
Missing whitespace after {}
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E241 multiple-spaces-after-comma
Multiple spaces after comma
formatting pycodestyle
Rule has been in preview since v0.0.281Automatic fix available
E242 tab-after-comma
Tab after comma
formatting pycodestyle
Rule has been in preview since v0.0.281Automatic fix available
E251 unexpected-spaces-around-keyword-parameter-equals
Unexpected spaces around keyword / parameter equals
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E252 missing-whitespace-around-parameter-equals
Missing whitespace around parameter equals
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E261 too-few-spaces-before-inline-comment
Insert at least two spaces before an inline comment
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E262 no-space-after-inline-comment
Inline comment should start with #
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E265 no-space-after-block-comment
Block comment should start with #
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E266 multiple-leading-hashes-for-block-comment
Too many leading # before block comment
pedantic pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E271 multiple-spaces-after-keyword
Multiple spaces after keyword
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E272 multiple-spaces-before-keyword
Multiple spaces before keyword
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E273 tab-after-keyword
Tab after keyword
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E274 tab-before-keyword
Tab before keyword
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E275 missing-whitespace-after-keyword
Missing whitespace after keyword
formatting pycodestyle
Rule has been in preview since v0.0.269Automatic fix available
E301 blank-line-between-methods
Expected {BLANK_LINES_NESTED_LEVEL:?} blank line, found 0
formatting pycodestyle
Rule has been in preview since v0.2.2Automatic fix available
E302 blank-lines-top-level
Expected {expected_blank_lines:?} blank lines, found {actual_blank_lines}
formatting pycodestyle
Rule has been in preview since v0.2.2Automatic fix available
E303 too-many-blank-lines
Too many blank lines ({actual_blank_lines})
formatting pycodestyle
Rule has been in preview since v0.2.2Automatic fix available
E304 blank-line-after-decorator
Blank lines found after function decorator ({lines})
formatting pycodestyle
Rule has been in preview since v0.2.2Automatic fix available
E305 blank-lines-after-function-or-class
Expected 2 blank lines after class or function definition, found ({blank_lines})
formatting pycodestyle
Rule has been in preview since v0.2.2Automatic fix available
E306 blank-lines-before-nested-definition
Expected 1 blank line before a nested definition, found 0
formatting pycodestyle
Rule has been in preview since v0.2.2Automatic fix available
E401 multiple-imports-on-one-line
Multiple imports on one line
pedantic pycodestyle
Rule has been stable since v0.0.191Automatic fix available
E402 module-import-not-at-top-of-file
Module level import not at top of cell
pedantic pycodestyle
Rule has been stable since v0.0.28Automatic fix available
E501 line-too-long
Line too long ({width} > {limit})
formatting pycodestyle
Rule has been stable since v0.0.18
E502 redundant-backslash
Redundant backslash
formatting pycodestyle
Rule has been in preview since v0.3.3Automatic fix available
E701 multiple-statements-on-one-line-colon
Multiple statements on one line (colon)
formatting pycodestyle
Rule has been stable since v0.0.245
E702 multiple-statements-on-one-line-semicolon
Multiple statements on one line (semicolon)
formatting pycodestyle
Rule has been stable since v0.0.245
E703 useless-semicolon
Statement ends with an unnecessary semicolon
formatting pycodestyle
Rule has been stable since v0.0.245Automatic fix available
E711 none-comparison
Comparison to None should be cond is None
pedantic pycodestyle
Rule has been stable since v0.0.28Automatic fix available
E712 true-false-comparison
Avoid equality comparisons to True; use {cond}: for truth checks
pedantic pycodestyle
Rule has been stable since v0.0.28Automatic fix available
E713 not-in-test
Test for membership should be not in
pedantic pycodestyle
Rule has been stable since v0.0.28Automatic fix available
E714 not-is-test
Test for object identity should be is not
pedantic pycodestyle
Rule has been stable since v0.0.28Automatic fix available
E721 type-comparison
Use is and is not for type comparisons, or isinstance() for isinstance checks
pedantic pycodestyle
Rule has been stable since v0.0.39
E722 bare-except
Do not use bare except
suspicious pycodestyle
Rule has been stable since v0.0.36Enabled by default
E731 lambda-assignment
Do not assign a lambda expression, use a def
pedantic pycodestyle
Rule has been stable since v0.0.28Automatic fix available
E741 ambiguous-variable-name
Ambiguous variable name: {name}
pedantic pycodestyle
Rule has been stable since v0.0.34
E742 ambiguous-class-name
Ambiguous class name: {name}
pedantic pycodestyle
Rule has been stable since v0.0.35
E743 ambiguous-function-name
Ambiguous function name: {name}
pedantic pycodestyle
Rule has been stable since v0.0.35
E902 io-error
{message}
correctness pycodestyle
Rule has been stable since v0.0.28Enabled by default
E999 syntax-error
SyntaxError
correctness pycodestyle
Rule was removed in 0.8.0
W191 tab-indentation
Indentation contains tabs
formatting pycodestyle
Rule has been stable since v0.0.254
W291 trailing-whitespace
Trailing whitespace
formatting pycodestyle
Rule has been stable since v0.0.253Automatic fix available
W292 missing-newline-at-end-of-file
No newline at end of file
formatting pycodestyle
Rule has been stable since v0.0.61Automatic fix available
W293 blank-line-with-whitespace
Blank line contains whitespace
formatting pycodestyle
Rule has been stable since v0.0.253Automatic fix available
W391 too-many-newlines-at-end-of-file
Too many newlines at end of {domain}
formatting pycodestyle
Rule has been in preview since v0.3.3Automatic fix available
W505 doc-line-too-long
Doc line too long ({width} > {limit})
formatting pycodestyle
Rule has been stable since v0.0.219
W605 invalid-escape-sequence
Invalid escape sequence: \{ch}
correctness pycodestyle
Rule has been stable since v0.0.85Automatic fix availableEnabled by default
DOC102 docstring-extraneous-parameter
Documented parameter {id} is not in the function's signature
pedantic pydoclint
Rule has been in preview since 0.14.1
DOC201 docstring-missing-returns
return is not documented in docstring
pedantic pydoclint
Rule has been in preview since 0.5.6
DOC202 docstring-extraneous-returns
Docstring should not have a returns section because the function doesn't return anything
pedantic pydoclint
Rule has been in preview since 0.5.6
DOC402 docstring-missing-yields
yield is not documented in docstring
pedantic pydoclint
Rule has been in preview since 0.5.7
DOC403 docstring-extraneous-yields
Docstring has a "Yields" section but the function doesn't yield anything
pedantic pydoclint
Rule has been in preview since 0.5.7
DOC501 docstring-missing-exception
Raised exception {id} missing from docstring
pedantic pydoclint
Rule has been in preview since 0.5.5
DOC502 docstring-extraneous-exception
Raised exception is not explicitly raised: {id}
pedantic pydoclint
Rule has been in preview since 0.5.5
D100 undocumented-public-module
Missing docstring in public module
pedantic pydocstyle
Rule has been stable since v0.0.70
D101 undocumented-public-class
Missing docstring in public class
pedantic pydocstyle
Rule has been stable since v0.0.70
D102 undocumented-public-method
Missing docstring in public method
pedantic pydocstyle
Rule has been stable since v0.0.70
D103 undocumented-public-function
Missing docstring in public function
pedantic pydocstyle
Rule has been stable since v0.0.70
D104 undocumented-public-package
Missing docstring in public package
pedantic pydocstyle
Rule has been stable since v0.0.70
D105 undocumented-magic-method
Missing docstring in magic method
pedantic pydocstyle
Rule has been stable since v0.0.70
D106 undocumented-public-nested-class
Missing docstring in public nested class
pedantic pydocstyle
Rule has been stable since v0.0.70
D107 undocumented-public-init
Missing docstring in __init__
pedantic pydocstyle
Rule has been stable since v0.0.70
D200 unnecessary-multiline-docstring
One-line docstring should fit on one line
pedantic pydocstyle
Rule has been stable since v0.0.68Automatic fix available
D201 blank-line-before-function
No blank lines allowed before function docstring (found {num_lines})
formatting pydocstyle
Rule has been stable since v0.0.70Automatic fix available
D202 blank-line-after-function
No blank lines allowed after function docstring (found {num_lines})
formatting pydocstyle
Rule has been stable since v0.0.70Automatic fix available
D203 incorrect-blank-line-before-class
1 blank line required before class docstring
formatting pydocstyle
Rule has been stable since v0.0.70Automatic fix available
D204 incorrect-blank-line-after-class
1 blank line required after class docstring
formatting pydocstyle
Rule has been stable since v0.0.70Automatic fix available
D205 missing-blank-line-after-summary
1 blank line required between summary line and description
pedantic pydocstyle
Rule has been stable since v0.0.68Automatic fix available
D206 docstring-tab-indentation
Docstring should be indented with spaces, not tabs
formatting pydocstyle
Rule has been stable since v0.0.75
D207 under-indentation
Docstring is under-indented
formatting pydocstyle
Rule has been stable since v0.0.75Automatic fix available
D208 over-indentation
Docstring is over-indented
formatting pydocstyle
Rule has been stable since v0.0.75Automatic fix available
D209 new-line-after-last-paragraph
Multi-line docstring closing quotes should be on a separate line
pedantic pydocstyle
Rule has been stable since v0.0.68Automatic fix available
D210 surrounding-whitespace
No whitespaces allowed surrounding docstring text
formatting pydocstyle
Rule has been stable since v0.0.68Automatic fix available
D211 blank-line-before-class
No blank lines allowed before class docstring
formatting pydocstyle
Rule has been stable since v0.0.70Automatic fix available
D212 multi-line-summary-first-line
Multi-line docstring summary should start at the first line
pedantic pydocstyle
Rule has been stable since v0.0.69Automatic fix available
D213 multi-line-summary-second-line
Multi-line docstring summary should start at the second line
pedantic pydocstyle
Rule has been stable since v0.0.69Automatic fix available
D214 overindented-section
Section is over-indented ("{name}")
pedantic pydocstyle
Rule has been stable since v0.0.73Automatic fix available
D215 overindented-section-underline
Section underline is over-indented ("{name}")
pedantic pydocstyle
Rule has been stable since v0.0.73Automatic fix available
D300 triple-single-quotes
Use triple double quotes """
formatting pydocstyle
Rule has been stable since v0.0.69Automatic fix available
D301 escape-sequence-in-docstring
Use r""" if any backslashes in a docstring
suspicious pydocstyle
Rule has been stable since v0.0.172Automatic fix available
D400 missing-trailing-period
First line should end with a period
pedantic pydocstyle
Rule has been stable since v0.0.68Automatic fix available
D401 non-imperative-mood
First line of docstring should be in imperative mood: "{first_line}"
pedantic pydocstyle
Rule has been stable since v0.0.228
D402 signature-in-docstring
First line should not be the function's signature
pedantic pydocstyle
Rule has been stable since v0.0.70
D403 first-word-uncapitalized
First word of the docstring should be capitalized: {} -> {}
pedantic pydocstyle
Rule has been stable since v0.0.69Automatic fix available
D404 docstring-starts-with-this
First word of the docstring should not be "This"
pedantic pydocstyle
Rule has been stable since v0.0.71
D405 non-capitalized-section-name
Section name should be properly capitalized ("{name}")
pedantic pydocstyle
Rule has been stable since v0.0.71Automatic fix available
D406 missing-new-line-after-section-name
Section name should end with a newline ("{name}")
pedantic pydocstyle
Rule has been stable since v0.0.71Automatic fix available
D407 missing-dashed-underline-after-section
Missing dashed underline after section ("{name}")
pedantic pydocstyle
Rule has been stable since v0.0.71Automatic fix available
D408 missing-section-underline-after-name
Section underline should be in the line following the section's name ("{name}")
pedantic pydocstyle
Rule has been stable since v0.0.71Automatic fix available
D409 mismatched-section-underline-length
Section underline should match the length of its name ("{name}")
pedantic pydocstyle
Rule has been stable since v0.0.71Automatic fix available
D410 no-blank-line-after-section
Missing blank line after section ("{name}")
pedantic pydocstyle
Rule has been stable since v0.0.71Automatic fix available
D411 no-blank-line-before-section
Missing blank line before section ("{name}")
pedantic pydocstyle
Rule has been stable since v0.0.71Automatic fix available
D412 blank-lines-between-header-and-content
No blank lines allowed between a section header and its content ("{name}")
pedantic pydocstyle
Rule has been stable since v0.0.71Automatic fix available
D413 missing-blank-line-after-last-section
Missing blank line after last section ("{name}")
pedantic pydocstyle
Rule has been stable since v0.0.71Automatic fix available
D414 empty-docstring-section
Section has no content ("{name}")
pedantic pydocstyle
Rule has been stable since v0.0.71
D415 missing-terminal-punctuation
First line should end with a period, question mark, or exclamation point
pedantic pydocstyle
Rule has been stable since v0.0.69Automatic fix available
D416 missing-section-name-colon
Section name should end with a colon ("{name}")
pedantic pydocstyle
Rule has been stable since v0.0.74Automatic fix available
D417 undocumented-param
Missing argument description in the docstring for {definition}: {name}
pedantic pydocstyle
Rule has been stable since v0.0.73
D418 overload-with-docstring
Function decorated with @overload shouldn't contain a docstring
pedantic pydocstyle
Rule has been stable since v0.0.71
D419 empty-docstring
Docstring is empty
suspicious pydocstyle
Rule has been stable since v0.0.68Enabled by default
D420 incorrect-section-order
Section "{current}" appears after section "{previous}" but should be before it
pedantic pydocstyle
Rule has been in preview since 0.15.3
D421 property-docstring-starts-with-verb
Property docstring should not start with a verb ("{first_word}")
pedantic pydocstyle
Rule has been in preview since 0.15.18
F401 unused-import
{name} imported but unused; consider using importlib.util.find_spec to test for availability
suspicious Pyflakes
Rule has been stable since v0.0.18Automatic fix availableEnabled by default
F402 import-shadowed-by-loop-var
Import {name} from {row} shadowed by loop variable
suspicious Pyflakes
Rule has been stable since v0.0.44Enabled by default
F403 undefined-local-with-import-star
from {name} import * used; unable to detect undefined names
restriction Pyflakes
Rule has been stable since v0.0.18
F404 late-future-import
from __future__ imports must occur at the beginning of the file
correctness Pyflakes
Rule has been stable since v0.0.34Enabled by default
F405 undefined-local-with-import-star-usage
{name} may be undefined, or defined from star imports
restriction Pyflakes
Rule has been stable since v0.0.44
F406 undefined-local-with-nested-import-star-usage
from {name} import * only allowed at module level
correctness Pyflakes
Rule has been stable since v0.0.37
F407 future-feature-not-defined
Future feature {name} is not defined
correctness Pyflakes
Rule has been stable since v0.0.34Enabled by default
F501 percent-format-invalid-format
%-format string has invalid format string: {message}
correctness Pyflakes
Rule has been stable since v0.0.142Enabled by default
F502 percent-format-expected-mapping
%-format string expected mapping but got sequence
correctness Pyflakes
Rule has been stable since v0.0.142Enabled by default
F503 percent-format-expected-sequence
%-format string expected sequence but got mapping
correctness Pyflakes
Rule has been stable since v0.0.142Enabled by default
F504 percent-format-extra-named-arguments
%-format string has unused named argument(s): {message}
correctness Pyflakes
Rule has been stable since v0.0.142Automatic fix availableEnabled by default
F505 percent-format-missing-argument
%-format string is missing argument(s) for placeholder(s): {message}
correctness Pyflakes
Rule has been stable since v0.0.142Enabled by default
F506 percent-format-mixed-positional-and-named
%-format string has mixed positional and named placeholders
correctness Pyflakes
Rule has been stable since v0.0.142Enabled by default
F507 percent-format-positional-count-mismatch
%-format string has {wanted} placeholder(s) but {got} substitution(s)
correctness Pyflakes
Rule has been stable since v0.0.142Enabled by default
F508 percent-format-star-requires-sequence
%-format string * specifier requires sequence
correctness Pyflakes
Rule has been stable since v0.0.142Enabled by default
F509 percent-format-unsupported-format-character
%-format string has unsupported format character {char}
correctness Pyflakes
Rule has been stable since v0.0.142Enabled by default
F521 string-dot-format-invalid-format
.format call has invalid format string: {message}
correctness Pyflakes
Rule has been stable since v0.0.138Enabled by default
F522 string-dot-format-extra-named-arguments
.format call has unused named argument(s): {message}
correctness Pyflakes
Rule has been stable since v0.0.139Automatic fix availableEnabled by default
F523 string-dot-format-extra-positional-arguments
.format call has unused arguments at position(s): {message}
correctness Pyflakes
Rule has been stable since v0.0.139Automatic fix availableEnabled by default
F524 string-dot-format-missing-arguments
.format call is missing argument(s) for placeholder(s): {message}
correctness Pyflakes
Rule has been stable since v0.0.139Enabled by default
F525 string-dot-format-mixing-automatic
.format string mixes automatic and manual numbering
correctness Pyflakes
Rule has been stable since v0.0.139Enabled by default
F541 f-string-missing-placeholders
f-string without any placeholders
complexity Pyflakes
Rule has been stable since v0.0.18Automatic fix availableEnabled by default
F601 multi-value-repeated-key-literal
Dictionary key literal {name} repeated
correctness Pyflakes
Rule has been stable since v0.0.30Automatic fix availableEnabled by default
F602 multi-value-repeated-key-variable
Dictionary key {name} repeated
correctness Pyflakes
Rule has been stable since v0.0.30Automatic fix availableEnabled by default
F621 expressions-in-star-assignment
Too many expressions in star-unpacking assignment
correctness Pyflakes
Rule has been stable since v0.0.32Enabled by default
F622 multiple-starred-expressions
Two starred expressions in assignment
correctness Pyflakes
Rule has been stable since v0.0.32Enabled by default
F631 assert-tuple
Assert test is a non-empty tuple, which is always True
correctness Pyflakes
Rule has been stable since v0.0.28Enabled by default
F632 is-literal
Use == to compare constant literals
suspicious Pyflakes
Rule has been stable since v0.0.39Automatic fix availableEnabled by default
F633 invalid-print-syntax
Use of >> is invalid with print function
correctness Pyflakes
Rule has been stable since v0.0.39Enabled by default
F634 if-tuple
If test is a tuple, which is always True
correctness Pyflakes
Rule has been stable since v0.0.18Enabled by default
F701 break-outside-loop
break outside loop
correctness Pyflakes
Rule has been stable since v0.0.36Enabled by default
F702 continue-outside-loop
continue not properly in loop
correctness Pyflakes
Rule has been stable since v0.0.36Enabled by default
F704 yield-outside-function
{keyword} statement outside of a function
correctness Pyflakes
Rule has been stable since v0.0.22Enabled by default
F706 return-outside-function
return statement outside of a function/method
correctness Pyflakes
Rule has been stable since v0.0.18Enabled by default
F707 default-except-not-last
An except block as not the last exception handler
correctness Pyflakes
Rule has been stable since v0.0.28Enabled by default
F722 forward-annotation-syntax-error
Syntax error in forward annotation: {parse_error}
pedantic Pyflakes
Rule has been stable since v0.0.39
F811 redefined-while-unused
Redefinition of unused {name} from {row}
suspicious Pyflakes
Rule has been stable since v0.0.171Automatic fix availableEnabled by default
F821 undefined-name
Undefined name {name}. {tip}
correctness Pyflakes
Rule has been stable since v0.0.20Enabled by default
F822 undefined-export
Undefined name {name} in __all__
suspicious Pyflakes
Rule has been stable since v0.0.25Enabled by default
F823 undefined-local
Local variable {name} referenced before assignment
correctness Pyflakes
Rule has been stable since v0.0.24Enabled by default
F841 unused-variable
Local variable {name} is assigned to but never used
correctness Pyflakes
Rule has been stable since v0.0.22Automatic fix availableEnabled by default
F842 unused-annotation
Local variable {name} is annotated but never used
correctness Pyflakes
Rule has been stable since v0.0.172Enabled by default
F901 raise-not-implemented
raise NotImplemented should be raise NotImplementedError
correctness Pyflakes
Rule has been stable since v0.0.18Automatic fix availableEnabled by default
PGH001 eval
No builtin eval() allowed
security pygrep-hooks
Rule was removed in v0.2.0
PGH002 deprecated-log-warn
warn is deprecated in favor of warning
suspicious pygrep-hooks
Rule was removed in v0.2.0Automatic fix available
PGH003 blanket-type-ignore
Use specific rule codes when ignoring type issues
restriction pygrep-hooks
Rule has been stable since v0.0.187
PGH004 blanket-noqa
Use specific rule codes when using noqa
pedantic pygrep-hooks
Rule has been stable since v0.0.200Automatic fix available
PGH005 invalid-mock-access
Mock method should be called: {name}
suspicious pygrep-hooks
Rule has been stable since v0.0.266Enabled by default
PLC0105 type-name-incorrect-variance
{kind} name "{param_name}" does not reflect its {variance}; consider renaming it to "{replacement_name}"
style Pylint
Rule has been stable since v0.0.278Enabled by default
PLC0131 type-bivariance
{kind} cannot be both covariant and contravariant
correctness Pylint
Rule has been stable since v0.0.278Enabled by default
PLC0132 type-param-name-mismatch
{kind} name {param_name} does not match assigned variable name {var_name}
suspicious Pylint
Rule has been stable since v0.0.277Enabled by default
PLC0205 single-string-slots
Class __slots__ should be a non-string iterable
suspicious Pylint
Rule has been stable since v0.0.276Enabled by default
PLC0206 dict-index-missing-items
Extracting value from dictionary without calling .items()
complexity Pylint
Rule has been stable since 0.8.0Enabled by default
PLC0207 missing-maxsplit-arg
String is split more times than necessary
performance Pylint
Rule has been stable since 0.15.0Automatic fix available
PLC0208 iteration-over-set
Use a sequence type instead of a set when iterating over values
performance Pylint
Rule has been stable since v0.0.271Automatic fix availableEnabled by default
PLC0414 useless-import-alias
Import alias does not rename original package
complexity Pylint
Rule has been stable since v0.0.156Automatic fix availableEnabled by default
PLC0415 import-outside-top-level
import should be at the top-level of a file
pedantic Pylint
Rule has been stable since 0.12.0
PLC1802 len-test
len({expression}) used as condition without comparison
pedantic Pylint
Rule has been stable since 0.10.0Automatic fix available
PLC1901 compare-to-empty-string
{existing} can be simplified to {replacement} as an empty string is falsey
pedantic Pylint
Rule has been in preview since v0.0.255
PLC2401 non-ascii-name
{kind} name {name} contains a non-ASCII character
pedantic Pylint
Rule has been stable since 0.5.0
PLC2403 non-ascii-import-name
Module alias {name} contains a non-ASCII character
pedantic Pylint
Rule has been stable since 0.5.0
PLC2701 import-private-name
Private name import {name} from external module {module}
pedantic Pylint
Rule has been in preview since v0.1.14
PLC2801 unnecessary-dunder-call
Unnecessary dunder call to {method}. {replacement}.
complexity Pylint
Rule has been in preview since v0.1.12Automatic fix available
PLC3002 unnecessary-direct-lambda-call
Lambda expression called directly. Execute the expression inline instead.
complexity Pylint
Rule has been stable since v0.0.153Enabled by default
PLE0100 yield-in-init
__init__ method is a generator
correctness Pylint
Rule has been stable since v0.0.245Enabled by default
PLE0101 return-in-init
Explicit return in __init__
correctness Pylint
Rule has been stable since v0.0.248Enabled by default
PLE0115 nonlocal-and-global
Name {name} is both nonlocal and global
correctness Pylint
Rule has been stable since 0.5.0Enabled by default
PLE0116 continue-in-finally
continue not supported inside finally clause
correctness Pylint
Rule has been stable since v0.0.257Enabled by default
PLE0117 nonlocal-without-binding
Nonlocal name {name} found without binding
correctness Pylint
Rule has been stable since v0.0.174Enabled by default
PLE0118 load-before-global-declaration
Name {name} is used prior to global declaration on {row}
correctness Pylint
Rule has been stable since v0.0.174Enabled by default
PLE0237 non-slot-assignment
Attribute {name} is not defined in class's __slots__
pedantic Pylint
Rule has been stable since v0.1.15
PLE0241 duplicate-bases
Duplicate base {base} for class {class}
correctness Pylint
Rule has been stable since v0.0.269Automatic fix available
PLE0302 unexpected-special-method-signature
The special method {} expects {}, {} {} given
pedantic Pylint
Rule has been stable since v0.0.263
PLE0303 invalid-length-return-type
__len__ does not return a non-negative integer
suspicious Pylint
Rule has been stable since 0.6.0Enabled by default
PLE0304 invalid-bool-return-type
__bool__ does not return bool
suspicious Pylint
Rule has been stable since 0.16.0Enabled by default
PLE0305 invalid-index-return-type
__index__ does not return an integer
suspicious Pylint
Rule has been stable since 0.6.0Enabled by default
PLE0307 invalid-str-return-type
__str__ does not return str
suspicious Pylint
Rule has been stable since v0.0.271Enabled by default
PLE0308 invalid-bytes-return-type
__bytes__ does not return bytes
suspicious Pylint
Rule has been stable since 0.6.0Enabled by default
PLE0309 invalid-hash-return-type
__hash__ does not return an integer
suspicious Pylint
Rule has been stable since 0.6.0Enabled by default
PLE0604 invalid-all-object
Invalid object in __all__, must contain only strings
correctness Pylint
Rule has been stable since v0.0.237Enabled by default
PLE0605 invalid-all-format
Invalid format for __all__, must be tuple or list
correctness Pylint
Rule has been stable since v0.0.237Enabled by default
PLE0643 potential-index-error
Expression is likely to raise IndexError
correctness Pylint
Rule has been stable since 0.5.0Enabled by default
PLE0704 misplaced-bare-raise
Bare raise statement is not inside an exception handler
suspicious Pylint
Rule has been stable since 0.5.0Enabled by default
PLE1132 repeated-keyword-argument
Repeated keyword argument: {duplicate_keyword}
correctness Pylint
Rule has been stable since 0.5.0Enabled by default
PLE1141 dict-iter-missing-items
Unpacking a dictionary in iteration without calling .items()
suspicious Pylint
Rule has been in preview since v0.3.0Automatic fix available
PLE1142 await-outside-async
await should be used within an async function
correctness Pylint
Rule has been stable since v0.0.150Enabled by default
PLE1205 logging-too-many-args
Too many arguments for logging format string
correctness Pylint
Rule has been stable since v0.0.252Enabled by default
PLE1206 logging-too-few-args
Not enough arguments for logging format string
correctness Pylint
Rule has been stable since v0.0.252Enabled by default
PLE1300 bad-string-format-character
Unsupported format character '{format_char}'
correctness Pylint
Rule has been stable since v0.0.283Enabled by default
PLE1307 bad-string-format-type
Format type does not match argument type
correctness Pylint
Rule has been stable since v0.0.245Enabled by default
PLE1310 bad-str-strip-call
String {strip} call contains duplicate characters (did you mean {removal}?)
correctness Pylint
Rule has been stable since v0.0.242Enabled by default
PLE1507 invalid-envvar-value
Invalid type for initial os.getenv argument; expected str
correctness Pylint
Rule has been stable since v0.0.255Enabled by default
PLE1519 singledispatch-method
@singledispatch decorator should not be used on methods
suspicious Pylint
Rule has been stable since 0.6.0Automatic fix availableEnabled by default
PLE1520 singledispatchmethod-function
@singledispatchmethod decorator should not be used on non-method functions
suspicious Pylint
Rule has been stable since 0.6.0Automatic fix availableEnabled by default
PLE1700 yield-from-in-async-function
yield from statement in async function; use async for instead
correctness Pylint
Rule has been stable since v0.0.271Enabled by default
PLE2502 bidirectional-unicode
Contains control characters that can permit obfuscated code
suspicious Pylint
Rule has been stable since v0.0.244Enabled by default
PLE2510 invalid-character-backspace
Invalid unescaped character backspace, use "\b" instead
suspicious Pylint
Rule has been stable since v0.0.257Automatic fix availableEnabled by default
PLE2512 invalid-character-sub
Invalid unescaped character SUB, use "\x1a" instead
suspicious Pylint
Rule has been stable since v0.0.257Automatic fix availableEnabled by default
PLE2513 invalid-character-esc
Invalid unescaped character ESC, use "\x1b" instead
suspicious Pylint
Rule has been stable since v0.0.257Automatic fix availableEnabled by default
PLE2514 invalid-character-nul
Invalid unescaped character NUL, use "\0" instead
suspicious Pylint
Rule has been stable since v0.0.257Automatic fix availableEnabled by default
PLE2515 invalid-character-zero-width-space
Invalid unescaped character zero-width-space, use "\u200B" instead
suspicious Pylint
Rule has been stable since v0.0.257Automatic fix availableEnabled by default
PLE4703 modified-iterating-set
Iterated set {name} is modified within the for loop
suspicious Pylint
Rule has been in preview since v0.3.5Automatic fix available
PLR0124 comparison-with-itself
Name compared with itself, consider replacing {actual}
suspicious Pylint
Rule has been stable since v0.0.273Enabled by default
PLR0133 comparison-of-constant
Two constants compared in a comparison, consider replacing {left_constant} {op} {right_constant}
complexity Pylint
Rule has been stable since v0.0.221Enabled by default
PLR0202 no-classmethod-decorator
Class method defined without decorator
style Pylint
Rule has been in preview since v0.1.7Automatic fix available
PLR0203 no-staticmethod-decorator
Static method defined without decorator
style Pylint
Rule has been in preview since v0.1.7Automatic fix available
PLR0206 property-with-parameters
Cannot have defined parameters for properties
correctness Pylint
Rule has been stable since v0.0.153Enabled by default
PLR0402 manual-from-import
Use from {module} import {name} in lieu of alias
complexity Pylint
Rule has been stable since v0.0.155Automatic fix availableEnabled by default
PLR0904 too-many-public-methods
Too many public methods ({methods} > {max_methods})
pedantic Pylint
Rule has been in preview since v0.0.290
PLR0911 too-many-return-statements
Too many return statements ({returns} > {max_returns})
pedantic Pylint
Rule has been stable since v0.0.242
PLR0912 too-many-branches
Too many branches ({branches} > {max_branches})
pedantic Pylint
Rule has been stable since v0.0.242
PLR0913 too-many-arguments
Too many arguments in function definition ({c_args} > {max_args})
pedantic Pylint
Rule has been stable since v0.0.238
PLR0914 too-many-locals
Too many local variables ({current_amount} > {max_amount})
pedantic Pylint
Rule has been in preview since v0.1.9
PLR0915 too-many-statements
Too many statements ({statements} > {max_statements})
pedantic Pylint
Rule has been stable since v0.0.240
PLR0916 too-many-boolean-expressions
Too many Boolean expressions ({expressions} > {max_expressions})
pedantic Pylint
Rule has been in preview since v0.1.1
PLR0917 too-many-positional-arguments
Too many positional arguments ({c_pos} > {max_pos})
pedantic Pylint
Rule has been stable since 0.16.0
PLR1701 repeated-isinstance-calls
Merge isinstance calls: {expression}
complexity Pylint
Rule was removed in 0.5.0Automatic fix available
PLR1702 too-many-nested-blocks
Too many nested blocks ({nested_blocks} > {max_nested_blocks})
pedantic Pylint
Rule has been in preview since v0.1.15
PLR1704 redefined-argument-from-local
Redefining argument with the local name {name}
suspicious Pylint
Rule has been stable since 0.5.0Enabled by default
PLR1706 and-or-ternary
Consider using if-else expression
pedantic Pylint
Rule was removed in v0.2.0
PLR1708 stop-iteration-return
Explicit raise StopIteration in generator
correctness Pylint
Rule has been stable since 0.16.0Enabled by default
PLR1711 useless-return
Useless return statement at end of function
complexity Pylint
Rule has been stable since v0.0.257Automatic fix availableEnabled by default
PLR1712 swap-with-temporary-variable
Unnecessary temporary variable
complexity Pylint
Rule has been in preview since 0.15.3Automatic fix available
PLR1714 repeated-equality-comparison
Consider merging multiple comparisons: {expression}. Use a set if the elements are hashable.
pedantic Pylint
Rule has been stable since v0.0.279Automatic fix available
PLR1716 boolean-chained-comparison
Contains chained boolean comparison that can be simplified
style Pylint
Rule has been stable since 0.9.0Automatic fix availableEnabled by default
PLR1722 sys-exit-alias
Use sys.exit() instead of {name}
suspicious Pylint
Rule has been stable since v0.0.156Automatic fix availableEnabled by default
PLR1730 if-stmt-min-max
Replace if statement with {replacement}
complexity Pylint
Rule has been stable since 0.6.0Automatic fix availableEnabled by default
PLR1733 unnecessary-dict-index-lookup
Unnecessary lookup of dictionary value by key
complexity Pylint
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
PLR1736 unnecessary-list-index-lookup
List index lookup in enumerate() loop
complexity Pylint
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
PLR2004 magic-value-comparison
Magic value used in comparison, consider replacing {value} with a constant variable
pedantic Pylint
Rule has been stable since v0.0.221
PLR2044 empty-comment
Line with empty comment
style Pylint
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
PLR5501 collapsible-else-if
Use elif instead of else then if, to reduce indentation
pedantic Pylint
Rule has been stable since v0.0.253Automatic fix available
PLR6104 non-augmented-assignment
Use {operator} to perform an augmented assignment directly
pedantic Pylint
Rule has been in preview since v0.3.7Automatic fix available
PLR6201 literal-membership
Use a set literal when testing for membership
pedantic Pylint
Rule has been in preview since v0.1.1Automatic fix available
PLR6301 no-self-use
Method {method_name} could be a function, class method, or static method
pedantic Pylint
Rule has been in preview since v0.0.286
PLW0108 unnecessary-lambda
Lambda may be unnecessary; consider inlining inner function
style Pylint
Rule has been stable since 0.15.0Automatic fix available
PLW0120 useless-else-on-loop
else clause on loop without a break statement; remove the else and dedent its contents
suspicious Pylint
Rule has been stable since v0.0.156Automatic fix availableEnabled by default
PLW0127 self-assigning-variable
Self-assignment of variable {name}
suspicious Pylint
Rule has been stable since v0.0.281Enabled by default
PLW0128 redeclared-assigned-name
Redeclared variable {name} in assignment
correctness Pylint
Rule has been stable since 0.5.0Enabled by default
PLW0129 assert-on-string-literal
Asserting on an empty string literal will never pass
correctness Pylint
Rule has been stable since v0.0.258Enabled by default
PLW0131 named-expr-without-context
Named expression used without context
complexity Pylint
Rule has been stable since v0.0.270Enabled by default
PLW0133 useless-exception-statement
Missing raise statement on exception
correctness Pylint
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
PLW0177 nan-comparison
Comparing against a NaN value; use math.isnan instead
correctness Pylint
Rule has been stable since 0.12.0Enabled by default
PLW0211 bad-staticmethod-argument
First argument of a static method should not be named {argument_name}
suspicious Pylint
Rule has been stable since 0.6.0Enabled by default
PLW0244 redefined-slots-in-subclass
Slot {slot_name} redefined from base class {base}
correctness Pylint
Rule has been in preview since 0.9.3
PLW0245 super-without-brackets
super call is missing parentheses
correctness Pylint
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
PLW0406 import-self
Module {name} imports itself
suspicious Pylint
Rule has been stable since v0.0.265Enabled by default
PLW0602 global-variable-not-assigned
Using global for {name} but no assignment is done
style Pylint
Rule has been stable since v0.0.174Enabled by default
PLW0603 global-statement
Using the global statement to update {name} is discouraged
restriction Pylint
Rule has been stable since v0.0.253
PLW0604 global-at-module-level
global at module level is redundant
correctness Pylint
Rule has been stable since 0.5.0Enabled by default
PLW0642 self-or-cls-assignment
Reassigned {} variable in {method_type} method
suspicious Pylint
Rule has been stable since 0.6.0Enabled by default
PLW0711 binary-op-exception
Exception to catch is the result of a binary and operation
suspicious Pylint
Rule has been stable since v0.0.258Enabled by default
PLW0717 too-many-statements-in-try-clause
Try clause contains too many statements ({statements} > {max_statements})
pedantic Pylint
Rule has been in preview since 0.15.14
PLW1501 bad-open-mode
{mode} is not a valid mode for open
correctness Pylint
Rule has been stable since 0.5.0Enabled by default
PLW1507 shallow-copy-environ
Shallow copy of os.environ via copy.copy(os.environ)
correctness Pylint
Rule has been stable since 0.10.0Automatic fix availableEnabled by default
PLW1508 invalid-envvar-default
Invalid type for environment variable default; expected str or None
suspicious Pylint
Rule has been stable since v0.0.255Enabled by default
PLW1509 subprocess-popen-preexec-fn
preexec_fn argument is unsafe when using threads
suspicious Pylint
Rule has been stable since v0.0.281Enabled by default
PLW1510 subprocess-run-without-check
subprocess.run without explicit check argument
suspicious Pylint
Rule has been stable since v0.0.285Automatic fix availableEnabled by default
PLW1514 unspecified-encoding
{function_name} in text mode without explicit encoding argument
pedantic Pylint
Rule has been in preview since v0.1.1Automatic fix available
PLW1641 eq-without-hash
Object does not implement __hash__ method
pedantic Pylint
Rule has been stable since 0.12.0
PLW2101 useless-with-lock
Threading lock directly created in with statement has no effect
correctness Pylint
Rule has been stable since 0.5.0Enabled by default
PLW2901 redefined-loop-name
Outer {outer_kind} variable {name} overwritten by inner {inner_kind} target
pedantic Pylint
Rule has been stable since v0.0.252
PLW3201 bad-dunder-method-name
Dunder method {name} has no special meaning in Python 3
pedantic Pylint
Rule has been in preview since v0.0.285
PLW3301 nested-min-max
Nested {func} calls can be flattened
pedantic Pylint
Rule has been stable since v0.0.266Automatic fix available
UP001 useless-metaclass-type
__metaclass__ = type is implied
style pyupgrade
Rule has been stable since v0.0.155Automatic fix availableEnabled by default
UP003 type-of-primitive
Use {} instead of type(...)
style pyupgrade
Rule has been stable since v0.0.155Automatic fix availableEnabled by default
UP004 useless-object-inheritance
Class {name} inherits from object
complexity pyupgrade
Rule has been stable since v0.0.155Automatic fix availableEnabled by default
UP005 deprecated-unittest-alias
{alias} is deprecated, use {target}
suspicious pyupgrade
Rule has been stable since v0.0.155Automatic fix availableEnabled by default
UP006 non-pep585-annotation
Use {to} instead of {from} for type annotation
suspicious pyupgrade
Rule has been stable since v0.0.155Automatic fix availableEnabled by default
UP007 non-pep604-annotation-union
Use X | Y for type annotations
style pyupgrade
Rule has been stable since v0.0.155Automatic fix availableEnabled by default
UP008 super-call-with-parameters
Use super() instead of super(__class__, self)
style pyupgrade
Rule has been stable since v0.0.155Automatic fix availableEnabled by default
UP009 utf8-encoding-declaration
UTF-8 encoding declaration is unnecessary
complexity pyupgrade
Rule has been stable since v0.0.155Automatic fix availableEnabled by default
UP010 unnecessary-future-import
Unnecessary __future__ import {import} for target Python version
complexity pyupgrade
Rule has been stable since v0.0.155Automatic fix availableEnabled by default
UP011 lru-cache-without-parameters
Unnecessary parentheses to functools.lru_cache
style pyupgrade
Rule has been stable since v0.0.155Automatic fix availableEnabled by default
UP012 unnecessary-encode-utf8
Unnecessary call to encode as UTF-8
complexity pyupgrade
Rule has been stable since v0.0.155Automatic fix availableEnabled by default
UP013 convert-typed-dict-functional-to-class
Convert {name} from TypedDict functional to class syntax
pedantic pyupgrade
Rule has been stable since v0.0.155Automatic fix available
UP014 convert-named-tuple-functional-to-class
Convert {name} from NamedTuple functional to class syntax
style pyupgrade
Rule has been stable since v0.0.155Automatic fix availableEnabled by default
UP015 redundant-open-modes
Unnecessary mode argument
pedantic pyupgrade
Rule has been stable since v0.0.155Automatic fix available
UP017 datetime-timezone-utc
Use datetime.UTC alias
style pyupgrade
Rule has been stable since v0.0.192Automatic fix availableEnabled by default
UP018 native-literals
Unnecessary {literal_type} call (rewrite as a literal)
style pyupgrade
Rule has been stable since v0.0.193Automatic fix availableEnabled by default
UP019 typing-text-str-alias
{}.Text is deprecated, use str
suspicious pyupgrade
Rule has been stable since v0.0.195Automatic fix availableEnabled by default
UP020 open-alias
Use builtin open
style pyupgrade
Rule has been stable since v0.0.196Automatic fix availableEnabled by default
UP021 replace-universal-newlines
universal_newlines is deprecated, use text
style pyupgrade
Rule has been stable since v0.0.196Automatic fix availableEnabled by default
UP022 replace-stdout-stderr
Prefer capture_output over sending stdout and stderr to PIPE
complexity pyupgrade
Rule has been stable since v0.0.199Automatic fix availableEnabled by default
UP023 deprecated-c-element-tree
cElementTree is deprecated, use ElementTree
suspicious pyupgrade
Rule has been stable since v0.0.199Automatic fix availableEnabled by default
UP024 os-error-alias
Replace aliased errors with OSError
suspicious pyupgrade
Rule has been stable since v0.0.206Automatic fix availableEnabled by default
UP025 unicode-kind-prefix
Remove unicode literals from strings
complexity pyupgrade
Rule has been stable since v0.0.201Automatic fix availableEnabled by default
UP026 deprecated-mock-import
mock is deprecated, use unittest.mock
suspicious pyupgrade
Rule has been stable since v0.0.206Automatic fix availableEnabled by default
UP027 unpacked-list-comprehension
Replace unpacked list comprehension with a generator expression
pedantic pyupgrade
Rule was removed in 0.8.0
UP028 yield-in-for-loop
Replace yield over for loop with yield from
style pyupgrade
Rule has been stable since v0.0.210Automatic fix availableEnabled by default
UP029 unnecessary-builtin-import
Unnecessary builtin import: {import}
suspicious pyupgrade
Rule has been stable since v0.0.211Automatic fix availableEnabled by default
UP030 format-literals
Use implicit references for positional format fields
complexity pyupgrade
Rule has been stable since v0.0.218Automatic fix availableEnabled by default
UP031 printf-string-formatting
Use format specifiers instead of percent format
style pyupgrade
Rule has been stable since v0.0.229Automatic fix availableEnabled by default
UP032 f-string
Use f-string instead of format call
complexity pyupgrade
Rule has been stable since v0.0.224Automatic fix availableEnabled by default
UP033 lru-cache-with-maxsize-none
Use @functools.cache instead of @functools.lru_cache(maxsize=None)
style pyupgrade
Rule has been stable since v0.0.225Automatic fix availableEnabled by default
UP034 extraneous-parentheses
Avoid extraneous parentheses
complexity pyupgrade
Rule has been stable since v0.0.228Automatic fix availableEnabled by default
UP035 deprecated-import
Import from {target} instead: {names}
suspicious pyupgrade
Rule has been stable since v0.0.239Automatic fix availableEnabled by default
UP036 outdated-version-block
Version block is outdated for minimum Python version
suspicious pyupgrade
Rule has been stable since v0.0.240Automatic fix availableEnabled by default
UP037 quoted-annotation
Remove quotes from type annotation
correctness pyupgrade
Rule has been stable since v0.0.242Automatic fix availableEnabled by default
UP038 non-pep604-isinstance
Use X | Y in {} call instead of (X, Y)
pedantic pyupgrade
Rule was removed in 0.13.0Automatic fix available
UP039 unnecessary-class-parentheses
Unnecessary parentheses after class definition
style pyupgrade
Rule has been stable since v0.0.273Automatic fix availableEnabled by default
UP040 non-pep695-type-alias
Type alias {name} uses {type_alias_method} instead of the type keyword
complexity pyupgrade
Rule has been stable since v0.0.283Automatic fix availableEnabled by default
UP041 timeout-error-alias
Replace aliased errors with TimeoutError
suspicious pyupgrade
Rule has been stable since v0.2.0Automatic fix availableEnabled by default
UP042 replace-str-enum
Class {name} inherits from both str and enum.Enum
suspicious pyupgrade
Rule has been stable since 0.15.0Automatic fix available
UP043 unnecessary-default-type-args
Unnecessary default type arguments
complexity pyupgrade
Rule has been stable since 0.8.0Automatic fix availableEnabled by default
UP044 non-pep646-unpack
Use * for unpacking
complexity pyupgrade
Rule has been stable since 0.10.0Automatic fix availableEnabled by default
UP045 non-pep604-annotation-optional
Use X | None for type annotations
style pyupgrade
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
UP046 non-pep695-generic-class
Generic class {name} uses Generic subclass instead of type parameters
complexity pyupgrade
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
UP047 non-pep695-generic-function
Generic function {name} should use type parameters
complexity pyupgrade
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
UP048 while-one
Use while True: instead of while 1:
style pyupgrade
Rule has been in preview since 0.16.3Automatic fix available
UP049 private-type-parameter
Generic {} uses private type parameters
style pyupgrade
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
UP050 useless-class-metaclass-type
Class {name} uses metaclass=type, which is redundant
correctness pyupgrade
Rule has been stable since 0.13.0Automatic fix availableEnabled by default
UP051 deprecated-abc-decorator
Use @{to} and @abstractmethod instead of {from}
suspicious pyupgrade
Rule has been in preview since 0.15.21Automatic fix available
FURB101 read-whole-file
Path.open() followed by read() can be replaced by {filename}.{suggestion}
pedantic refurb
Rule has been in preview since v0.1.2Automatic fix available
FURB103 write-whole-file
Path.open() followed by write() can be replaced by {filename}.{suggestion}
pedantic refurb
Rule has been in preview since v0.3.6Automatic fix available
FURB105 print-empty-string
Unnecessary empty string passed to print
complexity refurb
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
FURB110 if-exp-instead-of-or-operator
Replace ternary if expression with or operator
complexity refurb
Rule has been stable since 0.15.0Automatic fix available
FURB113 repeated-append
Use {suggestion} instead of repeatedly calling {name}.append()
performance refurb
Rule has been in preview since v0.0.287Automatic fix available
FURB116 f-string-number-format
Replace {function_name} call with {display}
pedantic refurb
Rule has been stable since 0.13.0Automatic fix available
FURB118 reimplemented-operator
Use operator.{operator} instead of defining a {target}
pedantic refurb
Rule has been in preview since v0.1.9Automatic fix available
FURB122 for-loop-writes
Use of {}.write in a for loop
complexity refurb
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
FURB129 readlines-in-for
Instead of calling readlines(), iterate over file object directly
complexity refurb
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
FURB131 delete-full-slice
Prefer clear over deleting a full slice
complexity refurb
Rule has been in preview since v0.0.287Automatic fix available
FURB132 check-and-remove-from-set
Use {suggestion} instead of check and remove
complexity refurb
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
FURB136 if-expr-min-max
Replace if expression with {min_max} call
complexity refurb
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
FURB140 reimplemented-starmap
Use itertools.starmap instead of the generator
pedantic refurb
Rule has been in preview since v0.0.291Automatic fix available
FURB142 for-loop-set-mutations
Use of set.{}() in a for loop
complexity refurb
Rule has been in preview since v0.3.5Automatic fix available
FURB145 slice-copy
Prefer copy method over slicing
style refurb
Rule has been in preview since v0.0.290Automatic fix available
FURB148 unnecessary-enumerate
enumerate value is unused, use for x in range(len(y)) instead
complexity refurb
Rule has been in preview since v0.0.291Automatic fix available
FURB152 math-constant
Replace {literal} with math.{constant}
correctness refurb
Rule has been in preview since v0.1.6Automatic fix available
FURB154 repeated-global
Use of repeated consecutive {}
formatting refurb
Rule has been in preview since v0.4.9Automatic fix available
FURB156 hardcoded-string-charset
Use of hardcoded string charset
complexity refurb
Rule has been in preview since 0.7.0Automatic fix available
FURB157 verbose-decimal-constructor
Verbose expression in Decimal constructor
complexity refurb
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
FURB161 bit-count
Use of bin({existing}).count('1')
complexity refurb
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
FURB162 fromisoformat-replace-z
Unnecessary timezone replacement with zero offset
complexity refurb
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
FURB163 redundant-log-base
Prefer math.{log_function}({arg}) over math.log with a redundant base
correctness refurb
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
FURB164 unnecessary-from-float
Verbose method {method_name} in {constructor} construction
pedantic refurb
Rule has been stable since 0.16.0Automatic fix available
FURB166 int-on-sliced-str
Use of int with explicit base={base} after removing prefix
complexity refurb
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
FURB167 regex-flag-alias
Use of regular expression alias re.{}
style refurb
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
FURB168 isinstance-type-none
Prefer is operator over isinstance to check if an object is None
complexity refurb
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
FURB169 type-none-comparison
When checking against None, use {} instead of comparison with type(None)
complexity refurb
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
FURB171 single-item-membership-test
Membership test against single-item container
complexity refurb
Rule has been stable since 0.15.0Automatic fix available
FURB177 implicit-cwd
Prefer Path.cwd() over Path().resolve() for current-directory lookups
complexity refurb
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
FURB180 meta-class-abc-meta
Use of metaclass=abc.ABCMeta to define abstract base class
complexity refurb
Rule has been in preview since v0.2.0Automatic fix available
FURB181 hashlib-digest-hex
Use of hashlib's .digest().hex()
complexity refurb
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
FURB187 list-reverse-copy
Use of assignment of reversed on list {name}
pedantic refurb
Rule has been stable since 0.5.0Automatic fix available
FURB188 slice-to-remove-prefix-or-suffix
Prefer str.removeprefix() over conditionally replacing with slice.
complexity refurb
Rule has been stable since 0.9.0Automatic fix availableEnabled by default
FURB189 subclass-builtin
Subclassing {subclass} can be error prone, use collections.{replacement} instead
suspicious refurb
Rule has been in preview since 0.7.3Automatic fix available
FURB192 sorted-min-max
Prefer min over sorted() to compute the minimum value in a sequence
complexity refurb
Rule has been stable since 0.16.0Automatic fix availableEnabled by default
RUF001 ambiguous-unicode-character-string
String contains ambiguous {}. Did you mean {}?
security Ruff
Rule has been stable since v0.0.102
RUF002 ambiguous-unicode-character-docstring
Docstring contains ambiguous {}. Did you mean {}?
security Ruff
Rule has been stable since v0.0.102
RUF003 ambiguous-unicode-character-comment
Comment contains ambiguous {}. Did you mean {}?
security Ruff
Rule has been stable since v0.0.108
RUF005 collection-literal-concatenation
Consider {expression} instead of concatenation
pedantic Ruff
Rule has been stable since v0.0.227Automatic fix available
RUF006 asyncio-dangling-task
Store a reference to the return value of {expr}.{method}
pedantic Ruff
Rule has been stable since v0.0.247
RUF007 zip-instead-of-pairwise
Prefer itertools.pairwise() over zip() when iterating over successive pairs
complexity Ruff
Rule has been stable since v0.0.257Automatic fix availableEnabled by default
RUF008 mutable-dataclass-default
Do not use mutable default values for dataclass attributes
suspicious Ruff
Rule has been stable since v0.0.262Enabled by default
RUF009 function-call-in-dataclass-default-argument
Do not perform function call {name} in dataclass defaults
suspicious Ruff
Rule has been stable since v0.0.262Enabled by default
RUF010 explicit-f-string-type-conversion
Use explicit conversion flag
complexity Ruff
Rule has been stable since v0.0.267Automatic fix availableEnabled by default
RUF011 ruff-static-key-dict-comprehension
Dictionary comprehension uses static key
correctness Ruff
Rule was removed in v0.2.0
RUF012 mutable-class-default
Mutable default value for class attribute
suspicious Ruff
Rule has been stable since v0.0.273Enabled by default
RUF013 implicit-optional
PEP 484 prohibits implicit Optional
suspicious Ruff
Rule has been stable since v0.0.273Automatic fix availableEnabled by default
RUF015 unnecessary-iterable-allocation-for-first-element
Prefer next({iterable}) over single element slice
performance Ruff
Rule has been stable since v0.0.278Automatic fix availableEnabled by default
RUF016 invalid-index-type
Slice in indexed access to type {value_type} uses type {index_type} instead of an integer
correctness Ruff
Rule has been stable since v0.0.278Enabled by default
RUF017 quadratic-list-summation
Avoid quadratic list summation
performance Ruff
Rule has been stable since v0.0.285Automatic fix availableEnabled by default
RUF018 assignment-in-assert
Avoid assignment expressions in assert statements
suspicious Ruff
Rule has been stable since v0.2.0Enabled by default
RUF019 unnecessary-key-check
Unnecessary key check before dictionary access
complexity Ruff
Rule has been stable since v0.2.0Automatic fix availableEnabled by default
RUF020 never-union
{never_like} | T is equivalent to T
correctness Ruff
Rule has been stable since v0.2.0Automatic fix availableEnabled by default
RUF021 parenthesize-chained-operators
Parenthesize a and b expressions when chaining and and or together, to make the precedence clear
pedantic Ruff
Rule has been stable since 0.8.0Automatic fix available
RUF022 unsorted-dunder-all
__all__ is not sorted
style Ruff
Rule has been stable since 0.8.0Automatic fix availableEnabled by default
RUF023 unsorted-dunder-slots
{}.__slots__ is not sorted
style Ruff
Rule has been stable since 0.8.0Automatic fix availableEnabled by default
RUF024 mutable-fromkeys-value
Do not pass mutable objects as values to dict.fromkeys
suspicious Ruff
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
RUF026 default-factory-kwarg
default_factory is a positional-only argument to defaultdict
correctness Ruff
Rule has been stable since 0.5.0Automatic fix availableEnabled by default
RUF027 missing-f-string-syntax
Possible f-string without an f prefix
suspicious Ruff
Rule has been in preview since v0.2.1Automatic fix available
RUF028 invalid-formatter-suppression-comment
This suppression comment is invalid because {}
suspicious Ruff
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
RUF029 unused-async
Function {name} is declared async, but doesn't await or use async features.
pedantic Ruff
Rule has been in preview since v0.4.0
RUF030 assert-with-print-message
print() call in assert statement is likely unintentional
correctness Ruff
Rule has been stable since 0.8.0Automatic fix availableEnabled by default
RUF031 incorrectly-parenthesized-tuple-in-subscript
Use parentheses for tuples in subscripts
pedantic Ruff
Rule has been in preview since 0.5.7Automatic fix available
RUF032 decimal-from-float-literal
Decimal() called with float literal argument
suspicious Ruff
Rule has been stable since 0.9.0Automatic fix availableEnabled by default
RUF033 post-init-default
__post_init__ method with argument defaults
suspicious Ruff
Rule has been stable since 0.9.0Automatic fix availableEnabled by default
RUF034 useless-if-else
Useless if-else condition
correctness Ruff
Rule has been stable since 0.9.0Enabled by default
RUF035 ruff-unsafe-markup-use
Unsafe use of {name} detected
security Ruff
Rule was removed in 0.10.0
RUF036 none-not-at-end-of-union
None not at the end of the type union.
style Ruff
Rule has been stable since 0.16.0Automatic fix available
RUF037 unnecessary-empty-iterable-within-deque-call
Unnecessary empty iterable within a deque call
complexity Ruff
Rule has been stable since 0.15.0Automatic fix available
RUF038 redundant-bool-literal
Literal[True, False, ...] can be replaced with Literal[...] | bool
complexity Ruff
Rule has been in preview since 0.8.0Automatic fix available
RUF039 unraw-re-pattern
First argument to {call} is not raw string
pedantic Ruff
Rule has been in preview since 0.8.0Automatic fix available
RUF040 invalid-assert-message-literal-argument
Non-string literal used as assert message
suspicious Ruff
Rule has been stable since 0.10.0Enabled by default
RUF041 unnecessary-nested-literal
Unnecessary nested Literal
style Ruff
Rule has been stable since 0.10.0Automatic fix availableEnabled by default
RUF043 pytest-raises-ambiguous-pattern
Pattern passed to match= contains metacharacters but is neither escaped nor raw
style Ruff
Rule has been stable since 0.13.0
RUF045 implicit-class-var-in-dataclass
Assignment without annotation found in dataclass body
suspicious Ruff
Rule has been in preview since 0.9.7
RUF046 unnecessary-cast-to-int
Value being cast to int is already an integer
complexity Ruff
Rule has been stable since 0.10.0Automatic fix availableEnabled by default
RUF047 needless-else
Empty else clause
style Ruff
Rule has been in preview since 0.9.3Automatic fix available
RUF048 map-int-version-parsing
__version__ may contain non-integral-like elements
suspicious Ruff
Rule has been stable since 0.10.0Enabled by default
RUF049 dataclass-enum
An enum class should not be decorated with @dataclass
correctness Ruff
Rule has been stable since 0.12.0Enabled by default
RUF050 unnecessary-if
Empty if statement
complexity Ruff
Rule has been in preview since 0.15.8Automatic fix available
RUF051 if-key-in-dict-del
Use pop instead of key in dict followed by del dict[key]
complexity Ruff
Rule has been stable since 0.10.0Automatic fix availableEnabled by default
RUF052 used-dummy-variable
Local dummy variable {} is accessed
pedantic Ruff
Rule has been in preview since 0.8.2Automatic fix available
RUF053 class-with-mixed-type-vars
Class with type parameter list inherits from Generic
correctness Ruff
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
RUF054 indented-form-feed
Indented form feed
correctness Ruff
Rule has been in preview since 0.9.6
RUF055 unnecessary-regular-expression
Plain string pattern passed to re function
complexity Ruff
Rule has been in preview since 0.8.1Automatic fix available
RUF056 falsy-dict-get-fallback
Avoid providing a falsy fallback to dict.get() in boolean test positions. The default fallback None is already falsy.
complexity Ruff
Rule has been in preview since 0.8.5Automatic fix available
RUF057 unnecessary-round
Value being rounded is already an integer
complexity Ruff
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
RUF058 starmap-zip
itertools.starmap called on zip iterable
complexity Ruff
Rule has been stable since 0.12.0Automatic fix availableEnabled by default
RUF059 unused-unpacked-variable
Unpacked variable {name} is never used
suspicious Ruff
Rule has been stable since 0.13.0Automatic fix availableEnabled by default
RUF060 in-empty-collection
Unnecessary membership test on empty collection
correctness Ruff
Rule has been stable since 0.15.0
RUF061 legacy-form-pytest-raises
Use context-manager form of pytest.{}()
style Ruff
Rule has been stable since 0.15.0Automatic fix available
RUF063 access-annotations-from-class-dict
Use {suggestion} instead of __dict__ access
suspicious Ruff
Rule has been stable since 0.16.0Enabled by default
RUF064 non-octal-permissions
Non-octal mode
suspicious Ruff
Rule has been stable since 0.15.0Automatic fix available
RUF065 logging-eager-conversion
Unnecessary oct() conversion when formatting with %s. Use %#o instead of %s
performance Ruff
Rule has been in preview since 0.13.2
RUF066 property-without-return
{name} is a property without a return statement
correctness Ruff
Rule has been in preview since 0.14.7
RUF067 non-empty-init-module
__init__ module should not contain any code
pedantic Ruff
Rule has been in preview since 0.14.11
RUF068 duplicate-entry-in-dunder-all
__all__ contains duplicate entries
correctness Ruff
Rule has been stable since 0.16.0Automatic fix availableEnabled by default
RUF069 float-equality-comparison
Unreliable floating point equality comparison {left} {operator} {right}
suspicious Ruff
Rule has been in preview since 0.15.1
RUF070 unnecessary-assign-before-yield
Unnecessary assignment to {name} before yield from statement
pedantic Ruff
Rule has been in preview since 0.15.3Automatic fix available
RUF071 os-path-commonprefix
os.path.commonprefix() compares strings character-by-character
suspicious Ruff
Rule has been in preview since 0.15.6Automatic fix available
RUF072 useless-finally
Empty finally clause
complexity Ruff
Rule has been in preview since 0.15.8Automatic fix available
RUF073 f-string-percent-format
% operator used on an f-string
suspicious Ruff
Rule has been in preview since 0.15.8
RUF074 incorrect-decorator-order
@{outer_decorator} should be placed after @{inner_decorator}
correctness Ruff
Rule has been in preview since 0.15.14
RUF075 fallible-context-manager
Context manager does not catch exceptions
suspicious Ruff
Rule has been in preview since 0.15.14
RUF077 method-receiver-default
Receiver parameter should not have a default value
suspicious Ruff
Rule has been in preview since 0.16.7Automatic fix available
RUF100 unused-noqa
Unused {}
suspicious Ruff
Rule has been stable since v0.0.155Automatic fix availableEnabled by default
RUF101 redirected-noqa
{original} is a redirect to {target}
suspicious Ruff
Rule has been stable since 0.6.0Automatic fix availableEnabled by default
RUF102 invalid-rule-code
Invalid rule code in {}: {}
suspicious Ruff
Rule has been stable since 0.15.0Automatic fix available
RUF103 invalid-suppression-comment
Invalid suppression comment: {msg}
suspicious Ruff
Rule has been stable since 0.15.0Automatic fix available
RUF104 unmatched-suppression-comment
Suppression comment without matching #ruff:enable comment
suspicious Ruff
Rule has been stable since 0.15.0
RUF105 noqa-comments
noqa comment used instead of ruff: ignore
pedantic Ruff
Rule has been in preview since 0.15.22Automatic fix available
RUF106 rule-codes-in-suppression-comments
Rule code used instead of name in suppression comment
style Ruff
Rule has been in preview since 0.15.22Automatic fix available
RUF200 invalid-pyproject-toml
Failed to parse pyproject.toml: {message}
correctness Ruff
Rule has been stable since v0.0.271Enabled by default
RUF201 rule-codes-in-selectors
Rule code used instead of name in lint.{selector}
pedantic Ruff
Rule has been in preview since 0.15.22Automatic fix available
TRY002 raise-vanilla-class
Create your own exception
style tryceratops
Rule has been stable since v0.0.236Enabled by default
TRY003 raise-vanilla-args
Avoid specifying long messages outside the exception class
pedantic tryceratops
Rule has been stable since v0.0.236
TRY004 type-check-without-type-error
Prefer TypeError exception for invalid type
style tryceratops
Rule has been stable since v0.0.230Enabled by default
TRY200 reraise-no-cause
Use raise from to specify exception cause
pedantic tryceratops
Rule was removed in v0.2.0
TRY201 verbose-raise
Use raise without specifying exception name
complexity tryceratops
Rule has been stable since v0.0.231Automatic fix availableEnabled by default
TRY203 useless-try-except
Remove exception handler; error is immediately re-raised
complexity tryceratops
Rule has been stable since 0.7.0Enabled by default
TRY300 try-consider-else
Consider moving this statement to an else block
pedantic tryceratops
Rule has been stable since v0.0.229
TRY301 raise-within-try
Abstract raise to an inner function
pedantic tryceratops
Rule has been stable since v0.0.233
TRY400 error-instead-of-exception
Use logging.exception instead of logging.error
pedantic tryceratops
Rule has been stable since v0.0.236Automatic fix available
TRY401 verbose-log-message
Redundant exception object included in logging.exception call
complexity tryceratops
Rule has been stable since v0.0.250Enabled by default
โ€” pytest-fixture-autouse
Avoid using autouse=True in pytest.fixture decorators
restriction โ€”
Rule has been in preview since 0.16.5