[IPython-user] Controlling ipython prompt behavior

Tom Denniston tom.denniston at alum.dartmouth.org
Wed Jun 14 20:48:21 CDT 2006


Thanks guys.  This helps a lot.

--Tom

On 6/14/06, Walter Dörwald <walter at livinglogic.de> wrote:
> Robert Kern wrote:
>
> > Tom Denniston wrote:
> >> When you hit enter at an Ipython prompt it prints out the repr of the
> >> results of evaluating the line.  Is there a way to override this
> >> behavior to control what gets done.  I could change the reprs on all
> >> my objects but that is not a great solution.
> >
> > Yes. You can provide a 'result_display' function as a hook. I'm not sure what
> > the best way to access hooks is, but something like the following should work:
> >
> >
> > from IPython.genutils import Term
> > from IPython.hooks import result_display
> >
> > def my_result_display(self, arg):
> >     """ Yes, self is needed here.
> >
> >     See result_display() in IPython/hooks.py
> >     """
> >
> >     if type(arg) is MySpecialType:
> >         print >>Term.cout, arg.special_repr()
> >     else:
> >         # Fall back on the default behaviour.
> >         result_display(self, arg)
> >     return None
>
> You can fall back to the next hook in the chain by raising ipapi.TryNext.
>
> > # Is there a better way to get the InteractiveShell instance besides __IP?
> > __IP.set_hook('result_display', my_result_display)
>
> from IPython import ipapi
> ipapi.get().set_hook("result_display", my_result_display)
>
> > AFAICT, this *overrides* the current hook (unless if there is one of greater
> > priority, see InteractiveShell.set_hook() in IPython/iplib.py), so be sure that
> > your function can handle anything.
>
> Servus,
>    Walter
>
> _______________________________________________
> IPython-user mailing list
> IPython-user at scipy.net
> http://scipy.net/mailman/listinfo/ipython-user
>




More information about the IPython-user mailing list