Skip to content

undefined-export (F822)#

Derived from the Pyflakes linter.

What it does#

Checks for undefined names in __all__.

Why is this bad?#

In Python, the __all__ variable is used to define the names that are exported when a module is imported as a wildcard (e.g., from foo import *). The names in __all__ must be defined in the module, but are included as strings.

Including an undefined name in __all__ is likely to raise NameError at runtime, when the module is imported.

Example#

from foo import bar


__all__ = ["bar", "baz"]  # undefined name `baz` in `__all__`

Use instead:

from foo import bar, baz


__all__ = ["bar", "baz"]

References#