diff options
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: |