Yes, it would not be good to have the API of cell magics be notebook specific. What about providing a reference to the current cell metadata in the Magics class that can be used to update the NotebookNode after executing cell.input? So, cell_magics would not have access to the metadata on execution but could pass any metadata it wanted to back to the notebook.<div>
<br></div><div>This is already sort of possible if you&#39;re willing to go through the outputs of the cell on the frontend by a hack along the lines of</div><div><br></div><div>metadata[&quot;type&quot;] = &quot;cell_metadata&quot;</div>
<div>publish_display_data(&quot;cell_metadata&quot;, {&quot;application/json&quot;:metadata)</div><div><br></div><div>Followed by (on the front end)</div><div><br></div><div>for output in cell.outputs:</div><div>    if (output.json is not None and &quot;type&quot; in output.json and output.json[&#39;type&#39;] == &quot;cell_metadata&quot;):</div>
<div>        del(output.json[&#39;type&#39;])</div><div>        cell.metadata.update(output.json)</div><div><br><div>This will obviously have a problem if metadata had a key called &quot;type&quot; but maybe its logic could be encapsulated into an &quot;update_cell_metadata&quot; function?</div>
<div><div><br><div class="gmail_quote">On Tue, Jun 19, 2012 at 2:48 AM, Thomas Kluyver <span dir="ltr">&lt;<a href="mailto:takowl@gmail.com" target="_blank">takowl@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">On 19 June 2012 09:18, Jonathan Taylor &lt;<a href="mailto:jonathan.taylor@stanford.edu">jonathan.taylor@stanford.edu</a>&gt; wrote:<br>
&gt; With the addition of cell-level metadata in cells in ipython/master it would<br>
&gt; be nice to be able to easily add metadata to cells, say, through a cell<br>
&gt; magic?<br>
<br>
</div>I agree that there are reasons why the user might want to alter the<br>
metadata, but I don&#39;t think cell magics are the way to do it. Cell<br>
magics are run in the kernel, which doesn&#39;t know about the frontend.<br>
And you can use cell magics in the qt console or the terminal, so<br>
their API can&#39;t be notebook specific.<br>
<br>
Thomas<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>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Jonathan Taylor                          <br>Dept. of Statistics                      <br>Sequoia Hall, 137                          <br>390 Serra Mall<br>Stanford, CA 94305<br>
Tel:   650.723.9230<br>Fax:   650.725.8977<br>Web: <a href="http://www-stat.stanford.edu/~jtaylo">http://www-stat.stanford.edu/~jtaylo</a><br>
</div></div></div>