From: Mike Bayer Date: Sat, 24 May 2014 21:02:47 +0000 (-0400) Subject: - fix some identity map accessors X-Git-Tag: rel_1_0_0b1~424 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f9adac0a34e49bacfc02cb18a899b4ae757754dd;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - fix some identity map accessors - fix a bad comparison in MySQL w/ limit/offset thing --- diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index e8a15fdbca..40715cc317 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -1570,7 +1570,7 @@ class MySQLCompiler(compiler.SQLCompiler): limit_clause, offset_clause = select._limit_clause, select._offset_clause - if (limit_clause, offset_clause) == (None, None): + if limit_clause is None and offset_clause is None: return '' elif offset_clause is not None: # As suggested by the MySQL docs, need to apply an diff --git a/lib/sqlalchemy/orm/identity.py b/lib/sqlalchemy/orm/identity.py index f75aeba55c..fa3a31d9c3 100644 --- a/lib/sqlalchemy/orm/identity.py +++ b/lib/sqlalchemy/orm/identity.py @@ -14,6 +14,9 @@ class IdentityMap(object): self._modified = set() self._wr = weakref.ref(self) + def keys(self): + return self._dict.keys() + def replace(self, state): raise NotImplementedError() @@ -173,6 +176,10 @@ class WeakInstanceDict(IdentityMap): def itervalues(self): return iter(self.values()) + + def __iter__(self): + return iter(self.keys()) + else: def items(self): return iter(self._items()) @@ -180,6 +187,9 @@ class WeakInstanceDict(IdentityMap): def values(self): return iter(self._values()) + def __iter__(self): + return self.keys() + def all_states(self): if util.py2k: return self._dict.values() @@ -198,6 +208,35 @@ class WeakInstanceDict(IdentityMap): class StrongInstanceDict(IdentityMap): + if util.py2k: + def itervalues(self): + return self._dict.itervalues() + + def iteritems(self): + return self._dict.iteritems() + + def __iter__(self): + return iter(self.keys()) + else: + def __iter__(self): + return self.keys() + + def __getitem__(self, key): + return self._dict[key] + + def __contains__(self, key): + return key in self._dict + + def get(self, key, default=None): + return self._dict.get(key, default) + + def values(self): + return self._dict.values() + + def items(self): + return self._dict.items() + + def all_states(self): return [attributes.instance_state(o) for o in self.values()]