Function name unchanged in error message

Peter Otten __peter__ at web.de
Sat Jan 30 04:28:19 EST 2010


Gabriel Genellina wrote:

> En Fri, 29 Jan 2010 13:09:40 -0300, Michele Simionato
> <michele.simionato at gmail.com> escribió:
> 
>> On Jan 29, 2:30 pm, andrew cooke <and... at acooke.org> wrote:
>>> Is there any way to change the name of the function in an error
>>> message?  In the example below I'd like the error to refer to bar(),
>>> for example (the motivation is related function decorators - I'd like
>>> the wrapper function to give the same name)
>>
>> Use the decorator module which does the right thing:
>> http://pypi.python.org/pypi/decorator
> 
> The decorator module is a very fine addition to anyone's tool set -- but
> in this case it is enough to use the wraps() function from the functools
> standard module.

I don't know about the decorator module, but functools.wraps() doesn't 
affect the error message:

>>> from functools import wraps
>>> def f(): pass
...
>>> @wraps(f)
... def g(): pass
...
>>> g.__name__
'f'
>>> try: g(42)
... except TypeError as e:
...     print e
...
g() takes no arguments (1 given)

Peter



More information about the Python-list mailing list