def drop_keys(self, keys, candidate_classes=None):
<EOL>keys = keys if isinstance(keys, (list, tuple)) else [keys]<EOL>if candidate_classes:<EOL><INDENT>candidate_classes = (<EOL>candidate_classes<EOL>if isinstance(candidate_classes, (list, tuple))<EOL>else [candidate_classes]<EOL>)<EOL>candidate_classes = [<EOL>_.__tablename__<EOL>for _ in candidate_classes<EOL>if _ in self.candidate_classes<EOL>]<EOL>if len(candidate_classes) == <NUM_LIT:0>:<EOL><INDENT>logger.warning(<EOL>"<STR_LIT>"<EOL>)<EOL>return<EOL><DEDENT><DEDENT>else:<EOL><INDENT>candidate_classes = [_.__tablename__ for _ in self.candidate_classes]<EOL><DEDENT>key_map = dict()<EOL>for key in keys:<EOL><INDENT>try:<EOL><INDENT>key_map[key.__name__] = set(candidate_classes)<EOL><DEDENT>except AttributeError:<EOL><INDENT>key_map[key] = set(candidate_classes)<EOL><DEDENT><DEDENT>drop_keys(self.session, LabelKey, key_map)<EOL>
Drop the specified keys from LabelKeys.

        :param keys: A list of labeling functions to delete.
        :type keys: list, tuple
        :param candidate_classes: A list of the Candidates to drop the key for.
            If None, drops the keys for all candidate classes associated with
            this Labeler.
        :type candidate_classes: list, tuple