numpy の MaskedArrays を大量に (継承して) 使用するライブラリを作成しました。make doctest
しかし、numpy から継承されたメソッドをテストせずにsphinx を実行したいと考えています。これは、約 100 回の失敗が発生するためです。
これは次のようになります。
class _frommethod:
"""
Adapted from numpy.ma._frommethod
"""
def __init__(self, func_name):
self.__name__ = func_name
self.__doc__ = getattr(MaskedArray, func_name).__doc__
self.obj = None
def __get__(self, obj, objtype=None):
self.obj = obj
return self
def __call__(self, a, *args, **params):
# Get the method from the array (if possible)
method_name = self.__name__
method = getattr(a, method_name, None)
if method is not None:
return method(*args, **params)
# Still here ? Then a is not a MaskedArray
method = getattr(MaskedTimeData, method_name, None)
if method is not None:
return method(MaskedTimeData(a), *args, **params)
# Still here ? OK, let's call the corresponding np function
method = getattr(np, method_name)
そして、ライブラリが numpy の関数もサポートするようになったので、以下を使用します。
min = _frommethod('min')
max = _frommethod('max')
...
を無効にするself.__doc__ = getattr(MaskedArray, func_name).__doc__
と、の失敗がmake doctest
なくなります。しかし、継承されたドキュメントを保持したいと思います。ユーザーが引き続きmylibrary.min?
ipythonで使用できるようにします。
スフィンクスがこの「継承された」ドキュメントテストを実行するのを防ぐ方法を知っている人はいますか?