]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- run the whole test suite with the "debugging" ordered dict on,
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 27 May 2013 21:15:30 +0000 (17:15 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 27 May 2013 21:15:30 +0000 (17:15 -0400)
find some more failures

lib/sqlalchemy/util/_collections.py

index 5991fc8a446ddd37edae41a73fef2dee6db47288..689a6756b292fe1cd00833591e46bf1caed00ccc 100644 (file)
@@ -143,7 +143,7 @@ class Properties(object):
         return len(self._data)
 
     def __iter__(self):
-        return iter(self._data.values())
+        return iter(list(self._data.values()))
 
     def __add__(self, other):
         return list(self) + list(other)
@@ -262,13 +262,6 @@ class OrderedDict(dict):
         return iter(self._list)
 
 
-    #def __iter__(self):
-    #    len_ = len(self._list)
-    #    for item in self._list:
-    #        yield item
-    #        assert len_ == len(self._list), \
-    #           "Dictionary changed size during iteration"
-
     if py2k:
         def values(self):
             return [self[key] for key in self._list]
@@ -300,6 +293,24 @@ class OrderedDict(dict):
             #return ((key, self[key]) for key in self)
             return ((key, self[key]) for key in self._list)
 
+    _debug_iter = False
+    if _debug_iter:
+        # normally disabled to reduce function call
+        # overhead
+        def __iter__(self):
+            len_ = len(self._list)
+            for item in self._list:
+                yield item
+                assert len_ == len(self._list), \
+                   "Dictionary changed size during iteration"
+        def values(self):
+            return (self[key] for key in self)
+        def keys(self):
+            return iter(self)
+        def items(self):
+            return ((key, self[key]) for key in self)
+
+
     def __setitem__(self, key, object):
         if key not in self:
             try: