diff --git a/docs/autogen_magics.py b/docs/autogen_magics.py index e1ead0b..7355733 100644 --- a/docs/autogen_magics.py +++ b/docs/autogen_magics.py @@ -1,15 +1,10 @@ from IPython.core.alias import Alias from IPython.core.interactiveshell import InteractiveShell +from IPython.core.magic import MagicAlias from IPython.utils.text import dedent, indent shell = InteractiveShell.instance() -magic_docs = shell.magics_manager.lsmagic_docs() - -def isalias(name): - return isinstance(shell.magics_manager.magics['line'], Alias) - -line_magics = magic_docs['line'] -cell_magics = magic_docs['cell'] +magics = shell.magics_manager.magics def _strip_underline(line): chars = set(line.strip()) @@ -18,7 +13,8 @@ def _strip_underline(line): else: return line -def format_docstring(docstring): +def format_docstring(func): + docstring = (func.__doc__ or "Undocumented").rstrip() docstring = indent(dedent(docstring)) # Sphinx complains if indented bits have rst headings in, so strip out # any underlines in the docstring. @@ -34,13 +30,14 @@ output = [ # Case insensitive sort by name def sortkey(s): return s[0].lower() -for name, docstring in sorted(line_magics.items(), key=sortkey): - if isalias(name): +for name, func in sorted(magics['line'].items(), key=sortkey): + if isinstance(func, Alias) or isinstance(func, MagicAlias): # Aliases are magics, but shouldn't be documented here + # Also skip aliases to other magics continue output.extend([".. magic:: {}".format(name), "", - format_docstring(docstring), + format_docstring(func), ""]) output.extend([ @@ -49,16 +46,18 @@ output.extend([ "", ]) -for name, docstring in sorted(cell_magics.items(), key=sortkey): +for name, func in sorted(magics['cell'].items(), key=sortkey): if name == "!": # Special case - don't encourage people to use %%! continue - if docstring == line_magics.get(name, 'QQQP'): + if func == magics['line'].get(name, 'QQQP'): # Don't redocument line magics that double as cell magics continue + if isinstance(func, MagicAlias): + continue output.extend([".. cellmagic:: {}".format(name), "", - format_docstring(docstring), + format_docstring(func), ""]) with open("source/interactive/magics-generated.txt", "w") as f: