Tres Seaver wrote:
Nikhil N wrote:
Hmm, very strange.  I just did:

I used:

$ workingenv aq
$ source aq/bin/activate
$ easy_install Acquisition
$ python

For both Python 2.4 and 2.5 and can reproduce the problem.

 >>> from ExtensionClass import Base
 >>> from Acquisition import Implicit
 >>> class B(Base):
 ...     color = 'red'
 ...
 >>> class A(Implicit):
 ...     pass
 ...
 >>> b = B()
 >>> c = A()
 >>> c.color
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 AttributeError: color
 >>> b.c = c
 >>> b.c.color
 'red'
 >>> b.c == c
 False

When I do:

>>> b.c.aq_base == c
True

So the AQ-wrapper doesn't compare equal to the outermost part of the AQ chain anymore.

which is what you reported.  However, two wrappers constructed
separately do compare equal:

 >>> a = A().__of__(b)
 >>> a.color
 'red'
 >>> b.a = a
 >>> b.a == a
 True

Two wrappers compare equal, so the code comparing an AQ wrapper with something different should be the one with the problem. I'd look into Wrapper_compare in _Acquisition.c.

The Python 2.5 release notes don't talk about any changes to comparison
slots for C extensions: I'm not sure what could have changed.

No idea either :(

Hanno

_______________________________________________
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope )

Reply via email to