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 -- http://mail.python.org/mailman/listinfo/python-list