[Ironpython-users] Differences with pyc-compiled assemblies?

Nicholas Devenish misnomer at gmail.com
Mon Nov 12 11:03:47 CET 2012


Hi Jeff again,

> In inspect.py, just before line 758, it looks at co.co_argcount and
> co.co_varnames and assumes that they are the same length, but my guess
> is that they might not be when compiled with pyc. If you can figure
> out exactly what getargspec is being called on, that might help make a
> simpler reproduction that I can work off of.


I spent some time this morning trying to reduce down to a standalone test case; I've got it down to the following, and don't understand what is going wrong so can't work out what else to remove; sorry about the large chain of functions, but it seems to somehow be involved. I hope it is helpful:

> from functools import update_wrapper
> import inspect
> 
> def decorator(target):
>     def decorate(fn):
>         return inspect.getargspec(fn)
>     return update_wrapper(decorate, target)
> 
> def _decorate_with_warning(func):
>     @decorator
>     def warned(fn):
>       pass
>     warned(func)
> 
> @_decorate_with_warning
> def execute_at(self, event_name, target):
>     def call_event(target, connection):
>         if self._somefun(event_name, target, connection):
>             pass

As before, it runs fine as a standalone script
$ ipy testipy.py

But compiling with:
> pyc /out:TestIPy testily.py
> ipy
>> import clr
>> clr.AddReferenceToFileAndPath("TestIPy.dll")
>> import testipy

Gives the same traceback:
> Traceback (most recent call last):
>   File "runtest.py", line 3, in <module>
>   File "testipy", line 3, in <module>
>   File "testipy", line 14, in _decorate_with_warning
>   File "testipy", line 7, in decorate
>   File "c:\Program Files\IronPython 2.7\Lib\inspect.py", line 820, in getargspec
>   File "c:\Program Files\IronPython 2.7\Lib\inspect.py", line 762, in getargs
> IndexError: index out of range: 2

I hope this is helpful!

Nick


More information about the Ironpython-users mailing list