Bug in inspect.py for python 2.3?

Peter Otten __peter__ at web.de
Sat Dec 18 01:15:58 CET 2004


Fernando Perez wrote:

> IPython has suffered quite a few problems with the inspect module in
> python
> 2.3.  For these, unfortunately all I've been able to do is guard with
> overreaching except clauses, as I had not been able to find small,
> reproducible examples to pass on to the devs.  But today I got a crash
> report from a user and I've been able to replicate this crash with a tiny
> script which does not depend on ipython at all.
> 
> I'd like to hear from some of our resident gurus if this is really an
> inspect.py bug before I bother the developers with a formal bug report on
> SF.
> The script below illustrates the problem.  Just run it, and you'll get a
> traceback coming from inside inspect.py itself.  For now, I've added a
> guard in ipython against this failure mode, but it would be nice to fix
> the problem at the source if there really is one.

That is indeed a bug, and it is fixed as of
http://sourceforge.net/tracker/index.php?func=detail&aid=1005466&group_id=5470&atid=305470

Minimal example:

[Python 2.3.3]
>>> def f(a): pass
...
>>> def g((a)): pass
...
>>> inspect.getargs(f.func_code)
(['a'], None, None)
>>> inspect.getargs(g.func_code)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.3/inspect.py", line 624, in getargs
    remain[-1] = remain[-1] - 1
IndexError: list index out of range

[Python 2.4]
>>> import inspect
>>> def g((a)): pass
...
>>> inspect.getargs(g.func_code)
([['a']], None, None)


By the way, I didn't know that sublists of length one are allowed in a
function's parameter list. Certainly they don't make much sense...

Peter





More information about the Python-list mailing list