[Zope-dev] Clarification re: Zope X3.1, 2.8

Jim Fulton jim at zope.com
Thu Mar 31 07:43:26 EST 2005


In this case, the answer is clear to me. :)

We should fix the offending Z3 code to match the interface.

Similarly, we should fix the uses of get_transaction.

Jim

Tim Peters wrote:
> I'm merging ZODB 3.4 into Zope on a branch.  As Tres noted earlier in
> a checkin comment, a test failure results, because at the ZODB sprint
> we fleshed out IDataManager and an older Zope3 class claiming to
> implement IDataManager no longer does.  Since Zope trunk doesn't "own"
> either the IDataManager definition nor the old Zope3 code, it's
> unclear how best to proceed:
> 
> ERROR: testInterface (zope.app.mail.tests.test_delivery.TestMailDataManager)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File "C:\Code\Zope\lib\python\zope\app\mail\tests\test_delivery.py",
> line 46, in testInterface
>     verifyObject(IDataManager, manager)
>   File "C:\Code\Zope\lib\python\zope\interface\verify.py", line 93, in
> verifyObject
>     return _verify(iface, candidate, tentative, vtype='o')
>   File "C:\Code\Zope\lib\python\zope\interface\verify.py", line 60, in _verify
>     raise BrokenImplementation(iface, n)
> BrokenImplementation: An object has failed to implement interface
> <InterfaceClass transaction.interfaces.IDataManager>
> 
>         The abort_sub attribute was not provided.
> 
> An expedient hack would be to castrate ZODB 3.4's IDataManager
> definition, back to what it was before the ZODB sprint.  That's
> unattractive for obvious reasons (like, e.g., that the old definition
> lied about what the interface actually is).
> 
> Current Zope3 trunk will have the same problem with ZODB 3.4 in its
> MailDataManager class, so that's "the right place" to fix it.  But
> then the repaired version also needs to be merged into the "old" Zope3
> code Zope trunk is trying to use.  "The old" zope/app/mail/delivery.py
> also uses the deprecated get_transaction().  Perhaps current Zope3
> trunk's delivery.py could just be slammed into the tag used by (or a
> new tag created for) Zope trunk?
> 
> get_transaction() is more troublesome than _just_ that, alas:  there
> are about 160 instances of it across the stitched-in lib/python/zope,
> and Products/Five, code.  This causes lots of new deprecation warnings
> when running the tests.  These are easy to repair with 1-2 hours easy
> editing work, but again Zope trunk doesn't own the lib/python/zope
> code (where almost all of these appear).


-- 
Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org


More information about the Zope-Dev mailing list