Derived from the flake8-tidy-imports linter.
What it does#
Checks for module-level imports that should instead be imported lazily
(e.g., within a function definition, or an
if TYPE_CHECKING: block, or
some other nested context).
Why is this bad?#
Some modules are expensive to import. For example, importing
tensorflow can introduce a noticeable delay in the startup time of a
In such cases, you may want to enforce that the module is imported lazily as needed, rather than at the top of the file. This could involve inlining the import into the function that uses it, rather than importing it unconditionally, to ensure that the module is only imported when necessary.