<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 11 September 2013 11:16, Matthias BUSSONNIER <span dir="ltr"><<a href="mailto:bussonniermatthias@gmail.com" target="_blank">bussonniermatthias@gmail.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">What about a decorator ? It does not give author much choice.</blockquote></div><br></div><div class="gmail_extra">I think the best way is to use the @needs_local_scope decorator, and change the api of var_expand a bit. The reason that var_expand needs a stack depth is so that it can find the local scope, if the magic is called within a function (which can't happen for a cell magic, in any case). We can easily get a reference to the global user namespace.<br>


<br></div><div class="gmail_extra">With the @needs_local_scope decorator, the magic function gets a keyword argument local_ns with the namespace of the function from which it was called. It could then pass that to var_expand() instead of a stack depth. We're already using that decorator, e.g. for %time and %Rpush, so this seems like the simplest approach.<br>


<br></div><div class="gmail_extra">Have we thought about which magic functions should continue to expand variables?<br><br></div><div class="gmail_extra">Thomas<br></div></div>