summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/ext/sqlsoup.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-02-20 21:44:48 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2010-02-20 21:44:48 +0000
commita19cdd1868e36643ae103816f44c21989462cf95 (patch)
treee10618e1b768e51ba347bee440fff46e0ab150b0 /lib/sqlalchemy/ext/sqlsoup.py
parent0ee04dfcb07b8ba1deaa0db51740bea31f10f54f (diff)
downloadsqlalchemy-a19cdd1868e36643ae103816f44c21989462cf95.tar.gz
remove __cmp__, move to __lt__ , __eq__ per http://docs.python.org/dev/3.0/whatsnew/3.0.html#ordering-comparisons
Diffstat (limited to 'lib/sqlalchemy/ext/sqlsoup.py')
-rw-r--r--lib/sqlalchemy/ext/sqlsoup.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/lib/sqlalchemy/ext/sqlsoup.py b/lib/sqlalchemy/ext/sqlsoup.py
index 5377fee35..8b5d6bbc3 100644
--- a/lib/sqlalchemy/ext/sqlsoup.py
+++ b/lib/sqlalchemy/ext/sqlsoup.py
@@ -408,23 +408,34 @@ def _class_for_table(session, engine, selectable, **mapper_kwargs):
klass = TableClassType(mapname, (object,), {})
else:
klass = SelectableClassType(mapname, (object,), {})
-
- def __cmp__(self, o):
- L = self.__class__.c.keys()
+
+ def _compare(self, o):
+ L = list(self.__class__.c.keys())
L.sort()
t1 = [getattr(self, k) for k in L]
try:
t2 = [getattr(o, k) for k in L]
except AttributeError:
raise TypeError('unable to compare with %s' % o.__class__)
- return cmp(t1, t2)
+ return t1, t2
+
+ # python2/python3 compatible system of
+ # __cmp__ - __lt__ + __eq__
+
+ def __lt__(self, o):
+ t1, t2 = _compare(self, o)
+ return t1 < t2
+ def __eq__(self, o):
+ t1, t2 = _compare(self, o)
+ return t1 == t2
+
def __repr__(self):
L = ["%s=%r" % (key, getattr(self, key, ''))
for key in self.__class__.c.keys()]
return '%s(%s)' % (self.__class__.__name__, ','.join(L))
- for m in ['__cmp__', '__repr__']:
+ for m in ['__eq__', '__repr__', '__lt__']:
setattr(klass, m, eval(m))
klass._table = selectable
klass.c = expression.ColumnCollection()