##// END OF EJS Templates
Provide and easier way to generate magics and pre-post hooks...
Provide and easier way to generate magics and pre-post hooks This introduce a code base way of modifying the ast. This allow to use Template strings with the two special variable names names `__code__` and `__ret__` allowing to quickly write a magic, or hooks that modify the ast. This also introduce a `%code_wrap` cell magic to on the fly wrap code. It is this easy to for example modify IPython to say time each block of code, or retry them, or wrap them in try/except and analyse the error message, profile... Note that this is not new, but simply convenience function and utilities, especially around hygiene.

File last commit:

r28323:548406db
r28323:548406db
Show More
autogen_api.py
81 lines | 2.8 KiB | text/x-python | PythonLexer
#!/usr/bin/env python
"""Script to auto-generate our API docs.
"""
import os
import sys
pjoin = os.path.join
here = os.path.abspath(os.path.dirname(__file__))
sys.path.append(pjoin(os.path.abspath(here), 'sphinxext'))
from apigen import ApiDocWriter
source = pjoin(here, 'source')
#*****************************************************************************
if __name__ == '__main__':
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',
# This isn't API
r'\.sphinxext',
# Shims
r'\.kernel',
r'\.terminal\.pt_inputhooks',
]
# 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
docwriter.module_skip_patterns += [
r"\.lib\.inputhook.+",
r"\.ipdoctest",
r"\.testing\.plugin",
# Backwards compat import for lib.lexers
r"\.nbconvert\.utils\.lexers",
# We document this manually.
r"\.utils\.py3compat",
# These are exposed in display
r"\.core\.display",
r"\.lib\.display",
# Shims
r"\.config",
r"\.consoleapp",
r"\.frontend$",
r"\.html",
r"\.nbconvert",
r"\.nbformat",
r"\.parallel",
r"\.qt",
# this is deprecated.
r"\.utils\.version",
# Private APIs (there should be a lot more here)
r"\.terminal\.ptutils",
]
# main API is in the inputhook module, which is documented.
# 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",
"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))