From: Jason Kirtland Date: Wed, 14 Nov 2007 22:46:14 +0000 (+0000) Subject: Restored Python 2.3 compatibility (in IdentitySet) X-Git-Tag: rel_0_4_1~22 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=d5da9a56bc0759fd8c6b3ed9732ca6f28f6dcfb4;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Restored Python 2.3 compatibility (in IdentitySet) --- diff --git a/lib/sqlalchemy/util.py b/lib/sqlalchemy/util.py index e8c34b513e..1fee4cef0a 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: