I think I found a bug in Python 2.6.4 (in the inspect module)

Daniel Fetchinson fetchinson at googlemail.com
Tue Dec 29 18:34:54 EST 2009


On 12/29/09, inhahe <inhahe at gmail.com> wrote:
> Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)]
> on
> win32
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import inspect
>>>> def a(b=1): pass
> ...
>>>> inspect.getargvalues(a)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "C:\Python26\lib\inspect.py", line 816, in getargvalues
>     args, varargs, varkw = getargs(frame.f_code)
> AttributeError: 'function' object has no attribute 'f_code'
>>>> dir(a)
> ['__call__', '__class__', '__closure__', '__code__', '__defaults__',
> '__delattr_
> _', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__',
> '__globa
> ls__', '__hash__', '__init__', '__module__', '__name__', '__new__',
> '__reduce__'
> , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',
> '__subcla
> sshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict',
> 'func_doc'
> , 'func_globals', 'func_name']
>>>>
>
> So i'm guessing that the attribute has been changed from func_code to
> f_code but the inspect module wasn't updated to reflect that.



Please read the documentation for inspect.getargvalues:

"""
inspect.getargvalues(frame)

    Get information about arguments passed into a particular frame. A
tuple of four things is returned: (args, varargs, varkw, locals). args
is a list of the argument names (it may contain nested lists). varargs
and varkw are the names of the * and ** arguments or None. locals is
the locals dictionary of the given frame.

    Changed in version 2.6: Returns a named tuple ArgInfo(args,
varargs, keywords, locals).
"""

HTH,
Daniel


-- 
Psss, psss, put it down! - http://www.cafepress.com/putitdown



More information about the Python-list mailing list