I'm actually not sure why it would happen.  The only thought I have is if you're
only doing one comparison, and comparing the same instance, there's an object
identity test which would prevent the __cmp__ call from happening.  But I'm 
guessing
that's not what's happening...

Can you put a breakpoint in PythonProtocol.Operations.cs in 
MakeSortComparisonRule
and see what's returned from the call to bodybuilder.GetMetaObject?  That'll 
give you
the full expression tree of the rule for doing the comparison.  There's 
supposed to be
some calls to __cmp__ in there - if they're not there maybe what is will 
provide some
enlightenment.

> -----Original Message-----
> From: ironpython-users-bounces+dinov=microsoft....@python.org
> [mailto:ironpython-users-bounces+dinov=microsoft....@python.org] On
> Behalf Of Slide
> Sent: Thursday, March 29, 2012 8:49 PM
> To: ironpython-users@python.org
> Subject: Re: [Ironpython-users] Why does this happen?
> 
> Is Dino on vacation? He usually has good answers for these sorts of things 
> :-) I
> still can't get the callsite to end up calling __cmp__ like List.sort does. 
> I'm not
> sure why that is the case. It looks like even the Python version of bisect 
> has a
> similar issue though (it never calls __cmp__ either), so I think there is a 
> bug
> somewhere.
> 
> On Sat, Mar 24, 2012 at 8:51 PM, Slide <slide.o....@gmail.com> wrote:
> >
> > I am implementing a module in C#. This module does some comparison
> operations. One of the tests for this module has something like the following:
> >
> > class CmpErr:
> >     def __cmp__(self, other):
> >         raise ZeroDivisionError
> >
> > x = [CmpErr(), CmpErr(), CmpErr()]
> > cSharpMethod(x)
> >
> > Inside cSharpMethod is when I do the comparison. The way I am doing
> > the comparison is taken from how its done in List.cs
> >
> > IComparer comparer =
> > PythonContext.GetContext(context).GetComparer(null,
> > GetComparisonType(context, list));
> >
> > Then I call comparer.Compare on the two items. In List.sort, this eventually
> calls the __cmp__ method if I try adding a call to x.sort() instead of
> cSharpMethod, but from inside cSharpMethod, __cmp__ is never called and I
> can't figure out why.
> >
> > Any ideas on why this might be occuring?
> >
> > Thanks,
> >
> > slide
> >
> > --
> > Website: http://earl-of-code.com
> 
> 
> 
> 
> --
> Website: http://earl-of-code.com
> _______________________________________________
> Ironpython-users mailing list
> Ironpython-users@python.org
> http://mail.python.org/mailman/listinfo/ironpython-users


_______________________________________________
Ironpython-users mailing list
Ironpython-users@python.org
http://mail.python.org/mailman/listinfo/ironpython-users

Reply via email to