[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
IPython.core.formatters<http://ipython.org/ipython-doc/dev/api/generated/IPython.core.formatters.html>
.
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
terminal:
formatter = get_ipython().display_formatter.formatters['text/plain']
And this has a dictionary by *type* of functions to call for given types:
formatter.type_printers
And you can register new type printers with:
formatter.for_type(type, myfunc)
Where myfunc needs to obey the `(obj,p,cycle)` pattern in
IPython.lib.pretty<http://ipython.org/ipython-doc/dev/api/generated/IPython.lib.pretty.html>
.
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))
-MinRK
> 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