Benno Rice wrote:
Hi,
I've got a system I'm developing that has a bunch of Python classes that I'm using. One of these classes defines a __cmp__ method, but it doesn't appear to be being called when I test for equality of two objects.
I checked to see whether it was Acquisition that was making it interesting but even when I got the object directly it wasn't calling my __cmp__ method.
Does Zope ignore __cmp__ methods?
Not in general. The short answer is that it is a bug in acquisition. (There's a longer answer having to do with a wrinkle in Python's comparison rules. Two objects are compared by address if they have different types unless the types are numberic types. Acquisition doesn't implement the numeric protocols. With ExtensionClass, every class defined a new type.)
If so, is there any way around it?
A long time ago, Mike Pelletier developed a patch to Acquisition.c that fixes this by implementing enough of the numeric protocol to make this work. I've never gotten around to checking this in. (Bad me.) Mike, do you still have this? Would you mind checking this in? (Now that you work for DC. :) Jim -- Jim Fulton mailto:jim@digicool.com Technical Director (888) 344-4332 Python Powered! Digital Creations http://www.digicool.com http://www.python.org Under US Code Title 47, Sec.227(b)(1)(C), Sec.227(a)(2)(B) This email address may not be added to any commercial mail list with out my permission. Violation of my privacy with advertising or SPAM will result in a suit for a MINIMUM of $500 damages/incident, $1500 for repeats.