[pypy-commit] pypy py3k: kill the __cmp__ multimethod
antocuni
noreply at buildbot.pypy.org
Wed Feb 29 23:15:03 CET 2012
Author: Antonio Cuni <anto.cuni at gmail.com>
Branch: py3k
Changeset: r53034:49df6ee6912a
Date: 2012-02-29 23:14 +0100
http://bitbucket.org/pypy/pypy/changeset/49df6ee6912a/
Log: kill the __cmp__ multimethod
diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py
--- a/pypy/interpreter/baseobjspace.py
+++ b/pypy/interpreter/baseobjspace.py
@@ -1566,7 +1566,6 @@
('ne', '!=', 2, ['__ne__', '__ne__']),
('gt', '>', 2, ['__gt__', '__lt__']),
('ge', '>=', 2, ['__ge__', '__le__']),
- ('cmp', 'cmp', 2, ['__cmp__']), # rich cmps preferred
('contains', 'contains', 2, ['__contains__']),
('iter', 'iter', 1, ['__iter__']),
('next', 'next', 1, ['__next__']),
diff --git a/pypy/interpreter/nestedscope.py b/pypy/interpreter/nestedscope.py
--- a/pypy/interpreter/nestedscope.py
+++ b/pypy/interpreter/nestedscope.py
@@ -32,6 +32,7 @@
self.w_value = None
def descr__cmp__(self, space, w_other):
+ # XXX fix me, cmp is gone
other = space.interpclass_w(w_other)
if not isinstance(other, Cell):
return space.w_NotImplemented
diff --git a/pypy/interpreter/typedef.py b/pypy/interpreter/typedef.py
--- a/pypy/interpreter/typedef.py
+++ b/pypy/interpreter/typedef.py
@@ -887,7 +887,6 @@
GeneratorIterator.typedef.acceptable_as_base_class = False
Cell.typedef = TypeDef("cell",
- __cmp__ = interp2app(Cell.descr__cmp__),
__hash__ = None,
__reduce__ = interp2app(Cell.descr__reduce__),
__setstate__ = interp2app(Cell.descr__setstate__),
diff --git a/pypy/objspace/descroperation.py b/pypy/objspace/descroperation.py
--- a/pypy/objspace/descroperation.py
+++ b/pypy/objspace/descroperation.py
@@ -440,9 +440,6 @@
if w_del is not None:
space.get_and_call_function(w_del, w_obj)
- def cmp(space, w_v, w_w):
- raise NotImplementedError
-
def issubtype(space, w_sub, w_type):
return space._type_issubtype(w_sub, w_type)
diff --git a/pypy/objspace/flow/operation.py b/pypy/objspace/flow/operation.py
--- a/pypy/objspace/flow/operation.py
+++ b/pypy/objspace/flow/operation.py
@@ -219,7 +219,6 @@
('inplace_and', inplace_and),
('inplace_or', inplace_or),
('inplace_xor', inplace_xor),
- ('cmp', cmp),
('iter', iter),
('next', next),
('get', get),
diff --git a/pypy/objspace/std/builtinshortcut.py b/pypy/objspace/std/builtinshortcut.py
--- a/pypy/objspace/std/builtinshortcut.py
+++ b/pypy/objspace/std/builtinshortcut.py
@@ -36,7 +36,7 @@
'get', 'set', 'delete', # uncommon (except on functions)
'delitem', 'trunc', # rare stuff?
'abs', # rare stuff?
- 'pos', 'divmod', 'cmp', # rare stuff?
+ 'pos', 'divmod', # rare stuff?
'float', 'long', # rare stuff?
'isinstance', 'issubtype',
]
diff --git a/pypy/objspace/std/setobject.py b/pypy/objspace/std/setobject.py
--- a/pypy/objspace/std/setobject.py
+++ b/pypy/objspace/std/setobject.py
@@ -605,15 +605,6 @@
iter__Frozenset = iter__Set
-def cmp__Set_settypedef(space, w_left, w_other):
- # hack hack until we get the expected result
- raise OperationError(space.w_TypeError,
- space.wrap('cannot compare sets using cmp()'))
-
-cmp__Set_frozensettypedef = cmp__Set_settypedef
-cmp__Frozenset_settypedef = cmp__Set_settypedef
-cmp__Frozenset_frozensettypedef = cmp__Set_settypedef
-
init_signature = Signature(['some_iterable'], None, None)
init_defaults = [None]
def init__Set(space, w_set, __args__):
diff --git a/pypy/objspace/std/test/test_identitydict.py b/pypy/objspace/std/test/test_identitydict.py
--- a/pypy/objspace/std/test/test_identitydict.py
+++ b/pypy/objspace/std/test/test_identitydict.py
@@ -24,10 +24,6 @@
def __eq__(self, other):
return True
- class CustomCmp (object):
- def __cmp__(self, other):
- return 0
-
class CustomHash(object):
def __hash__(self):
return 0
@@ -35,17 +31,11 @@
class TypeSubclass(type):
pass
- class TypeSubclassCustomCmp(type):
- def __cmp__(self, other):
- return 0
-
assert self.compares_by_identity(Plain)
assert not self.compares_by_identity(CustomEq)
- assert not self.compares_by_identity(CustomCmp)
assert not self.compares_by_identity(CustomHash)
assert self.compares_by_identity(type)
assert self.compares_by_identity(TypeSubclass)
- assert not self.compares_by_identity(TypeSubclassCustomCmp)
def test_modify_class(self):
class X(object):
diff --git a/pypy/objspace/std/test/test_intobject.py b/pypy/objspace/std/test/test_intobject.py
--- a/pypy/objspace/std/test/test_intobject.py
+++ b/pypy/objspace/std/test/test_intobject.py
@@ -453,14 +453,6 @@
def test_getnewargs(self):
assert 0 .__getnewargs__() == (0,)
-
- def test_cmp(self):
- skip("This is a 'wont fix' case")
- # We don't have __cmp__, we consistently have __eq__ & the others
- # instead. In CPython some types have __cmp__ and some types have
- # __eq__ & the others.
- assert 1 .__cmp__
- assert int .__cmp__
def test_bit_length(self):
for val, bits in [
diff --git a/pypy/objspace/std/test/test_setobject.py b/pypy/objspace/std/test/test_setobject.py
--- a/pypy/objspace/std/test/test_setobject.py
+++ b/pypy/objspace/std/test/test_setobject.py
@@ -97,7 +97,6 @@
assert d == a
def test_compare(self):
- raises(TypeError, cmp, set('abc'), set('abd'))
assert set('abc') != 'abc'
raises(TypeError, "set('abc') < 42")
assert not (set('abc') < set('def'))
diff --git a/pypy/objspace/std/typeobject.py b/pypy/objspace/std/typeobject.py
--- a/pypy/objspace/std/typeobject.py
+++ b/pypy/objspace/std/typeobject.py
@@ -176,8 +176,7 @@
# ^^^ conservative default, fixed during real usage
if space.config.objspace.std.withidentitydict:
- if (key is None or key == '__eq__' or
- key == '__cmp__' or key == '__hash__'):
+ if (key is None or key == '__eq__' or key == '__hash__'):
w_self.compares_by_identity_status = UNKNOWN
if space.config.objspace.std.newshortcut:
@@ -242,7 +241,6 @@
my_eq = w_self.lookup('__eq__')
overrides_eq = (my_eq and my_eq is not type_eq(w_self.space))
overrides_eq_cmp_or_hash = (overrides_eq or
- w_self.lookup('__cmp__') or
w_self.lookup('__hash__') is not default_hash)
if overrides_eq_cmp_or_hash:
w_self.compares_by_identity_status = OVERRIDES_EQ_CMP_OR_HASH
diff --git a/pypy/objspace/test/test_descriptor.py b/pypy/objspace/test/test_descriptor.py
--- a/pypy/objspace/test/test_descriptor.py
+++ b/pypy/objspace/test/test_descriptor.py
@@ -112,11 +112,6 @@
def __eq__(self, other): pass
raises(TypeError, "hash(B())") # because we define __eq__ but not __hash__
- # same as above for __cmp__
- class C(object):
- def __cmp__(self, other): pass
- hash(C())
-
class E(object):
def __hash__(self):
return "something"
More information about the pypy-commit
mailing list