<commit_before>class ProductionPart:
    def __str__(self):
        return repr(self)


class LiteralPart(ProductionPart):
    def __init__(self, text: str):
        self.text = text

    def __repr__(self):
        return "'" + self.text + "'"


class SpecialPart(ProductionPart):
    def __init__(self, special_token: str):
        self.token = special_token

    def __repr__(self):
        return self.token


class RulePart(ProductionPart):
    def __init__(self, rule_name: str):
        self.name = rule_name

    def __repr__(self):
        return "<" + self.name + ">"


class RepeatPart(ProductionPart):
    def __init__(self, repeated_part: ProductionPart):
        self.part = repeated_part

    def __repr__(self):
        return repr(self.part) + "*"


class OptionPart(ProductionPart):
    def __init__(self, optional_part: ProductionPart):
        self.part = optional_part
<commit_msg>Include extra quotes around special tokens for repr<commit_after>class ProductionPart:
    def __str__(self):
        return repr(self)


class LiteralPart(ProductionPart):
    def __init__(self, text: str):
        self.text = text

    def __repr__(self):
        return "'" + self.text + "'"


class SpecialPart(ProductionPart):
    def __init__(self, special_token: str):
        self.token = special_token

    def __repr__(self):
        return "'" + self.token + "'"


class RulePart(ProductionPart):
    def __init__(self, rule_name: str):
        self.name = rule_name

    def __repr__(self):
        return "<" + self.name + ">"


class RepeatPart(ProductionPart):
    def __init__(self, repeated_part: ProductionPart):
        self.part = repeated_part

    def __repr__(self):
        return repr(self.part) + "*"


class OptionPart(ProductionPart):
    def __init__(self, optional_part: ProductionPart):
        self.part = optional_part

{'fraction_non_alphanumeric': 0.10895361380798274, 'fraction_numerical': 0.0, 'mean_word_length': 3.103982300884956, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, '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': '7136560', 'n_tokens_mistral': 579, 'n_tokens_neox': 543, 'n_words': 131}