Decorators, with optional arguments

Stephen Hansen me+list/python at ixokai.io
Sat Jul 3 01:31:36 EDT 2010


On 7/2/10 11:55 AM, Thomas Jollans wrote:
> Looks good! You may still want to use functools.update_wrapper or
> functools.wraps on "wrap".

Are you sure? I've been doing a little bit of experimentation and I only
did the 'wraps' on that inner function, because it seemed that it was
all that was needed to get the propagation of function data I expected.

I've since changed it to:

        def wrapper(fn, *args, **kwargs):
            print "Calling."
            result = fn(*args, **kwargs)
            print "Called."
            return result

        return decorator.decorator(wrapper, fn)

Because the decorator library includes argspec propagation which was
important for other parts of this code which does introspection. (This
toy project is, I fully admit, going into very dark and evil places that
I have at length advised people against, 'You don't want to do that!').

> PS: if you weren't stuck on 2.5, but were using 3.x, there's all kinds
> of fun stuff you could do with function annotations ;-)

Oh, believe me, I desperately wish I could go to 3.x. Between function
annotations and the new metaclass power (Hi, __prepare__, I love you,
please wait for me and I'll marry you when I migrate).

I just can't yet.

I can't quite figure out why people are all, '3.x brings you nothing'.
Yes, the majority of the focus was cleaning, removing edges, but *lord*
there's a LOT I am VERY looking forward to using.

-- 

   Stephen Hansen
   ... Also: Ixokai
   ... Mail: me+list/python (AT) ixokai (DOT) io
   ... Blog: http://meh.ixokai.io/

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 487 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/python-list/attachments/20100702/cc46f4af/attachment-0001.sig>


More information about the Python-list mailing list