From 0cb58fbb4cd38142636a52f34fdb948ab45b7043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20W=C3=A4lchli?= Date: Tue, 5 May 2020 22:48:45 +0200 Subject: [PATCH] Mock packages for RTD docs build (follow up to doctests) (#1739) * mock all packages on RTD * update --- docs/source/conf.py | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index f6dad2c392..7ca48bd19c 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -29,6 +29,8 @@ sys.path.insert(0, os.path.abspath(PATH_ROOT)) builtins.__LIGHTNING_SETUP__ = True +IS_READTHEDOCS_BUILD = os.environ.get('READTHEDOCS', False) + import pytorch_lightning # noqa: E402 # -- Project documents ------------------------------------------------------- @@ -305,23 +307,31 @@ for path_ipynb in glob.glob(os.path.join(PATH_ROOT, 'notebooks', '*.ipynb')): path_ipynb2 = os.path.join(path_nbs, os.path.basename(path_ipynb)) shutil.copy(path_ipynb, path_ipynb2) + # Ignoring Third-party packages # https://stackoverflow.com/questions/15889621/sphinx-how-to-exclude-imports-in-automodule +def package_list_from_file(file): + mocked_packages = [] + with open(file, 'r') as fp: + for ln in fp.readlines(): + found = [ln.index(ch) for ch in list(',=<>#') if ch in ln] + pkg = ln[:min(found)] if found else ln + if pkg.rstrip(): + mocked_packages.append(pkg.rstrip()) + return mocked_packages -MOCK_REQUIRE_PACKAGES = [] -with open(os.path.join(PATH_ROOT, 'requirements-extra.txt'), 'r') as fp: - for ln in fp.readlines(): - found = [ln.index(ch) for ch in list(',=<>#') if ch in ln] - pkg = ln[:min(found)] if found else ln - if pkg.rstrip(): - MOCK_REQUIRE_PACKAGES.append(pkg.rstrip()) -# TODO: better parse from package since the import name and package name may differ +MOCK_PACKAGES = package_list_from_file(os.path.join(PATH_ROOT, 'requirements-extra.txt')) +if IS_READTHEDOCS_BUILD: + # mock also base packages when we are on RTD since we don't install them there + base_packages = package_list_from_file(os.path.join(PATH_ROOT, 'requirements.txt')) + MOCK_PACKAGES.extend(base_packages) + MOCK_MANUAL_PACKAGES = [ 'torchvision', 'PIL', ] -autodoc_mock_imports = MOCK_REQUIRE_PACKAGES + MOCK_MANUAL_PACKAGES +autodoc_mock_imports = MOCK_PACKAGES + MOCK_MANUAL_PACKAGES # Options for the linkcode extension