def is_supported_value_type(value):
    """
    checks if the given value type is supported.

    Supported Types:
        - strings
        - bytes
        - numbers
        - tuples
        - lists
        - dicts
        - sets
        - booleans
        - None
    """

    if (
        isinstance(value, (str, bytes, int, float, bool)) or
        value is None
       ):
        return True
    if isinstance(value, tuple):
        for sub_value in value:
            if not is_supported_value_type(sub_value):
                return False
        return True
    if isinstance(value, list):
        for sub_value in value:
            if not is_supported_value_type(sub_value):
                return False
        return True
    if isinstance(value, dict):
        for sub_key, sub_value in value.items():
            if not is_supported_value_type(sub_key):
                return False
            if not is_supported_value_type(sub_value):
                return False
        return True
    if isinstance(value, set):
        for sub_value in value:
            if not is_supported_value_type(sub_value):
                return False
        return True

    return False