All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.l10n.py.rules.python.S2823.html Maven / Gradle / Ivy

There is a newer version: 4.23.0.17664
Show newest version

This rule raises an issue when the __all__ property of a module contains objects that aren’t strings.

Why is this an issue?

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.

Code examples

Noncompliant code example

class MyClass:
    pass

__all__ = [
    MyClass  # Noncompliant: wildcard import will raise a TypeError
]

Compliant solution

class MyClass:
    pass

__all__ = [
    "MyClass"
]

Resources

Documentation





© 2015 - 2024 Weber Informatics LLC | Privacy Policy