diff --git a/IPython/core/interactiveshell.py b/IPython/core/interactiveshell.py index 91854a9..d987db3 100644 --- a/IPython/core/interactiveshell.py +++ b/IPython/core/interactiveshell.py @@ -83,6 +83,18 @@ from warnings import warn from logging import error import IPython.core.hooks +try: + import docrepr.sphinxify as sphx + + def docformat(doc): + dirname = tempfile.mkdtemp(prefix='ipython_sphinxify_') + return { + 'text/html': sphx.sphinxify(doc, dirname), + 'text/plain': doc + } +except: + docformat = None + #----------------------------------------------------------------------------- # Globals #----------------------------------------------------------------------------- @@ -1528,7 +1540,7 @@ class InteractiveShell(SingletonConfigurable): info = self._object_find(oname, namespaces) if info.found: pmethod = getattr(self.inspector, meth) - formatter = format_screen if info.ismagic else None + formatter = format_screen if info.ismagic else docformat if meth == 'pdoc': pmethod(info.obj, oname, formatter) elif meth == 'pinfo': diff --git a/IPython/core/oinspect.py b/IPython/core/oinspect.py index d1a122e..ed4970c 100644 --- a/IPython/core/oinspect.py +++ b/IPython/core/oinspect.py @@ -546,11 +546,16 @@ class Inspector(Colorable): title = header((title+":").ljust(title_width)) out.append(cast_unicode(title) + cast_unicode(content)) return "\n".join(out) - + def _format_info(self, obj, oname='', formatter=None, info=None, detail_level=0): """Format an info dict as text""" - info = self.info(obj, oname=oname, formatter=formatter, + + # hack docstring rendering + info = self.info(obj, oname=oname, formatter=None, info=info, detail_level=detail_level) + if formatter: + return formatter(info["docstring"]) + displayfields = [] def add_fields(fields): for title, key in fields: