doc:source:conf.py: mock numpy module for read-the-docs
authorW. Trevor King <wking@tremily.us>
Mon, 19 Nov 2012 10:01:22 +0000 (05:01 -0500)
committerW. Trevor King <wking@tremily.us>
Mon, 19 Nov 2012 10:01:22 +0000 (05:01 -0500)
They don't have NumPy installed on their build server.

doc/source/conf.py

index 81f8dd9a9b43710483b6614bae2150c3d5bfd843..2b2a66037025cc4e761cf1c19fc1431181684ea2 100755 (executable)
@@ -276,3 +276,31 @@ intersphinx_mapping = {
 # -- Options for pngmath ------------------------------------------------------
 
 pngmath_latex_preamble = latex_preamble
+
+
+# -- read-the-docs --
+
+class Mock(object):
+    # http://read-the-docs.readthedocs.org/en/latest/faq.html#i-get-import-errors-on-libraries-that-depend-on-c-modules
+    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():
+            mockType = type(name, (), {})
+            mockType.__module__ = __name__
+            return mockType
+        else:
+            return Mock()
+
+
+MOCK_MODULES = ['numpy']
+
+for mod_name in MOCK_MODULES:
+    sys.modules[mod_name] = Mock()