<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 7 July 2014 00:20, Thomas Wiecki <span dir="ltr"><<a href="mailto:thomas.wiecki@gmail.com" target="_blank">thomas.wiecki@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div><div><div>With my limited understanding of the IPyNB internals I would see three ways this could be achieved:<br>



</div>* There is a hook in the IPyNB I can use like the magic<br></div>* I have to change the IPyNB client code to do the analysis before it's sent to the kernel.<br></div>* I change the kernel to do the analysis.<br>



<br></div>Which of these is the best? Can someone point me to the relevant code section I would need to make changes to?</blockquote></div><br></div><div class="gmail_extra">I think you can make use of the hooks already in the kernel. If you're just checking the AST, it's fairly straightforward: just register an AST transformer as described here: <a href="http://ipython.org/ipython-doc/dev/config/inputtransforms.html#ast-transformations">http://ipython.org/ipython-doc/dev/config/inputtransforms.html#ast-transformations</a> . It doesn't need to do any transformations: you can simply inspect the code and return it unchanged. Or you can replace it all with Pass() to prevent the cell from executing. It would still look as if it had executed from the frontend, though.<br>

<br></div><div class="gmail_extra">Thomas<br></div></div>