[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