From be5d3263436b81fb179c8189f1064d477d5fb3e6 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 18 Dec 2008 17:57:15 +0000 Subject: merged -r5299:5438 of py3k warnings branch. this fixes some sqlite py2.6 testing issues, and also addresses a significant chunk of py3k deprecations. It's mainly expicit __hash__ methods. Additionally, most usage of sets/dicts to store columns uses util-based placeholder names. --- lib/sqlalchemy/engine/base.py | 20 +++++++++++++------- lib/sqlalchemy/engine/url.py | 3 +++ 2 files changed, 16 insertions(+), 7 deletions(-) (limited to 'lib/sqlalchemy/engine') diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index c7101d10e..dbcd5b76b 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -1267,7 +1267,6 @@ class Engine(Connectable): return self.pool.unique_connection() - def _proxy_connection_cls(cls, proxy): class ProxyConnection(cls): def execute(self, object, *multiparams, **params): @@ -1319,6 +1318,8 @@ class RowProxy(object): for i in xrange(len(self.__row)): yield self.__parent._get_col(self.__row, i) + __hash__ = None + def __eq__(self, other): return ((other is self) or (other == tuple(self.__parent._get_col(self.__row, key) @@ -1347,18 +1348,23 @@ class RowProxy(object): def items(self): """Return a list of tuples, each tuple containing a key/value pair.""" - return [(key, getattr(self, key)) for key in self.keys()] + return [(key, getattr(self, key)) for key in self.iterkeys()] def keys(self): """Return the list of keys as strings represented by this RowProxy.""" return self.__parent.keys - + + def iterkeys(self): + return iter(self.__parent.keys) + def values(self): """Return the values represented by this RowProxy as a list.""" return list(self) - + + def itervalues(self): + return iter(self) class BufferedColumnRow(RowProxy): def __init__(self, parent, row): @@ -1425,7 +1431,7 @@ class ResultProxy(object): return self._rowcount = None - self._props = util.PopulateDict(None) + self._props = util.populate_column_dict(None) self._props.creator = self.__key_fallback() self.keys = [] @@ -1848,7 +1854,7 @@ class DefaultRunner(schema.SchemaVisitor): def visit_column_onupdate(self, onupdate): if isinstance(onupdate.arg, expression.ClauseElement): return self.exec_default_sql(onupdate) - elif callable(onupdate.arg): + elif util.callable(onupdate.arg): return onupdate.arg(self.context) else: return onupdate.arg @@ -1856,7 +1862,7 @@ class DefaultRunner(schema.SchemaVisitor): def visit_column_default(self, default): if isinstance(default.arg, expression.ClauseElement): return self.exec_default_sql(default) - elif callable(default.arg): + elif util.callable(default.arg): return default.arg(self.context) else: return default.arg diff --git a/lib/sqlalchemy/engine/url.py b/lib/sqlalchemy/engine/url.py index 044d701ac..5c8e68ce4 100644 --- a/lib/sqlalchemy/engine/url.py +++ b/lib/sqlalchemy/engine/url.py @@ -71,6 +71,9 @@ class URL(object): s += '?' + "&".join("%s=%s" % (k, self.query[k]) for k in keys) return s + def __hash__(self): + return hash(str(self)) + def __eq__(self, other): return \ isinstance(other, URL) and \ -- cgit v1.2.1