模拟依赖的依赖

Mock out dependency of a dependency

想象以下场景:您有一个名为 'foo' 的 python 包依赖于 'bar'。包 'bar' 本身依赖于另一个 python 包,可以说得体,它依赖于 cannot be installed on readthedocs.io 的 C 库。因此,'bar' 被

模仿得体
class Mock(MagicMock):
    @classmethod
    def __getattr__(cls, name):
            return MagicMock()

MOCK_MODULES = ['shapely', 'shapely.wkt', 'shapely.wkb', 'shapely.geometry', 'shapely.ops']
sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)

在 conf.py 文件中。

现在,我想从 'bar' 中模拟出依赖关系,但仍然在 RTD 上安装 'bar' 以便正确构建 'foo' 的文档。 我怎样才能告诉 readthedocs.io 有规律地模拟 'bar' 的依赖关系?

Check 用于环境变量 READTHEDOCS:

import os
if 'READTHEDOCS' in os.environ:
    class Mock(MagicMock):
        @classmethod
        def __getattr__(cls, name):
                return MagicMock()

    MOCK_MODULES = ['shapely', 'shapely.wkt', 'shapely.wkb', 'shapely.geometry', 'shapely.ops']
    sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)