diff options
author | Jason Kirtland <jek@discorporate.us> | 2007-11-14 22:46:14 +0000 |
---|---|---|
committer | Jason Kirtland <jek@discorporate.us> | 2007-11-14 22:46:14 +0000 |
commit | d5da9a56bc0759fd8c6b3ed9732ca6f28f6dcfb4 (patch) | |
tree | a48c98b5bddf957e7834782fae8df6b1067dc2d3 /lib/sqlalchemy/util.py | |
parent | 64b7a0cd6e06b03fd8186d50dc9b9945d7fb2695 (diff) | |
download | sqlalchemy-d5da9a56bc0759fd8c6b3ed9732ca6f28f6dcfb4.tar.gz |
Restored Python 2.3 compatibility (in IdentitySet)
Diffstat (limited to 'lib/sqlalchemy/util.py')
-rw-r--r-- | lib/sqlalchemy/util.py | 15 |
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: |