readthedocs のドキュメントをコンパイルするには、モジュール h5py をモックする必要があります。次の簡単なコードで再現できるエラーが表示されます。
from __future__ import print_function
import sys
try:
from unittest.mock import MagicMock
except ImportError:
# Python 2
from mock import Mock as MagicMock
class Mock(MagicMock):
@classmethod
def __getattr__(cls, name):
return Mock()
sys.modules.update({'h5py': Mock()})
import h5py
print(h5py.File, type(h5py.File))
class A(h5py.File):
pass
print(A, type(A))
class B(A):
pass
このスクリプトの出力は次のとおりです。
<Mock id='140342061004112'> <class 'mock.mock.Mock'>
<Mock spec='str' id='140342061005584'> <class 'mock.mock.Mock'>
Traceback (most recent call last):
File "problem_mock.py", line 32, in <module>
class B(A):
TypeError: Error when calling the metaclass bases
str() takes at most 1 argument (3 given)
h5py
をモックする正しい方法は何h5py.File
ですか?
この問題は、一部のモジュールをモックする必要がある readthedocs を使用したドキュメントでは非常に一般的であるように思えます。コミュニティが答えを持っていることは有益です。