मैं matplotlib का एक मॉक बनाने की कोशिश कर रहा हूं ताकि मैं ReadDDocs का उपयोग करके अपने दस्तावेज़ों को संकलित कर सकूं, लेकिन किसी समस्या में भाग ले सकूं।'x आयात * से काम करता है'
मेरे कोड में, मैं from matplotlib.pyplot import *
का उपयोग करके matplotlib आयात करता हूं। हो
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
:
मैं अपने Mocks के लिए निम्न कोड का उपयोग कर रहा है (जैसा कि ReadTheDocs FAQ ने सुझाव दिया)।
क्या कोई तरीका है कि मैं अपना मॉक बदल सकता हूं ताकि यह मुझे from x import *
शैली का उपयोग करके matplotlib आयात करने की अनुमति दे? मुझे उपलब्ध कराए जाने वाले किसी भी विशेष कार्यों की आवश्यकता नहीं है, मुझे बस इसे आयात करने में सक्षम होने की आवश्यकता है ताकि ReadTheDocs कोड को सही तरीके से आयात कर सके।
साइड ध्यान दें: अपनी खुद की सामान्य प्रयोजन नकली रोल न करें। 3.3 में उत्कृष्ट 'मॉक' लाइब्रेरी का प्रयोग करें। यह मानक पुस्तकालय में भी है। – delnan
टिप्पणी के लिए धन्यवाद - मैंने पाया कि 'मॉक' लाइब्रेरी आयात करना और फिर ReadTheDocs द्वारा सुझाए गए एक के बजाय 'mock.Mock' class का उपयोग करके यह सब ठीक काम करता है। – robintw