<commit_before>def pretty_print_recursive(obj, indent=0):
    def i_print(s):
        print(' ' * indent + s)

    if obj is None:
        i_print('None')
    elif isinstance(obj, (int, float, str)):
        i_print(f'{obj}')
    elif isinstance(obj, list):
        for l in obj:
            pretty_print_recursive(l, indent=indent+2)
    elif isinstance(obj, dict):
        for k, v in obj:
            i_print(f'{k}: {v}')
    else:
        for k, v in obj.__dict__.items():
            if not k.startswith('_'):
                if v.__class__.__name__ not in __builtins__:
                    i_print(f'{k}:')
                    pretty_print_recursive(v, indent=indent+2)
                elif isinstance(v, (list, dict)):
                    i_print(f'{k}:')
                    pretty_print_recursive(v, indent=indent)
                else:
                    i_print(f'{k}: {v}')<commit_msg>Add None identifier / repr print<commit_after>def pretty_print_recursive(obj, indent=0):
    def i_print(s):
        print(' ' * indent + s)

    if obj is None:
        i_print('None')
    elif isinstance(obj, (int, float, str)):
        i_print(f'{obj}')
    elif isinstance(obj, list):
        for l in obj:
            pretty_print_recursive(l, indent=indent+2)
    elif isinstance(obj, dict):
        for k, v in obj.items():
            i_print(f'{k}: {repr(v)}')
    else:
        for k, v in obj.__dict__.items():
            if not k.startswith('_'):
                if v is None:
                    i_print(f'{k}: None')
                elif v.__class__.__name__ not in __builtins__:
                    i_print(f'{k}:')
                    pretty_print_recursive(v, indent=indent+2)
                elif isinstance(v, (list, dict)):
                    i_print(f'{k}:')
                    pretty_print_recursive(v, indent=indent)
                else:
                    i_print(f'{k}: {repr(v)}')
{'fraction_non_alphanumeric': 0.13095861707700368, 'fraction_numerical': 0.003143006809848088, 'mean_word_length': 1.6977401129943503, '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': '3997557', 'n_tokens_mistral': 625, 'n_tokens_neox': 595, 'n_words': 139}