Я пытаюсь создать Mock из matplotlib, чтобы я мог скомпилировать свои документы с помощью ReadTheDocs, но столкнулся с проблемой.
В моем коде я импортирую matplotlib, используя from matplotlib.pyplot import *
.
Я использую следующий код для моего Mocks (как предложено ReadTheDocs FAQ):
class Mock(object):
def __init__(self, *args, **kwargs):
pass
def __call__(self, *args, **kwargs):
return Mock()
@classmethod
def __getattr__(cls, name):
if name in ('__file__', '__path__'):
return '/dev/null'
elif name[0] == name[0].upper():
return type(name, (), {})
else:
return Mock()
MOCK_MODULES = ['numpy', 'scipy', 'matplotlib', 'matplotlib.pyplot']
for mod_name in MOCK_MODULES:
sys.modules[mod_name] = Mock()
Однако при запуске from matplotlib.pyplot import *
я получаю сообщение об ошибке TypeError: 'type' object does not support indexing
.
Есть ли способ изменить мой Mock, чтобы он позволял мне импортировать matplotlib с помощью стиля from x import *
? Мне не нужны какие-либо специальные функции, которые нужно сделать доступными, мне просто нужно, чтобы они могли быть импортированы, чтобы ReadTheDocs мог правильно импортировать код.