[Python-Dev] @deprecated (was: Useful thread project for 2.5?)
Nick Coghlan
ncoghlan at iinet.net.au
Thu Mar 10 12:28:22 CET 2005
Raymond Hettinger wrote:
> Decorators like this should preserve information about the underlying
> function:
>
>
>> def deprecated(func):
>> """This is a decorator which can be used to mark functions
>> as deprecated. It will result in a warning being emmitted
>> when the function is used."""
>> def newFunc(*args, **kwargs):
>> warnings.warn("Call to deprecated function.")
>> return func(*args, **kwargs)
>
> newFunc.__name__ = func.__name__
> newFunc.__doc__ = func.__doc__
> newFunc.__dict__.update(func.__dict__)
>
>> return newFunc
A utility method on function objects could simplify this:
newFunc.update_info(func)
The main benefit I see is that an 'update_info' method is more future-proof. If
some other attributes are added to function objects that should be preserved,
update_info() can be updated in parallel to transfer them, and any code using
the method continues to be correct.
Regards,
Nick.
--
Nick Coghlan | ncoghlan at email.com | Brisbane, Australia
---------------------------------------------------------------
http://boredomandlaziness.skystorm.net
More information about the Python-Dev
mailing list