|
249 | 249 |
|
250 | 250 | # If true, do not generate a @detailmenu in the "Top" node's menu. |
251 | 251 | #texinfo_no_detailmenu = False |
| 252 | + |
| 253 | +classCExtMock(object): |
| 254 | +"""Required for autodoc on readthedocs.org where you cannot build C extensions.""" |
| 255 | +def__init__(self,*args,**kwargs): |
| 256 | +pass |
| 257 | + |
| 258 | +def__call__(self,*args,**kwargs): |
| 259 | +returnCExtMock() |
| 260 | + |
| 261 | +@classmethod |
| 262 | +def__getattr__(cls,name): |
| 263 | +ifnamein ('__file__','__path__'): |
| 264 | +return'/dev/null' |
| 265 | +else: |
| 266 | +returnCExtMock() |
| 267 | + |
| 268 | +try: |
| 269 | +importlxml# flake8: noqa |
| 270 | +exceptImportError: |
| 271 | +sys.modules['lxml']=CExtMock() |
| 272 | +sys.modules['lxml.etree']=CExtMock() |
| 273 | +print("warning: lxml modules mocked.") |
| 274 | + |
| 275 | +try: |
| 276 | +importgenshi# flake8: noqa |
| 277 | +exceptImportError: |
| 278 | +sys.modules['genshi']=CExtMock() |
| 279 | +sys.modules['genshi.core']=CExtMock() |
| 280 | +print("warning: genshi modules mocked.") |