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

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


I should note that the best documentation we do have is in the
display_protocol notebook in docs/examples/notebooks.

On Sat, Oct 22, 2011 at 11:22, MinRK <benjaminrk at gmail.com> wrote:

>
>
> 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/8d9517df/attachment.html>


More information about the IPython-dev mailing list