<commit_before>class Qualifiable(object):
    _QUALIFYING_ATTRS = []

    @classmethod
    def _qualifies(self, other):
        return object_qualifies(other, self._QUALIFYING_ATTRS)


def object_qualifies(obj, qualifiers):
    qualifies = True
    for qualifier in qualifiers:
        if not hasattr(obj, qualifier):
            qualifies = False
            break
    return qualifies<commit_msg>Class methods take cls, not self<commit_after>class Qualifiable(object):
    _QUALIFYING_ATTRS = []

    @classmethod
    def _qualifies(cls, other):
        return object_qualifies(other, cls._QUALIFYING_ATTRS)


def object_qualifies(obj, qualifiers):
    qualifies = True
    for qualifier in qualifiers:
        if not hasattr(obj, qualifier):
            qualifies = False
            break
    return qualifies
{'fraction_non_alphanumeric': 0.07257072570725707, 'fraction_numerical': 0.0, 'mean_word_length': 2.9901960784313726, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '796083', 'n_tokens_mistral': 243, 'n_tokens_neox': 236, 'n_words': 60}