<commit_before>class BaseEntry(object):
    _additional = True
    types = {}
    properties = {}

    def __init__(self, **properties):
        for attribute, value in properties.items():
            self.add_attribute(attribute, value)

    def add_attribute(self, name, value):
        if name not in self.types and not self._additional:
            raise AttributeError("Unspecified Attribute '%s' not allowed in '%s' object" % (
                name, self.__class__.__name__))
        else:
            self.properties[name] = value
<commit_msg>getattr not found<commit_after>class BaseEntry(object):
    _additional = True
    types = {}
    properties = {}

    def __init__(self, **properties):
        for attribute, value in properties.items():
            self.add_attribute(attribute, value)

    def __getattr__(self, item):
        if item in self.properties:
            return self.properties[item]
        else:
            raise AttributeError('Attribute not found')

    def add_attribute(self, name, value):
        if name not in self.types and not self._additional:
            raise AttributeError("Unspecified Attribute '%s' not allowed in '%s' object" % (
                name, self.__class__.__name__))
        else:
            self.properties[name] = value

{'fraction_non_alphanumeric': 0.09961089494163425, 'fraction_numerical': 0.0, 'mean_word_length': 2.4385026737967914, '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': '5678737', 'n_tokens_mistral': 342, 'n_tokens_neox': 330, 'n_words': 100}