<commit_before>import re
from collections import OrderedDict

__version__ = "0.4.4"

class Attr(OrderedDict):

    pattern = re.compile(r"([\w\:]+?)\s*=\s*(\"[^\"\'<>]+?\"|\'[^<>\']+?\')")
    
    def __init__(self, attr_str):
        super(Attr, self).__init__()
        if attr_str:
            for hit in self.pattern.finditer(attr_str):
                value = hit.group(2)
                if (value[0] == "\"" and value[-1] == "\"") or (value[0] == "\'" and value[-1] == "\'"):
                    self[hit.group(1)] = value[1:-1]
                else:
                    self[hit.group(1)] = value


class Tag:

    def __init__(self, tag):
        self.tag = tag<commit_msg>new version<commit_after>import re
from collections import OrderedDict

__version__ = "0.4.5"

class Attr(OrderedDict):

    pattern = re.compile(r"([\w\:]+?)\s*=\s*(\"[^\"\'<>]+?\"|\'[^<>\']+?\')")
    
    def __init__(self, attr_str):
        super(Attr, self).__init__()
        if attr_str:
            for hit in self.pattern.finditer(attr_str):
                value = hit.group(2)
                if (value[0] == "\"" and value[-1] == "\"") or (value[0] == "\'" and value[-1] == "\'"):
                    self[hit.group(1)] = value[1:-1]
                else:
                    self[hit.group(1)] = value


class Tag:

    def __init__(self, tag):
        self.tag = tag
{'fraction_non_alphanumeric': 0.2126099706744868, 'fraction_numerical': 0.017595307917888565, 'mean_word_length': 1.9166666666666667, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, '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': '3890682', 'n_tokens_mistral': 492, 'n_tokens_neox': 471, 'n_words': 90}