#!/usr/bin/env python """Script to auto-generate our API docs. """ # stdlib imports import os import sys # local imports sys.path.append(os.path.abspath('sphinxext')) from apigen import ApiDocWriter #***************************************************************************** if __name__ == '__main__': pjoin = os.path.join package = 'IPython' outdir = pjoin('source','api','generated') docwriter = ApiDocWriter(package,rst_extension='.rst') # You have to escape the . here because . is a special char for regexps. # You must do make clean if you change this! docwriter.package_skip_patterns += [r'\.external$', # Extensions are documented elsewhere. r'\.extensions', r'\.config\.profile', # Old nbformat versions r'\.nbformat\.v[1-2]', # Public API for this is in kernel.zmq.eventloops r'\.kernel\.zmq\.gui', # Magics are documented separately r'\.core\.magics', ] # The inputhook* modules often cause problems on import, such as trying to # load incompatible Qt bindings. It's easiest to leave them all out. The # main API is in the inputhook module, which is documented. docwriter.module_skip_patterns += [ r'\.lib\.inputhook.+', r'\.ipdoctest', r'\.testing\.plugin', # This just prints a deprecation msg: r'\.frontend$', # Deprecated: r'\.core\.magics\.deprecated', # We document this manually. r'\.utils\.py3compat', # These are exposed by nbformat r'\.nbformat\.convert', r'\.nbformat\.validator', r'\.nbformat\.notebooknode', # Deprecated r'\.nbformat\.current', # Exposed by nbformat.vN r'\.nbformat\.v[3-4]\.nbbase', # These are exposed in display r'\.core\.display', r'\.lib\.display', # This isn't actually a module r'\.html\.tasks', # This is private r'\.html\.allow76' ] # These modules import functions and classes from other places to expose # them as part of the public API. They must have __all__ defined. The # non-API modules they import from should be excluded by the skip patterns # above. docwriter.names_from__all__.update({ 'IPython.nbformat', 'IPython.nbformat.v3', 'IPython.nbformat.v4', 'IPython.display', }) # Now, generate the outputs docwriter.write_api_docs(outdir) # Write index with .txt extension - we can include it, but Sphinx won't try # to compile it docwriter.write_index(outdir, 'gen.txt', relative_to = pjoin('source','api') ) print ('%d files written' % len(docwriter.written_modules))