]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- The :class:`.IdentityMap` exposed from :class:`.Session.identity`
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 15 Aug 2014 19:13:13 +0000 (15:13 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 15 Aug 2014 19:13:13 +0000 (15:13 -0400)
now returns lists for ``items()`` and ``values()`` in Py3K.
Early porting to Py3K here had these returning iterators, when
they technically should be "iterable views"..for now, lists are OK.

doc/build/changelog/changelog_10.rst
lib/sqlalchemy/orm/identity.py

index 439d02c4799057170da5af1ec44fc5e5bd1225f3..fb639ddf73e13894e799b8d035eeff2389feb228 100644 (file)
 .. changelog::
        :version: 1.0.0
 
+    .. change::
+        :tags: bug, orm, py3k
+
+        The :class:`.IdentityMap` exposed from :class:`.Session.identity`
+        now returns lists for ``items()`` and ``values()`` in Py3K.
+        Early porting to Py3K here had these returning iterators, when
+        they technically should be "iterable views"..for now, lists are OK.
+
     .. change::
         :tags: orm, feature
 
index d9cdd791f1edcd4bd4a058e696c7b8e3cc33c075..4425fc3a6e265019fbcfe218c1ea2228a2f812a9 100644 (file)
@@ -150,7 +150,7 @@ class WeakInstanceDict(IdentityMap):
             return default
         return o
 
-    def _items(self):
+    def items(self):
         values = self.all_states()
         result = []
         for state in values:
@@ -159,7 +159,7 @@ class WeakInstanceDict(IdentityMap):
                 result.append((state.key, value))
         return result
 
-    def _values(self):
+    def values(self):
         values = self.all_states()
         result = []
         for state in values:
@@ -169,9 +169,10 @@ class WeakInstanceDict(IdentityMap):
 
         return result
 
+    def __iter__(self):
+        return iter(self.keys())
+
     if util.py2k:
-        items = _items
-        values = _values
 
         def iteritems(self):
             return iter(self.items())
@@ -179,24 +180,8 @@ class WeakInstanceDict(IdentityMap):
         def itervalues(self):
             return iter(self.values())
 
-        def __iter__(self):
-            return iter(self.keys())
-
-    else:
-        def items(self):
-            return iter(self._items())
-
-        def values(self):
-            return iter(self._values())
-
-        def __iter__(self):
-            return self.keys()
-
     def all_states(self):
-        if util.py2k:
-            return self._dict.values()
-        else:
-            return list(self._dict.values())
+        return self._dict.values()
 
     def discard(self, state):
         if state.key in self._dict:
@@ -217,11 +202,8 @@ class StrongInstanceDict(IdentityMap):
         def iteritems(self):
             return self._dict.iteritems()
 
-        def __iter__(self):
-            return iter(self.keys())
-    else:
-        def __iter__(self):
-            return self.keys()
+    def __iter__(self):
+        return iter(self.dict_)
 
     def __getitem__(self, key):
         return self._dict[key]