Dino Viehland wrote:
Thanks for the report.  I've opened CodePlex bug #19350 to track this 
(http://www.codeplex.com/IronPython/WorkItem/View.aspx?WorkItemId=19350).

I believe the fix is actually pretty simple and we'll discuss whether we'll 
take it for 2.0 final at our Friday team meeting.  If you want to try out the 
fix either to unblock yourself or just see if there's other issues lurking 
behind it you can do this change:

Thanks Dino - that fix certainly fixes the specific issue and means I have less failing tests in my Worksheet test (and no new ones as far as I can tell).

Although Resolver One now runs on IronPython 2 I'm still in a position where there are a stack of failing tests (we have 6000 tests in total and I'm gradually moving through them working out whether failures are because we are testing against the old API, failures that indicate bugs in IronPython, failures due to moving to Python 2.5, or anything else...)

Although aspects of Resolver One on IronPython 2 are just as fast as they are on IronPython 1 there are still some specific performance issues. We anticipate that the hardest part of the port will be identifying and fixing those issues (thankfully we have a bunch of performance tests to help us). If we find anything specific we will report it back of course.

We would appreciate this fix being in 2.0 final as it is our goal to do a new Resolver One release based on it as soon as humanly possible, and we would prefer not to have to rely on a patched version.

Anyway - thanks for identifying a fix so quickly.

All the best,

Michael

                          return new MetaObject[] {
                        arguments[0],
                        new MetaObject(
                            Ast.Call(
                                typeof(PythonOps).GetMethod("MakeTuple"),
                                Ast.NewArrayInit(typeof(object), tupleArgs)
                            ),
-                           Restrictions.Empty
+                           Restrictions.Combine(arguments)
                        ),
                        arguments[arguments.Length-1]
                    };

If you just search for "return new MetaObject[]" in PythonProtocol.Operations.cs 
you'll get to the right spot.  There's a 2nd spot about 20 lines later for the getter case 
which has the same issue & fix.

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Michael Foord
Sent: Wednesday, November 05, 2008 8:03 AM
To: Discussion of IronPython
Subject: [IronPython] IronPython 2: Bug in Indexing (Blocker)

Hello Guys,

Discovered a bug in indexing Python objects in IronPython 2.

The following code:

class X(object):
    def __setitem__(self, key, value):
        print repr(key)

def f(a, b):
    X()[a, b] = object()

f(1, 2)
f('one', 'two')

Produces the following exception:

Traceback (most recent call last):
  File "bugtest.py", line 9, in bugtest.py
  File "bugtest.py", line 6, in f
TypeError: Specified cast is not valid.

It looks like IronPython has a call site that is now expecting integers
the second time round.

Switching to using explicit tuples for indexing works around the problem:

    X()[(a, b)] = object()

However this kind of indexing is an *extremely* common way to use our
spreadsheet API from user code, so we couldn't release with this bug in
place.

(Doing the indexing outside of the function also avoids the problem
interestingly enough.)

All the best,

Michael Foord

--

Michael Foord
Senior Software Engineer, Resolver Systems Ltd.
[EMAIL PROTECTED]
+44 (0) 20 7253 6372

Try out Resolver One! <http://www.resolversystems.com/get-it/>

17a Clerkenwell Road, London EC1M 5RD, UK
VAT No.: GB 893 5643 79 Registered in England and Wales as company number 
5467329.
Registered address: 843 Finchley Road, London NW11 8NA, UK

_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


--
http://www.ironpythoninaction.com/

_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to