Something has changed in the way Zope 2.3 handles the __getitem__ protocol.

This breaks SkinScript's use of OLD.

The fix is to patch Agents.py so that the class _memento explicitly 
provides a __getitem__ method.

ZPatterns may need similar fixes elsewhere. See my message to zope-dev 
earlier this week about the difference in using __getitem__ on Dataskins 
from a Specialist and in the ZODB.

--
Steve Alexander
Software Engineer
Cat-Box limited
http://www.cat-box.net
*** Agents.py.original
--- Agents.py
***************
*** 326,332 ****
          'memento_exprs': 'Keeping:', 'handle_set_for':'Set Attrs:'
      }
      
! class _memento: pass
  _emptyMemento=_memento()
  
  
--- 326,336 ----
          'memento_exprs': 'Keeping:', 'handle_set_for':'Set Attrs:'
      }
      
! class _memento: 
!   __allow_access_to_unprotected_subobjects__=1
!   def __getitem__(self, name):
!     return self.__dict__[name]
! 
  _emptyMemento=_memento()
  
  

Reply via email to