Issue 2519: Typing 'modules' in the interactive help system fails when imports fail (original) (raw)

If a certain module cannot be imported, this error is not caught and warned about by pydoc, but will cause 'modules' to fail. This could be considered a bug in the module but it would still be nice if 3rd party modules cannot break pydoc. Example:

dennis@mirage:~$ python Python 2.5.2 (r252:60911, Mar 12 2008, 13:36:25) [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu4)] on linux2 Type "help", "copyright", "credits" or "license" for more information.

help()

Welcome to Python 2.5! This is the online help utility. [... snip ...]

help> modules

Please wait a moment while I gather a list of all available modules...

Traceback (most recent call last): File "", line 1, in File "/usr/lib/python2.5/site.py", line 342, in call return pydoc.help(*args, **kwds) File "/usr/lib/python2.5/pydoc.py", line 1649, in call self.interact() File "/usr/lib/python2.5/pydoc.py", line 1667, in interact self.help(request) File "/usr/lib/python2.5/pydoc.py", line 1683, in help elif request == 'modules': self.listmodules() File "/usr/lib/python2.5/pydoc.py", line 1804, in listmodules ModuleScanner().run(callback) File "/usr/lib/python2.5/pydoc.py", line 1855, in run for importer, modname, ispkg in pkgutil.walk_packages(): File "/usr/lib/python2.5/pkgutil.py", line 125, in walk_packages for item in walk_packages(path, name+'.', onerror):

[... snip -- the actual error isn't important ...] OperationalError: no such table: falcon_configurationkey

I think it would be relatively easy to work around such bugs in 3rd party modules by passing a callable to walk_packages that will give a warning when an import fails instead of breaking.