]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
remove __cmp__, move to __lt__ , __eq__ per http://docs.python.org/dev/3.0/whatsnew...
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 20 Feb 2010 21:44:48 +0000 (21:44 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 20 Feb 2010 21:44:48 +0000 (21:44 +0000)
lib/sqlalchemy/ext/sqlsoup.py

index 5377fee35f181ece6d64f094c5d390a95a23f8e5..8b5d6bbc383f18c7ac72e81fd38a93ee726559c5 100644 (file)
@@ -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()