pylint/checkers/classes.py
def _check_first_arg_for_type(self, node, metaclass=0):
        """check the name of first argument, expect:

        * 'self' for a regular method
        * 'cls' for a class method or a metaclass regular method (actually
          valid-classmethod-first-arg value)
        * 'mcs' for a metaclass class method (actually
          valid-metaclass-classmethod-first-arg)
        * not one of the above for a static method
        """
        # don't care about functions with unknown argument (builtins)
        if node.args.args is None:
            return
        first_arg = node.args.args and node.argnames()[0]
        self._first_attrs.append(first_arg)
        first = self._first_attrs[-1]
        # static method
        if node.type == "staticmethod":
            if (
                first_arg == "self"
                or first_arg in self.config.valid_classmethod_first_arg
                or first_arg in self.config.valid_metaclass_classmethod_first_arg
            ):
                self.add_message("bad-staticmethod-argument", args=first, node=node)
                return
            self._first_attrs[-1] = None
        # class / regular method with no args
        elif not node.args.args:
            self.add_message("no-method-argument", node=node)
        # metaclass
        elif metaclass:
            # metaclass __new__ or classmethod
            if node.type == "classmethod":
                self._check_first_arg_config(
                    first,
                    self.config.valid_metaclass_classmethod_first_arg,
                    node,
                    "bad-mcs-classmethod-argument",
                    node.name,
                )
            # metaclass regular method
            else:
                self._check_first_arg_config(
                    first,
                    self.config.valid_classmethod_first_arg,
                    node,
                    "bad-mcs-method-argument",
                    node.name,
                )
        # regular class
        else:
            # class method
            if node.type == "classmethod" or node.name == "__class_getitem__":
                self._check_first_arg_config(
                    first,
                    self.config.valid_classmethod_first_arg,
                    node,
                    "bad-classmethod-argument",
                    node.name,
                )
            # regular method without self as argument
            elif first != "self":
                self.add_message("no-self-argument", node=node)
def _check_first_arg_for_type(self, node, metaclass=0):
        """check the name of first argument, expect:

        * 'self' for a regular method
        * 'cls' for a class method or a metaclass regular method (actually
          valid-classmethod-first-arg value)
        * 'mcs' for a metaclass class method (actually
          valid-metaclass-classmethod-first-arg)
        * not one of the above for a static method
        """
        # don't care about functions with unknown argument (builtins)
        if node.args.args is None:
            return
        first_arg = node.args.args and node.argnames()[0]
        self._first_attrs.append(first_arg)
        first = self._first_attrs[-1]
        # static method
        if node.type == "staticmethod":
            if (
                first_arg == "self"
                or first_arg in self.config.valid_classmethod_first_arg
                or first_arg in self.config.valid_metaclass_classmethod_first_arg
            ):
                self.add_message("bad-staticmethod-argument", args=first, node=node)
                return
            self._first_attrs[-1] = None
        # class / regular method with no args
        elif not node.args.args:
            self.add_message("no-method-argument", node=node)
        # metaclass
        elif metaclass:
            # metaclass __new__ or classmethod
            if node.type == "classmethod":
                self._check_first_arg_config(
                    first,
                    self.config.valid_metaclass_classmethod_first_arg,
                    node,
                    "bad-mcs-classmethod-argument",
                    node.name,
                )
            # metaclass regular method
            else:
                self._check_first_arg_config(
                    first,
                    self.config.valid_classmethod_first_arg,
                    node,
                    "bad-mcs-method-argument",
                    node.name,
                )
        # regular class
        else:
            # class method
            if node.type == "classmethod" or node.name == "__class_getitem__":
                self._check_first_arg_config(
                    first,
                    self.config.valid_classmethod_first_arg,
                    node,
                    "bad-classmethod-argument",
                    node.name,
                )
            # regular method without self as argument
            elif first != "self":
                self.add_message("no-self-argument", node=node)
def _check_first_arg_for_type ( self , node , metaclass = 0 ) : # don't care about functions with unknown argument (builtins) if node . args . args is None : return first_arg = node . args . args and node . argnames ( ) [ 0 ] self . _first_attrs . append ( first_arg ) first = self . _first_attrs [ - 1 ] # static method if node . type == "staticmethod" : if ( first_arg == "self" or first_arg in self . config . valid_classmethod_first_arg or first_arg in self . config . valid_metaclass_classmethod_first_arg ) : self . add_message ( "bad-staticmethod-argument" , args = first , node = node ) return self . _first_attrs [ - 1 ] = None # class / regular method with no args elif not node . args . args : self . add_message ( "no-method-argument" , node = node ) # metaclass elif metaclass : # metaclass __new__ or classmethod if node . type == "classmethod" : self . _check_first_arg_config ( first , self . config . valid_metaclass_classmethod_first_arg , node , "bad-mcs-classmethod-argument" , node . name , ) # metaclass regular method else : self . _check_first_arg_config ( first , self . config . valid_classmethod_first_arg , node , "bad-mcs-method-argument" , node . name , ) # regular class else : # class method if node . type == "classmethod" or node . name == "__class_getitem__" : self . _check_first_arg_config ( first , self . config . valid_classmethod_first_arg , node , "bad-classmethod-argument" , node . name , ) # regular method without self as argument elif first != "self" : self . add_message ( "no-self-argument" , node = node )
check the name of first argument, expect:

        * 'self' for a regular method
        * 'cls' for a class method or a metaclass regular method (actually
          valid-classmethod-first-arg value)
        * 'mcs' for a metaclass class method (actually
          valid-metaclass-classmethod-first-arg)
        * not one of the above for a static method
check the name of first argument expect :