]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Restored Python 2.3 compatibility (in IdentitySet)
authorJason Kirtland <jek@discorporate.us>
Wed, 14 Nov 2007 22:46:14 +0000 (22:46 +0000)
committerJason Kirtland <jek@discorporate.us>
Wed, 14 Nov 2007 22:46:14 +0000 (22:46 +0000)
lib/sqlalchemy/util.py

index e8c34b513e8f63c52817c9ff77e218cf35a90505..1fee4cef0a5c101c3045f26daac9cfaf888bf0f2 100644 (file)
@@ -511,7 +511,7 @@ class IdentitySet(object):
     """
 
     def __init__(self, iterable=None):
-        self._members = {}
+        self._members = _IterableUpdatableDict()
         if iterable:
             for o in iterable:
                 self.add(o)
@@ -702,6 +702,19 @@ class IdentitySet(object):
     def __repr__(self):
         return '%s(%r)' % (type(self).__name__, self._members.values())
 
+if sys.version_info >= (2, 4):
+    _IterableUpdatableDict = dict
+else:
+    class _IterableUpdatableDict(dict):
+        """A dict that can update(iterable) like Python 2.4+'s dict."""
+        def update(self, __iterable=None, **kw):
+            if __iterable is not None:
+                if not isinstance(__iterable, dict):
+                    __iterable = dict(__iterable)
+                dict.update(self, __iterable)
+            if kw:
+                dict.update(self, **kw)
+
 def _iter_id(iterable):
     """Generator: ((id(o), o) for o in iterable)."""
     for item in iterable: