[IPython-dev] Auto-calling question
danmil at comcast.net
Mon Feb 26 16:08:17 EST 2007
I understand the CommandChainDispatcher idea, but it looks like the
hooks get called in iplib._prefilter (l. 2081), like so:
rewritten = self.hooks.input_prefilter(stripped)
if rewritten != stripped: # ok, some prefilter did something
rewritten = pre + rewritten # add indentation
# Rest of _prefilter() continues here -- checking for %magic,
So that all hook-installed prefilters will play well together, but
that, if any of those do anything, then self.handle_normal is called
and nothing else from the core IPython system happens. Is there
something I'm missing?
On Feb 26, 2007, at 3:38 PM, Ville M. Vainio wrote:
> On 2/26/07, Dan Milstein <danmil at comcast.net> wrote:
>> Actually, since you bring that up, I have a question about
>> As far as I can tell from the code, if you install an input_prefilter
>> hook, then, for each line:
>> If your hook changes the line at all, then IPython does no more
>> transformations (no magic, no autocall, etc)
>> If your hook runs but does *not* change the line, then IPython
>> *does* run it's usual transformations
>> a) Is that right?
> No, ipapi.TryNext takes optional args that modify what the next hook
> gets as an arg.
> See ipapi.TryNext and hooks.CommandChainDispatcher (all the normal
> hooks end up in CommandChainDispatcher "chains").
> Let us know if this is still unclear, with the current lack of example
> use. And thank you for taking initiative in this!
> Ville M. Vainio - vivainio.googlepages.com
> blog=360.yahoo.com/villevainio - g[mail | talk]='vivainio'
More information about the IPython-dev