non-pep585-annotation (UP006)
Added in v0.0.155 · Related issues · View source
Derived from the pyupgrade linter.
Fix is sometimes available.
What it does
Checks for the use of generics that can be replaced with standard library variants based on PEP 585.
Why is this bad?
PEP 585 enabled collections in the Python standard library (like list)
to be used as generics directly, instead of importing analogous members
from the typing module (like typing.List).
When available, the PEP 585 syntax should be used instead of importing
members from the typing module, as it's more concise and readable.
Importing those members from typing is considered deprecated as of PEP
585.
This rule is enabled when targeting Python 3.9 or later (see:
target-version). By default, it's also enabled for earlier Python
versions if from __future__ import annotations is present, as
__future__ annotations are not evaluated at runtime. If your code relies
on runtime type annotations (either directly or via a library like
Pydantic), you can disable this behavior for Python versions prior to 3.9
by setting lint.pyupgrade.keep-runtime-typing to true.
Example
Use instead:
Fix safety
This rule's fix is marked as unsafe, as it may lead to runtime errors when alongside libraries that rely on runtime type annotations, like Pydantic, on Python versions prior to Python 3.9.