Just wanted to chip in and say this idea is very cool.  I don&#39;t have any good ideas/thoughts on the implementation, but I am happy to alpha test when you have a sample notebook ready to try out.<div class="gmail_extra">
<br><br><div class="gmail_quote">On Fri, Dec 7, 2012 at 6:27 AM, Brian Granger <span dir="ltr">&lt;<a href="mailto:ellisonbg@gmail.com" target="_blank">ellisonbg@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">&gt;&gt; Hi, this is really exciting and will be a huge improvement for using<br>
&gt;&gt; the notebook for real work.  I will try to look a bit more at this<br>
&gt;&gt; over the next week (in the middle of finals right now).  But a few<br>
&gt;&gt; comments:<br>
&gt;&gt;<br>
&gt;&gt; * Why exactly do you need cell ids?<br>
&gt;<br>
&gt;<br>
&gt; I&#39;ve enhanced the test failure stack traces such that the function&#39;s<br>
&gt; &quot;filename&quot; (like &lt;ipython-input-DD-HHHHHHHHHHHH&gt;) links to the cell that<br>
&gt; defines that code. That makes it easy to click close to the definition of a<br>
&gt; failing test or function. Even better would be linking directly to the line<br>
&gt; of code in question… :)  Unfortunately the current implementation has a<br>
&gt; visual bug when linking to an anchor: the top IPython bar shifts up about<br>
&gt; 0.3em (it shifts back if you hit the empty fragment, &quot;#&quot;).<br>
<br>
</div>Ahh, this is a nice feature.  Can you describe a bit more about how<br>
you track this information as it flows though the code.  Do the cell<br>
ids get sent to the kernel?  What does the kernet do with them?<br>
<div class="im"><br>
&gt;&gt;<br>
&gt;&gt; * We are soon going to completely remove the ability to publish<br>
&gt;&gt; javascript from Python.  There are two many horrific security<br>
&gt;&gt; problems.  The replacement abstraction is &quot;javascript plugins&quot; that<br>
&gt;&gt; are under review here:<br>
&gt;&gt;<br>
&gt;&gt; <a href="https://github.com/ipython/ipython/pull/2518" target="_blank">https://github.com/ipython/ipython/pull/2518</a><br>
&gt;&gt;<br>
&gt;&gt; There is more work to do on this, but this will give you an idea of<br>
&gt;&gt; where we are headed.  Please ask questions about the plugins on that<br>
&gt;&gt; PR.<br>
&gt;<br>
&gt;<br>
&gt; That makes a lot of sense. From a quick reading of it, an extension would be<br>
&gt; able to register JS to be loaded onto the page, and the publish_json method<br>
&gt; would allow the payload to be handed to one of those custom functions.<br>
&gt; There&#39;s no reason I can&#39;t port this extension to that style once that lands.<br>
<br>
</div>Yep it shouldn&#39;t be too difficult.<br>
<div class="im"><br>
&gt; I do have a few questions up-front:<br>
&gt; 1. Is there a better way than peeking at sys.displayhook to determine what<br>
&gt; kind of output to produce?<br>
<br>
</div>I am not quite sure what you mean and how you &quot;peek&quot; and<br>
sys.displayhook for this.<br>
<div class="im"><br>
&gt; 2. I&#39;d really like to have cell anchor generation happen always. Seems like<br>
&gt; it would be useful to provide intra-notebook links to cells. I&#39;m not sure<br>
&gt; how one would manage those links as the execution order evolves, though. For<br>
&gt; this extension, that migration is actually a good thing, as the anchor<br>
&gt; points to the code that was actually run even if it&#39;s no longer visible.<br>
<br>
</div>I am trying to understand what the usage cases are.  Would these links<br>
be typed in by hand by a user?  If so, we would want the ids to have a<br>
human readable form.  If they are always generated by code they could<br>
be ugly.<br>
<br>
The other thing we have to keep in mind is that we can&#39;t ever couple<br>
the kernel to the notebook frontend.  That is, the kernel can&#39;t ever<br>
know about these cell ids in any formal way.<br>
<div class="im"><br>
&gt; 3. I&#39;d love to have a consistent interface to stream something like stdout<br>
&gt; character-wise instead of line-wise. Right now it&#39;s hacked to hook stdout<br>
&gt; directly on the console, and with even more horrible jQuery machinations on<br>
&gt; the notebook side.<br>
<br>
</div>Can&#39;t you call flush to do this?  Can you describe this a bit more.<br>
Again, not following how all of this is used.  It sounds messy...<br>
<br>
Cheers,<br>
<br>
Brian<br>
<div class="HOEnZb"><div class="h5"><br>
&gt; Thanks!<br>
&gt;<br>
&gt;<br>
&gt;&gt; Cheers,<br>
&gt;&gt;<br>
&gt;&gt; Brian<br>
&gt;&gt;<br>
&gt;&gt; On Tue, Nov 27, 2012 at 11:49 AM, Taavi Burns &lt;<a href="mailto:taavi.burns@gmail.com">taavi.burns@gmail.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt; <a href="https://github.com/taavi/ipython_nose" target="_blank">https://github.com/taavi/ipython_nose</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I&#39;ve gotten the %nose magic Greg Ward and I worked on at the PyCon<br>
&gt;&gt; &gt; Canada<br>
&gt;&gt; &gt; sprints to a reasonable point. I&#39;m not yet convinced that it&#39;s ready for<br>
&gt;&gt; &gt; integration into IPython (I think I&#39;d like to get IPython to add id<br>
&gt;&gt; &gt; attributes on the cells so I don&#39;t have to add them myself with JS), but<br>
&gt;&gt; &gt; it<br>
&gt;&gt; &gt; should be good enough for some real-world testing.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; It&#39;s pip-installable in development mode:<br>
&gt;&gt; &gt; . YOUR/VIRTUALENV/activate<br>
&gt;&gt; &gt; git clone <a href="https://github.com/taavi/ipython_nose.git" target="_blank">https://github.com/taavi/ipython_nose.git</a><br>
&gt;&gt; &gt; cd ipython_nose<br>
&gt;&gt; &gt; pip install -e .<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I might not bother putting it on PyPI if it&#39;s as likely to get included<br>
&gt;&gt; &gt; in<br>
&gt;&gt; &gt; the base IPython as Fernando was suggesting. ;)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I&#39;d appreciate any feedback on features and bugs. Feel free to lodge<br>
&gt;&gt; &gt; them in<br>
&gt;&gt; &gt; the github tracker. Pull requests are also welcome! Please keep in mind<br>
&gt;&gt; &gt; that<br>
&gt;&gt; &gt; the end goal is to integrate it into IPython proper, so some work might<br>
&gt;&gt; &gt; be<br>
&gt;&gt; &gt; deferred until then.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Thanks!<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; taa<br>
&gt;&gt; &gt; /*eof*/<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt; IPython-dev mailing list<br>
&gt;&gt; &gt; <a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
&gt;&gt; &gt; <a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Brian E. Granger<br>
&gt;&gt; Cal Poly State University, San Luis Obispo<br>
&gt;&gt; <a href="mailto:bgranger@calpoly.edu">bgranger@calpoly.edu</a> and <a href="mailto:ellisonbg@gmail.com">ellisonbg@gmail.com</a><br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; IPython-dev mailing list<br>
&gt;&gt; <a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
&gt;&gt; <a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; taa<br>
&gt; /*eof*/<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; IPython-dev mailing list<br>
&gt; <a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
&gt; <a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
&gt;<br>
<br>
<br>
<br>
--<br>
Brian E. Granger<br>
Cal Poly State University, San Luis Obispo<br>
<a href="mailto:bgranger@calpoly.edu">bgranger@calpoly.edu</a> and <a href="mailto:ellisonbg@gmail.com">ellisonbg@gmail.com</a><br>
_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
</div></div></blockquote></div><br></div>