[Zope-Checkins] SVN: Zope/trunk/ empty object managers were evaluating to boolean false since Hanno fully implemented IContainer, because boolean checks fall through to __len__ if __nonzero__ is not implemented. always evaluating to true is the backwards-compatible approach

David Glick davidglick at onenw.org
Thu Mar 5 02:52:06 EST 2009


Log message for revision 97521:
  empty object managers were evaluating to boolean false since Hanno fully implemented IContainer, because boolean checks fall through to __len__ if __nonzero__ is not implemented.  always evaluating to true is the backwards-compatible approach

Changed:
  U   Zope/trunk/doc/CHANGES.rst
  U   Zope/trunk/src/OFS/ObjectManager.py
  U   Zope/trunk/src/OFS/tests/testObjectManager.py

-=-
Modified: Zope/trunk/doc/CHANGES.rst
===================================================================
--- Zope/trunk/doc/CHANGES.rst	2009-03-05 07:49:18 UTC (rev 97520)
+++ Zope/trunk/doc/CHANGES.rst	2009-03-05 07:52:06 UTC (rev 97521)
@@ -32,7 +32,11 @@
   newer versions of the dependencies. This kind of KGS information needs
   to be expressed in a different way.
 
+Bugs Fixed
+++++++++++
 
+- Object managers should evaluate to True in a boolean test.
+
 2.12.0a1 (2009-02-26)
 ---------------------
 

Modified: Zope/trunk/src/OFS/ObjectManager.py
===================================================================
--- Zope/trunk/src/OFS/ObjectManager.py	2009-03-05 07:49:18 UTC (rev 97520)
+++ Zope/trunk/src/OFS/ObjectManager.py	2009-03-05 07:52:06 UTC (rev 97521)
@@ -789,6 +789,9 @@
     def __len__(self):
         return len(self.objectIds())
 
+    def __nonzero__(self):
+        return True
+
     security.declareProtected(access_contents_information, 'get')
     def get(self, key, default=None):
         return self._getOb(key, default)

Modified: Zope/trunk/src/OFS/tests/testObjectManager.py
===================================================================
--- Zope/trunk/src/OFS/tests/testObjectManager.py	2009-03-05 07:49:18 UTC (rev 97520)
+++ Zope/trunk/src/OFS/tests/testObjectManager.py	2009-03-05 07:52:06 UTC (rev 97521)
@@ -379,6 +379,10 @@
         om['2'] = si2
         self.failUnless(len(om) == 2)
 
+    def test_nonzero(self):
+        om = self._makeOne()
+        self.failUnless(om)
+
     def test_get(self):
         om = self._makeOne()
         si1 = SimpleItem('1')



More information about the Zope-Checkins mailing list