From 9196dc66ae57a7cb751a42d49e5ab6038c916ff7 Mon Sep 17 00:00:00 2001 From: Amaury Forgeot d'Arc Date: Thu, 19 Jun 2008 20:54:32 +0000 Subject: [PATCH] Issue 3145: help("modules xxx") failed when scanning test.badsyntax_pep3120... now it silently ignores modules it cannot scan or import. --- Lib/pydoc.py | 21 ++++++++++++++++----- Misc/NEWS | 15 +++++++++++++++ 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/Lib/pydoc.py b/Lib/pydoc.py index 8e80b37e7c..2c559bd26e 100755 --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -1870,16 +1870,25 @@ class ModuleScanner: else: loader = importer.find_module(modname) if hasattr(loader,'get_source'): + try: + source = loader.get_source(modname) + except UnicodeDecodeError: + if onerror: + onerror(modname) + continue import io - desc = source_synopsis( - io.StringIO(loader.get_source(modname)) - ) or '' + desc = source_synopsis(io.StringIO(source)) or '' if hasattr(loader,'get_filename'): path = loader.get_filename(modname) else: path = None else: - module = loader.load_module(modname) + try: + module = loader.load_module(modname) + except ImportError: + if onerror: + onerror(modname) + continue desc = (module.__doc__ or '').splitlines()[0] path = getattr(module,'__file__',None) name = modname + ' - ' + desc @@ -1895,10 +1904,12 @@ def apropos(key): if modname[-9:] == '.__init__': modname = modname[:-9] + ' (package)' print(modname, desc and '- ' + desc) + def onerror(modname): + pass try: import warnings except ImportError: pass else: warnings.filterwarnings('ignore') # ignore problems during import - ModuleScanner().run(callback, key) + ModuleScanner().run(callback, key, onerror=onerror) # --------------------------------------------------- web browser interface diff --git a/Misc/NEWS b/Misc/NEWS index 0d5379b698..0656041f8a 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -4,6 +4,21 @@ Python News (editors: check NEWS.help for information about editing NEWS using ReST.) +What's new in Python 3.0b2? +=========================== + +*Release date: XX-XXX-2008* + +Core and Builtins +----------------- + +Library +------- + +- Issue #3145: help("modules whatever") failed when trying to load the source + code of every single module of the standard library, including invalid files + used in the test suite. + What's new in Python 3.0b1? =========================== -- 2.40.0