# Path: string_utils/errors.py
# class InvalidInputError(TypeError):
#     """
#     Custom error raised when received object is not a string as expected.
#     """
# 
#     def __init__(self, input_data: Any):
#         """
#         :param input_data: Any received object
#         """
#         type_name = type(input_data).__name__
#         msg = 'Expected "str", received "{}"'.format(type_name)
#         super().__init__(msg)


import json
import string
from typing import Any, Optional, List
from ._regex import *
from .errors import InvalidInputError
    'is_integer',
    'is_decimal',
    'is_url',
    'is_email',
    'is_credit_card',
    'is_camel_case',
    'is_snake_case',
    'is_json',
    'is_uuid',
    'is_ip_v4',
    'is_ip_v6',
    'is_ip',
    'is_isbn_10',
    'is_isbn_13',
    'is_isbn',
    'is_palindrome',
    'is_pangram',
    'is_isogram',
    'is_slug',
    'contains_html',
    'words_count',
]




# PRIVATE API


class __ISBNChecker:

# Path: string_utils/errors.py
# class InvalidInputError(TypeError):
#     """
#     Custom error raised when received object is not a string as expected.
#     """
# 
#     def __init__(self, input_data: Any):
#         """
#         :param input_data: Any received object
#         """
#         type_name = type(input_data).__name__
#         msg = 'Expected "str", received "{}"'.format(type_name)
#         super().__init__(msg)


# Path: string_utils/validation.py
import json
import string
from typing import Any, Optional, List
from ._regex import *
from .errors import InvalidInputError

    'is_integer',
    'is_decimal',
    'is_url',
    'is_email',
    'is_credit_card',
    'is_camel_case',
    'is_snake_case',
    'is_json',
    'is_uuid',
    'is_ip_v4',
    'is_ip_v6',
    'is_ip',
    'is_isbn_10',
    'is_isbn_13',
    'is_isbn',
    'is_palindrome',
    'is_pangram',
    'is_isogram',
    'is_slug',
    'contains_html',
    'words_count',
]




# PRIVATE API


class __ISBNChecker:

    def __init__(self, input_string: str, normalize: bool = True):