From dfc719e187d251c758606ba8d7fe2cd8069304b6 Mon Sep 17 00:00:00 2001 From: Tatiana Tereshchenko Date: Mon, 22 May 2017 03:24:37 +0200 Subject: [PATCH] Fix #3779: 'ImportError' in sphinx.ext.autodoc due to broken 'sys.meta_path' --- CHANGES | 1 + sphinx/ext/autodoc.py | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 6923a3bc7..6caf68fa6 100644 --- a/CHANGES +++ b/CHANGES @@ -27,6 +27,7 @@ Bugs fixed * #3774: Incremental HTML building broken when using citations * #3772: 'str object' has no attribute 'filename' * #3763: got epubcheck validations error if epub_cover is set +* #3779: 'ImportError' in sphinx.ext.autodoc due to broken 'sys.meta_path' Testing -------- diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 1b314bd0e..c50b55387 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -171,13 +171,12 @@ class _MockImporter(object): # set(['a', 'd']) self.base_packages.add(n.split('.')[0]) self.mocked_modules = [] # type: List[str] - self.orig_meta_path = sys.meta_path # enable hook by adding itself to meta_path sys.meta_path = sys.meta_path + [self] def disable(self): - # restore original meta_path to disable import hook - sys.meta_path = self.orig_meta_path + # remove `self` from `sys.meta_path` to disable import hook + sys.meta_path = [i for i in sys.meta_path if i is not self] # remove mocked modules from sys.modules to avoid side effects after # running auto-documenter for m in self.mocked_modules: