def register_type(type_): from pypy.objspace.std.stdtypedef import multimethods_defined_on for mm, is_local in multimethods_defined_on(type_.original): if not mm.name.startswith('__'): install_mm_trampoline(type_, mm, is_local) if is_special_doublearg(mm, type_): install_mm_special(type_, mm, is_local)
def test_multimethods_defined_on(self): from pypy.objspace.std.stdtypedef import multimethods_defined_on from pypy.objspace.std.listobject import W_ListObject res = multimethods_defined_on(W_ListObject) res = [(m.name, local) for (m, local) in res] assert ('add', False) in res assert ('lt', False) in res assert ('setitem', False) in res assert ('mod', False) not in res assert ('pop', True) in res assert ('reverse', True) in res assert ('popitem', True) not in res
def test_multimethods_defined_on(self): from pypy.objspace.std.stdtypedef import multimethods_defined_on from pypy.objspace.std.listobject import W_ListObject res = multimethods_defined_on(W_ListObject) res = [(m.name, local) for (m, local) in res] assert ("add", False) in res assert ("lt", False) in res assert ("setitem", False) in res assert ("mod", False) not in res assert ("pop", True) in res assert ("reverse", True) in res assert ("popitem", True) not in res