invalid-all-object / E0604

Message emitted:

Invalid object %r in __all__, must contain only strings

Description:

Used when an invalid (non-string) object occurs in __all__.

Problematic code:

__all__ = (
    None,  # [invalid-all-object]
    Fruit,
    Worm,
)


class Fruit:
    pass


class Worm:
    pass

Correct code:

__all__ = ["Fruit", "Worm"]


class Fruit:
    pass


class Worm:
    pass

Additional details:

From The Python Language Reference – The import statement:

"The public names defined by a module are determined by checking the module's namespace for a variable named __all__; if defined, it must be a sequence of strings which are names defined or imported by that module."

Related links:

Created by the variables checker.