<div dir="ltr"><div><div>Our take on this is that IPython's magic functions are a feature of the IPython kernel. This kernel runs code written in 'IPython syntax', which is a loosely specified superset of Python code, including some features designed for convenient interactive use (%magics, !shell commands, help?, etc.). If other kernels want to implement extra syntax for their own languages to aid interactive use, that's up to them, but we don't expect them to, and we're not trying to standardise those features.<br>

<br></div>The same goes for IPython (kernel side) extensions: if other kernels need an extension system, they should implement that using the tools and conventions that make sense for that language. We do, however, intend to build tools to manage pure client side notebook extensions in a kernel-independent way.<br>

<br></div>Thomas<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 12 August 2014 10:09, Doug Blank <span dir="ltr"><<a href="mailto:doug.blank@gmail.com" target="_blank">doug.blank@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">We are beginning to take our Pure-Python languages out from Calico and implement them as stand-alone kernels (based on KernelBase) for Jupyter (IPython 3). This includes Scheme, Basic, Logo, Little Computer (LC3, assembly language), etc.<div>


<br></div><div>Wondering about how magics might be handled in Jupyter (In the Calico Kernel, we handle magics in C# before passing the rest of the code to the language). Currently, it looks like magics are handled in IPython by the Interactive Python Shell. There are many magics that are language independent and could be handled more abstractly (via JavaScript or server):</div>


<div><br></div><div>* %%latex</div><div>* %%html</div><div>* %connect_info</div><div>* %%file - create a file, with cell contents</div><div>* %%time - give execution time (not timeit, which figures out how many times to run)</div>


<div>* %logstart</div><div>* many others</div><div><br></div><div>In addition, there is the need to allow others to write magics for specific kernels, or for general kernels. That would imply some kind of %load_ext.</div>


<div><br></div><div>Also, there is generic ! shell execution. </div><div><br></div><div>Are there any plans on how to handle these functions in a kernel-independent manner? If not, it would be good for kernel authors to adopt some standards for magics.</div>


<div><br></div><div>Thanks for any pointers or comments!</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>-Doug</div></font></span></div>
<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>
<br></blockquote></div><br></div>