[IPython-user] Controlling ipython prompt behavior
Walter Dörwald
walter at livinglogic.de
Wed Jun 14 15:31:32 CDT 2006
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
More information about the IPython-user
mailing list