#1674: do not crash if module.__all__ is not according to spec

This commit is contained in:
Georg Brandl
2015-01-15 08:26:40 +01:00
parent dee3e60ee6
commit ab546acef0
2 changed files with 10 additions and 0 deletions

View File

@@ -16,6 +16,7 @@ Bugs fixed
----------
* LaTeX writer now generates correct markup for cells spanning multiple rows.
* #1674: Do not crash if a module's ``__all__`` is not a list of strings.
Release 1.3b2 (released Dec 5, 2014)

View File

@@ -879,6 +879,15 @@ class ModuleDocumenter(Documenter):
return True, safe_getmembers(self.object)
else:
memberlist = self.object.__all__
# Sometimes __all__ is broken...
if not isinstance(memberlist, (list, tuple)) or not \
all(isinstance(entry, str) for entry in memberlist):
self.directive.warn(
'__all__ should be a list of strings, not %r '
'(in module %s) -- ignoring __all__' %
(memberlist, self.fullname))
# fall back to all members
return True, safe_getmembers(self.object)
else:
memberlist = self.options.members or []
ret = []