Explicit export is not defined¶
ID: py/undefined-export
Kind: problem
Security severity:
Severity: error
Precision: high
Tags:
- quality
- reliability
- correctness
Query suites:
- python-security-and-quality.qls
Click to see the query in the CodeQL repository
When a module is imported using import *, all attributes listed in __all__ are imported. If __all__ includes attributes that are not defined in the module then an exception is triggered. This usually indicates a typographic error in the attributes in __all__ or in the name of the object.
Recommendation¶
Correct any typographic errors, either in the name of the object or in the string in __all__. If there are no typographic errors, either delete the name from __all__ or add the object to the module.
Example¶
In the example, the function name spam has been misspelled in the __all__ list. This will result in spamm being highlighted as an undefined export. Correcting the spelling will fix the defect.
__all__ = ['spamm', 'troll', 'paywall']
def spam(): return 'Spam'
def troll(): return 'Troll'
def paywall(): return 'Pay wall'
References¶
Python Language Reference: The import statement.
Python Tutorial: Importing * from a Package.