Я пытаюсь автоматически сгенерировать документацию для Readthedocs. Я высмеиваю некоторые зависимости как , которые они предлагают в FAQ , но из аннотаций типов функций я получаю некоторые части документации, которые выглядят как
Тип возвращаемого значения:
Что, конечно, недопустимо. Поэтому я переписал макет так:
from unittest.mock import Mock
class ModuleMock(Mock):
def __init__(self, path='', *args, **kwargs):
super().__init__(*args, *kwargs)
self.path = path
def __getattr__(self, name):
return ModuleMock(path=self.path + '.' + name)
def __repr__(self):
return self.path
Чтобы я мог сделать
>>> x = ModuleMock('x')
>>> x
x
>>> x.y.z
x.y.z
Но с этим я получаю исключение
...
File "<frozen importlib._bootstrap>", line 906, in _find_spec
File "<frozen importlib._bootstrap_external>", line 1280, in find_spec
File "<frozen importlib._bootstrap_external>", line 1246, in _get_spec
TypeError: 'ModuleMock' object is not iterable
Когда я вместо этого пытаюсь наследовать от MagicMock
, я получаю RecursionError
.
Что я должен сделать, чтобы правильно изолировать зависимости для генерации документации и сделать эту документацию удобочитаемой?