Merge pull request #4532 from dpizetta/1.7-release

Fix #4019: exception treatment for AttributeError stopping make process
This commit is contained in:
Takeshi KOMIYA 2018-02-03 00:28:10 +09:00 committed by GitHub
commit 48b4c373f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 3 deletions

View File

@ -73,6 +73,7 @@ Other contributors, listed alphabetically, are:
* Joel Wurtz -- cellspanning support in LaTeX
* Hong Xu -- svg support in imgmath extension and various bug fixes
* Stephen Finucane -- setup command improvements and documentation
* Daniel Pizetta -- inheritance diagram improvements
Many thanks for all contributions!

View File

@ -15,6 +15,7 @@ Features added
Bugs fixed
----------
* #4019: inheritance_diagram AttributeError stoping make process
Testing
--------

View File

@ -75,14 +75,20 @@ def try_import(objname):
try:
__import__(objname)
return sys.modules.get(objname) # type: ignore
except ImportError:
modname, attrname = module_sig_re.match(objname).groups() # type: ignore
except (ImportError, ValueError): # ValueError,py27 -> ImportError,py3
matched = module_sig_re.match(objname) # type: ignore
if not matched:
return None
modname, attrname = matched.groups()
if modname is None:
return None
try:
__import__(modname)
return getattr(sys.modules.get(modname), attrname, None)
except ImportError:
except (ImportError, ValueError): # ValueError,py27 -> ImportError,py3
return None

View File

@ -83,6 +83,15 @@ def test_import_classes(rootdir):
with pytest.raises(InheritanceException):
import_classes('unknown.Unknown', None)
# got exception InheritanceException for wrong class or module
# not AttributeError (refs: #4019)
with pytest.raises(InheritanceException):
import_classes('unknown', '.')
with pytest.raises(InheritanceException):
import_classes('unknown.Unknown', '.')
with pytest.raises(InheritanceException):
import_classes('.', None)
# a module having no classes
classes = import_classes('sphinx', None)
assert classes == []