çalışmasını nasıl yapmalıyım? Matplotlib'in bir Mock'ını üretmeye çalışıyorum, böylece Docum'ları ReadTheDocs kullanarak derleyebilirim, ancak bir soruna girdim.`x içe aktarma *` işlevi,
Kodumda, matplotlib dosyasını from matplotlib.pyplot import *
kullanarak içe aktarıyorum. (ReadTheDocs FAQ önerdiği gibi)
benim Mocks için aşağıdaki kodu kullanıyorum:
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()
Ancak from matplotlib.pyplot import *
çalıştırırken ben olsun bir hata TypeError: 'type' object does not support indexing
söyleyerek.
Mock'umu değiştirebilmem için bir yol var mı? Böylece from x import *
stilini kullanarak matplotlib dosyasını içe aktarmama izin veriyor? Kullanılabilecek herhangi bir özel fonksiyona ihtiyacım yok, sadece ReadTheDocs'un kodu doğru şekilde içe aktarabilmesi için içe aktarılabilmek için ihtiyacım var.
Yan not: Kendi genel amaçlı alay rulo etmeyin. Mükemmel 'mock 'kütüphanesini 3.3'te kullanın. Standart kütüphanede bile. – delnan
Yorum için teşekkürler - Ben 'mock' kütüphane ithal ve sonra ReadTheDocs tarafından önerilen bir yerine 'mock.Mock' sınıfını kullanarak her şeyin iyi çalıştığını buldum. – robintw