]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
clean up some of this collection stuff
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 27 May 2013 00:17:22 +0000 (20:17 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 27 May 2013 00:17:22 +0000 (20:17 -0400)
lib/sqlalchemy/ext/associationproxy.py
lib/sqlalchemy/orm/identity.py
lib/sqlalchemy/util/_collections.py

index 08875c3a0dbcbaf2adabf824243fb37b056c4d5b..0482a9205ba102f58ecc4ac0ebd994163094cabf 100644 (file)
@@ -758,24 +758,15 @@ class _AssociationDict(_AssociationCollection):
     def keys(self):
         return self.col.keys()
 
-    def _iteritems(self):
-        for key in self.col:
-            yield (key, self._get(self.col[key]))
-        raise StopIteration
-
-    def _itervalues(self):
-        for key in self.col:
-            yield self._get(self.col[key])
-        raise StopIteration
+    if util.py2k:
+        def iteritems(self):
+            return ((key, self._get(self.col[key])) for key in self.col)
 
-    def _iterkeys(self):
-        return self.col.iterkeys()
+        def itervalues(self):
+            return (self._get(self.col[key]) for key in self.col)
 
-
-    if util.py2k:
-        iterkeys = _iterkeys
-        itervalues = _itervalues
-        iteritems = _iteritems
+        def iterkeys(self):
+            return self.col.iterkeys()
 
         def values(self):
             return [self._get(member) for member in self.col.values()]
@@ -783,8 +774,11 @@ class _AssociationDict(_AssociationCollection):
         def items(self):
             return [(k, self._get(self.col[k])) for k in self]
     else:
-        values = _itervalues
-        items = _iteritems
+        def items(self):
+            return ((key, self._get(self.col[key])) for key in self.col)
+
+        def values(self):
+            return (self._get(self.col[key]) for key in self.col)
 
     def pop(self, key, default=_NotProvided):
         if default is _NotProvided:
index 55a78066a92c7a935da14f8ac8298d414f246797..d0234a1d382417ca730ebbddc2b91e738796ad9e 100644 (file)
@@ -154,12 +154,11 @@ class WeakInstanceDict(IdentityMap):
 
     if util.py2k:
         items = _items
+        values = _values
 
         def iteritems(self):
             return iter(self.items())
 
-        values = _values
-
         def itervalues(self):
             return iter(self.values())
     else:
index c10d19ea121d198b9954816b4588b22002abf9d7..ed9ecfedc1002735a33d979918246b226786ca0d 100644 (file)
@@ -10,6 +10,7 @@ import itertools
 import weakref
 import operator
 from .compat import threading, itertools_filterfalse
+from . import py2k
 
 EMPTY_SET = frozenset()
 
@@ -55,7 +56,7 @@ class KeyedTuple(tuple):
         t = tuple.__new__(cls, vals)
         t._labels = []
         if labels:
-            t.__dict__.update(list(zip(labels, vals)))
+            t.__dict__.update(zip(labels, vals))
             t._labels = labels
         return t
 
@@ -189,13 +190,13 @@ class Properties(object):
             return default
 
     def keys(self):
-        return list(self._data.keys())
+        return self._data.keys()
 
     def values(self):
-        return list(self._data.values())
+        return self._data.values()
 
     def items(self):
-        return list(self._data.items())
+        return self._data.items()
 
     def has_key(self, key):
         return key in self._data
@@ -260,23 +261,33 @@ class OrderedDict(dict):
     def __iter__(self):
         return iter(self._list)
 
-    def values(self):
-        return [self[key] for key in self._list]
+    if py2k:
+        def values(self):
+            return [self[key] for key in self._list]
 
-    def itervalues(self):
-        return iter([self[key] for key in self._list])
+        def keys(self):
+            return self._list
 
-    def keys(self):
-        return list(self._list)
+        def itervalues(self):
+            return iter([self[key] for key in self._list])
 
-    def iterkeys(self):
-        return iter(list(self.keys()))
+        def iterkeys(self):
+            return iter(self)
 
-    def items(self):
-        return [(key, self[key]) for key in self.keys()]
+        def iteritems(self):
+            return iter(self.items())
+
+        def items(self):
+            return [(key, self[key]) for key in self._list]
+    else:
+        def values(self):
+            return (self[key] for key in self._list)
+
+        def keys(self):
+            return iter(self._list)
 
-    def iteritems(self):
-        return iter(list(self.items()))
+        def items(self):
+            return ((key, self[key]) for key in self._list)
 
     def __setitem__(self, key, object):
         if key not in self: