[ZODB-Dev] ExtensionClass tp_compare fix

Gfeller Martin Martin.Gfeller at comit.ch
Mon Jan 5 13:37:27 EST 2004


Thanks, Tim - good to know that I haven't lost my senses completely over
the year end -:)...

Yes, that's the warning I'm seeing, and '$Id: ExtensionClass.c,v 1.58
2002/11/12 20:04:20 jeremy Exp $'
is the version I got as well.

Hope Brian can check on the installer, as I'm not experienced in
building from sources.

Cheers, Martin

-----Original Message-----
From: Tim Peters [mailto:tim at zope.com] 
Sent: Monday, 05 Jan 2004 19:31
To: Gfeller Martin; Brian Lloyd
Cc: zodb-dev at zope.org
Subject: RE: [ZODB-Dev] ExtensionClass tp_compare fix


[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