This rule raises an issue when the __all__ property of a module contains objects that aren’t strings.
The __all__ property of a module is used to define the list of names that will be imported when performing a wildcard import of this
module, i.e. when from mymodule import * is used.
In the following example:
# mymodule.py def foo(): ... def bar(): ... __all__ = ["foo"]
Executing from mymodule import * from a different module will only import foo.
This list can only contain strings. If something other than a string is listed, a TypeError will be raised when trying to perform a
wildcard import of the module.
To fix this issue, make sure that all properties listed in __all__ are strings.
class MyClass:
pass
__all__ = [
MyClass # Noncompliant: wildcard import will raise a TypeError
]
class MyClass:
pass
__all__ = [
"MyClass"
]