summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/util.py
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2007-11-14 22:46:14 +0000
committerJason Kirtland <jek@discorporate.us>2007-11-14 22:46:14 +0000
commitd5da9a56bc0759fd8c6b3ed9732ca6f28f6dcfb4 (patch)
treea48c98b5bddf957e7834782fae8df6b1067dc2d3 /lib/sqlalchemy/util.py
parent64b7a0cd6e06b03fd8186d50dc9b9945d7fb2695 (diff)
downloadsqlalchemy-d5da9a56bc0759fd8c6b3ed9732ca6f28f6dcfb4.tar.gz
Restored Python 2.3 compatibility (in IdentitySet)
Diffstat (limited to 'lib/sqlalchemy/util.py')
-rw-r--r--lib/sqlalchemy/util.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/sqlalchemy/util.py b/lib/sqlalchemy/util.py
index e8c34b513..1fee4cef0 100644
--- a/lib/sqlalchemy/util.py
+++ b/lib/sqlalchemy/util.py
@@ -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: