[IPython-dev] Output of, e.g., type(a)

MinRK benjaminrk at gmail.com
Sat Oct 22 14:22:06 EDT 2011

On Sat, Oct 22, 2011 at 10:49, Warren Weckesser <
warren.weckesser at enthought.com> wrote:

> Hi all,
> ipython is doing some magic with the output of 'type(a)' (using 0.11.rc1 in
> EPD):
> In [1]: a = 1
> In [2]: type(a)
> Out[2]: int
> In [3]: str(type(a))
> Out[3]: "<type 'int'>"
> In [4]: repr(type(a))
> Out[4]: "<type 'int'>"
> The output in line 2 is nicer, but it makes it appear that the builtin
> 'type' behaves in a way that it does not.  My attempts (possibly too brief)
> to find documentation or discussion of this feature have not been fruitful.
> Can anyone point me to the relevant docs, or mailing list discussions?
> Thanks.

To turn of *all* pretty printing, use %pprint to toggle (as I now see you
have discovered)

output formatting is all handled by the new display system, which is
unfortunately not very well documented, but is implemented primarily in

But here's the gist:

IPython has a collection of various formatters for various representations
of objects (svg, png, html, latex, plaintext, etc.).  Terminal IPython
obviously only uses plaintext.  To get the relevant formatter in the

    formatter = get_ipython().display_formatter.formatters['text/plain']

And this has a dictionary by *type* of functions to call for given types:


And you can register new type printers with:

    formatter.for_type(type, myfunc)

Where myfunc needs to obey the `(obj,p,cycle)` pattern in

If you don't like a particular type's pretty output, you can force it to
fallback on repr by just deleting the relevant key from the type_printers
dict, or explicitly registering a new printer that writes repr:

    formatter.for_type(type, lambda obj, p, cycle: p.text(repr(obj))


> Warren
> _______________________________________________
> IPython-dev mailing list
> IPython-dev at scipy.org
> http://mail.scipy.org/mailman/listinfo/ipython-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ipython-dev/attachments/20111022/d66e0966/attachment.html>

More information about the IPython-dev mailing list