##// END OF EJS Templates
Merge pull request #2002 from bfroehle/lsmagic_docs...
Fernando Perez -
r7654:edaad4c7 merge
parent child Browse files
Show More
@@ -340,6 +340,30 b' class MagicsManager(Configurable):'
340 """
340 """
341 return self.magics
341 return self.magics
342
342
343 def lsmagic_docs(self, brief=False, missing=''):
344 """Return dict of documentation of magic functions.
345
346 The return dict has the keys 'line' and 'cell', corresponding to the
347 two types of magics we support. Each value is a dict keyed by magic
348 name whose value is the function docstring. If a docstring is
349 unavailable, the value of `missing` is used instead.
350
351 If brief is True, only the first line of each docstring will be returned.
352 """
353 docs = {}
354 for m_type in self.magics:
355 m_docs = {}
356 for m_name, m_func in self.magics[m_type].iteritems():
357 if m_func.__doc__:
358 if brief:
359 m_docs[m_name] = m_func.__doc__.split('\n', 1)[0]
360 else:
361 m_docs[m_name] = m_func.__doc__.rstrip()
362 else:
363 m_docs[m_name] = missing
364 docs[m_type] = m_docs
365 return docs
366
343 def register(self, *magic_objects):
367 def register(self, *magic_objects):
344 """Register one or more instances of Magics.
368 """Register one or more instances of Magics.
345
369
@@ -59,6 +59,24 b' class BasicMagics(Magics):'
59 """List currently available magic functions."""
59 """List currently available magic functions."""
60 print(self._lsmagic())
60 print(self._lsmagic())
61
61
62 def _magic_docs(self, brief=False, rest=False):
63 """Return docstrings from magic functions."""
64 mman = self.shell.magics_manager
65 docs = mman.lsmagic_docs(brief, missing='No documentation')
66
67 if rest:
68 format_string = '**%s%s**::\n\n\t%s\n\n'
69 else:
70 format_string = '%s%s:\n\t%s\n'
71
72 return ''.join(
73 [format_string % (ESC_MAGIC, fname, fndoc)
74 for fname, fndoc in sorted(docs['line'].items())]
75 +
76 [format_string % (ESC_MAGIC*2, fname, fndoc)
77 for fname, fndoc in sorted(docs['cell'].items())]
78 )
79
62 @line_magic
80 @line_magic
63 def magic(self, parameter_s=''):
81 def magic(self, parameter_s=''):
64 """Print information about the magic function system.
82 """Print information about the magic function system.
@@ -74,45 +92,15 b' class BasicMagics(Magics):'
74 except IndexError:
92 except IndexError:
75 pass
93 pass
76
94
77 magic_docs = []
95 brief = (mode == 'brief')
78 escapes = dict(line=ESC_MAGIC, cell=ESC_MAGIC*2)
96 rest = (mode == 'rest')
79 magics = self.shell.magics_manager.magics
97 magic_docs = self._magic_docs(brief, rest)
80
81 for mtype in ('line', 'cell'):
82 escape = escapes[mtype]
83 for fname, fn in sorted(magics[mtype].items()):
84
85 if mode == 'brief':
86 # only first line
87 if fn.__doc__:
88 fndoc = fn.__doc__.split('\n',1)[0]
89 else:
90 fndoc = 'No documentation'
91 else:
92 if fn.__doc__:
93 fndoc = fn.__doc__.rstrip()
94 else:
95 fndoc = 'No documentation'
96
97 if mode == 'rest':
98 rest_docs.append('**%s%s**::\n\n\t%s\n\n' %
99 (escape, fname, fndoc))
100 else:
101 magic_docs.append('%s%s:\n\t%s\n' %
102 (escape, fname, fndoc))
103
104 magic_docs = ''.join(magic_docs)
105
106 if mode == 'rest':
107 return "".join(rest_docs)
108
98
109 if mode == 'latex':
99 if mode == 'latex':
110 print(self.format_latex(magic_docs))
100 print(self.format_latex(magic_docs))
111 return
101 return
112 else:
102 else:
113 magic_docs = format_screen(magic_docs)
103 magic_docs = format_screen(magic_docs)
114 if mode == 'brief':
115 return magic_docs
116
104
117 out = ["""
105 out = ["""
118 IPython's 'magic' functions
106 IPython's 'magic' functions
@@ -304,7 +292,7 b' Defaulting color scheme to \'NoColor\'"""'
304 def quickref(self,arg):
292 def quickref(self,arg):
305 """ Show a quick reference sheet """
293 """ Show a quick reference sheet """
306 from IPython.core.usage import quick_reference
294 from IPython.core.usage import quick_reference
307 qr = quick_reference + self.magic('-brief')
295 qr = quick_reference + self._magic_docs(brief=True)
308 page.page(qr)
296 page.page(qr)
309
297
310 @line_magic
298 @line_magic
General Comments 0
You need to be logged in to leave comments. Login now