runtime-import-in-type-checking-block (TCH004)
Derived from the flake8-type-checking linter.
Fix is sometimes available.
What it does
Checks for runtime imports defined in a type-checking block.
Why is this bad?
The type-checking block is not executed at runtime, so the import will not be available at runtime.
If lint.flake8-type-checking.quote-annotations
is set to true
,
annotations will be wrapped in quotes if doing so would enable the
corresponding import to remain in the type-checking block.
Example
from typing import TYPE_CHECKING
if TYPE_CHECKING:
import foo
def bar() -> None:
foo.bar() # raises NameError: name 'foo' is not defined
Use instead: