[ZODB-Dev] ExtensionClass tp_compare fix
Tim Peters
tim at zope.com
Mon Jan 5 13:31:23 EST 2004
[Martin Gfeller, trying Zope 2.7b3 on Windows]
> Thanks, Tim.
>
> Now I'm a bit confused - I thought I had downloaded and installed B3,
> but its Control Panel says it's B2 - although the Python build it
> reports is 2.3.2 (#49, Oct 3 2003, 10:25:57), which is after the
> release date of B2 (I didn't downloade Python separately, and am
> using the binary build).
>
> ExtensionClass.pyd has the date of 03 Oct 2003, 10:21:41.
>
> Could it be that B3 doesn't know how advanced it is :-) ?
> But that would mean that I still have the problem.
Thanks for the followup, Martin. I don't know how the Zope 2.7 beta 3
installer got built for Windows, but I agree it looks goofy in at least the
ways you've reported. I downloaded it just now and installed it:
Zope-2.7.0-b3-win32.exe
Control Panel indeed says
Zope Version (Zope 2.7.0-b2, python 2.3.2, win32)
so maybe the 2.7b3 Windows installer in fact packaged 2.7b2 again (or even
something older than that -- see below).
>From the 2.7B3 *tarball* download, I verified that the fix for
ExtensionClass comparisons that started this is in what Linux people think
of as 2.7b3. But I don't think it's in the ExtenionClass binary installed
by the 2.7b3 Windows installer:
C:\Program Files\Zope-2.7.0-b3>set PYTHONPATH=lib/python
C:\Program Files\Zope-2.7.0-b3>bin\python
Python 2.3.2 (#49, Oct 3 2003, 10:25:57) [MSC v.1200 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import ExtensionClass
>>> print ExtensionClass.__doc__
ExtensionClass - Classes implemented in c
Built-in C classes are like Built-in types except that
they provide some of the behavior of Python classes:
- They provide access to unbound methods,
- They can be called to create instances.
$Id: ExtensionClass.c,v 1.58 2002/11/12 20:04:20 jeremy Exp $
>>>
The last line of text there says the ExtensionClass version actually
installed is CVS revison 1.58, more than a year old. That would explain why
you're seeing problems that were fixed a long time ago (but not *that* long
ago <wink>). Continuing the session above:
>>> class A(ExtensionClass.ExtensionClass):
... def __init__(self):
... pass
...
>>> a = A()
>>> b = A()
>>> cmp(a, b)
__main__:1: RuntimeWarning: tp_compare didn't return -1, 0 or 1
-1
>>>
That's the specific RuntimeWarning you're seeing, right?
I'm copying Brian Lloyd in the hope that he can shed more light on this.
More information about the ZODB-Dev
mailing list