<div dir="ltr">Great!<div>The functools.wraps is exactly what I needed, and it works perfectly.</div><div>Thanks.<br><br><div class="gmail_quote">On Tue, Jan 5, 2010 at 4:42 PM, Kenneth Arnold <span dir="ltr">&lt;<a href="mailto:kenneth.arnold@gmail.com">kenneth.arnold@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">func? just prints func.__doc__, nothing magic.<br><br>There&#39;s a simple, standard-library way to make wrapper functions: functools.wraps<br>
<a href="http://docs.python.org/library/functools.html#functools.wraps" target="_blank">http://docs.python.org/library/functools.html#functools.wraps</a><br>

<br clear="all">-Ken<br>
<br><br></div><div class="gmail_quote"><div class="im">On Tue, Jan 5, 2010 at 2:08 AM, Brent Pedersen <span dir="ltr">&lt;<a href="mailto:bpederse@gmail.com" target="_blank">bpederse@gmail.com</a>&gt;</span> wrote:<br></div>
<div><div></div><div class="h5"><blockquote class="gmail_quote" style="border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">

<div><div></div><div>On Mon, Jan 4, 2010 at 10:53 PM, Tsviki Hirsh &lt;<a href="mailto:tsviki.hirsh@gmail.com" target="_blank">tsviki.hirsh@gmail.com</a>&gt; wrote:<br>
&gt; Dear list,<br>
&gt; The magic ? and ?? commands are among the most useful features in ipython<br>
&gt; (at least for me),<br>
&gt; I&#39;m also using them to read my selfdocumentation on my own functions.<br>
&gt; Therefore I was surprised to learn that you cannot read the doc string of a<br>
&gt; decorated function using ? or ??<br>
&gt; for example, consider this decorator and function<br>
&gt;<br>
&gt; def deco(f):<br>
&gt; &#39;&#39;&#39;decorator docstring&#39;&#39;&#39;<br>
&gt; def _deco(*args,**kwargs):<br>
&gt; &#39;&#39;&#39;decorator inner function docstring&#39;&#39;&#39;<br>
&gt; print &#39;args=&#39;,args<br>
&gt; return f(*args,**kwargs)<br>
&gt; return _deco<br>
&gt; @deco<br>
&gt; def myfunc(x,y):<br>
&gt; &#39;&#39;&#39;function docstring&#39;&#39;&#39;<br>
&gt; return x+y<br>
&gt;<br>
&gt; if I try to call myfunc docstring using ? I get:<br>
&gt;<br>
&gt; In [18]: exem.myfunc?<br>
&gt; Type: function<br>
&gt; Base Class: &lt;type &#39;function&#39;&gt;<br>
&gt; String Form: &lt;function _deco at 0x868a5a4&gt;<br>
&gt; Namespace: Interactive<br>
&gt; File: /home/tsviki/exem.py<br>
&gt; Definition: exem.myfunc(*args, **kwargs)<br>
&gt; Docstring:<br>
&gt;     decorator inner function docstring<br>
&gt;<br>
&gt; and if I try to call ??, it just gives me the decorator inner function.<br>
&gt; Is there a way to overlap this?<br>
&gt; linking the decorator __doc__ to myfunc.__doc__ won&#39;t help in case that I<br>
&gt; have several functions that use the same decorator.<br>
&gt; Any help?<br>
<br>
</div></div>hi,<br>
decorate your decorator :)<br>
<a href="http://pypi.python.org/pypi/decorator" target="_blank">http://pypi.python.org/pypi/decorator</a><br>
<br>
i think something like:<br>
<br>
from decorator import decorator<br>
<br>
@decorator<br>
<div>def deco(f):<br>
    &#39;&#39;&#39;decorator docstring&#39;&#39;&#39;<br>
</div>    @decorator<br>
<div>    def _deco(*args,**kwargs):<br>
        &#39;&#39;&#39;decorator inner function docstring&#39;&#39;&#39;<br>
        print &#39;args=&#39;,args<br>
        return f(*args,**kwargs)<br>
    return _deco<br>
<br>
<br>
<br>
<br>
</div><div>&gt; Thanks a lot<br>
&gt; Tsviki Hirsh<br>
&gt;<br>
</div>&gt; _______________________________________________<br>
&gt; IPython-user mailing list<br>
&gt; <a href="mailto:IPython-user@scipy.org" target="_blank">IPython-user@scipy.org</a><br>
&gt; <a href="http://mail.scipy.org/mailman/listinfo/ipython-user" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-user</a><br>
&gt;<br>
&gt;<br>
_______________________________________________<br>
IPython-user mailing list<br>
<a href="mailto:IPython-user@scipy.org" target="_blank">IPython-user@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-user" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-user</a><br>
</blockquote></div></div></div><br>
</blockquote></div><br></div></div>