[Checkins] SVN: zc.dict/trunk/src/zc/dict/dict. Bugfix: don't increase length if item already exists.

Albertas Agejevas alga at pov.lt
Wed Jul 4 10:29:41 EDT 2007


Log message for revision 77393:
  Bugfix: don't increase length if item already exists.
  

Changed:
  U   zc.dict/trunk/src/zc/dict/dict.py
  U   zc.dict/trunk/src/zc/dict/dict.txt

-=-
Modified: zc.dict/trunk/src/zc/dict/dict.py
===================================================================
--- zc.dict/trunk/src/zc/dict/dict.py	2007-07-04 09:29:32 UTC (rev 77392)
+++ zc.dict/trunk/src/zc/dict/dict.py	2007-07-04 14:29:40 UTC (rev 77393)
@@ -33,8 +33,12 @@
             self.update(kwargs)
 
     def __setitem__(self, key, value):
-        self.__len += 1
+        delta = 1
+        if key in self._data:
+            delta = 0
         self._data[key] = value
+        if delta:
+            self.__len += delta
 
     def __delitem__(self, key):
         del self._data[key]

Modified: zc.dict/trunk/src/zc/dict/dict.txt
===================================================================
--- zc.dict/trunk/src/zc/dict/dict.txt	2007-07-04 09:29:32 UTC (rev 77392)
+++ zc.dict/trunk/src/zc/dict/dict.txt	2007-07-04 14:29:40 UTC (rev 77393)
@@ -110,3 +110,15 @@
    >>> len(d)
    0
 
+
+Regression tests
+----------------
+
+When setting an item that's already in the dict, the length is not
+increased:
+
+   >>> d.clear()
+   >>> d['foo'] = 'bar'
+   >>> d['foo'] = 'baz'
+   >>> len(d)
+   1



More information about the Checkins mailing list