def foo(bar): pass # nothing def __call__(foo): pass # nothing, out of class def innocent(f): "innocent deco" return f class Foo(object): def __init__(a, b): pass # rename a def foo(): pass # propose self def loo((l, g), *rest): pass # complain at tuple def zoo(*animals): pass # nothing def __new__(self): pass # propose cls @classmethod def boo(self): pass # propose cls @classmethod @innocent def boo(self): pass # propose cls @innocent @classmethod def boo(self): pass # propose cls @staticmethod def moo(a): pass # nothing @staticmethod def qoo((x, y, z), t): pass # nothing @staticmethod @innocent def qoo((x, y, z), t): pass # nothing @innocent @staticmethod def qoo((x, y, z), t): pass # nothing class Meta(type): def foo(first): # rename to "self" pass def __new__(self, *rest): # rename to "mcs" pass def __call__(self): # rename to "cls" pass def bar(cls): # <- rename to "self" return "foobar" @classmethod def baz(moo): # <- rename to "mcs" return "foobar" @classmethod def cls_is_preferred(cls): pass @classmethod def mcls_is_valid(mcls): pass @classmethod def mcs_is_valid(mcs): pass @classmethod def metacls_is_valid(metacls): pass @staticmethod def bazz(param1): return "foobar"