##// END OF EJS Templates
Merge pull request #7025 from takluyver/master...
Merge pull request #7025 from takluyver/master API docs gardening

File last commit:

r19043:61844265
r19050:8dc89c07 merge
Show More
autogen_api.py
79 lines | 3.8 KiB | text/x-python | PythonLexer
#!/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))