def _build_type(type_, value, property_path=None):
if not property_path:<EOL><INDENT>property_path = []<EOL><DEDENT>for (type_check, builder) in (<EOL>(is_enum_type, _build_enum_type),<EOL>(is_null_type, _build_null_type),<EOL>(is_bool_type, _build_bool_type),<EOL>(is_string_type, _build_string_type),<EOL>(is_integer_type, _build_integer_type),<EOL>(is_number_type, _build_number_type),<EOL>(is_array_type, _build_array_type),<EOL>(is_object_type, _build_object_type),<EOL>):<EOL><INDENT>if type_check(type_):<EOL><INDENT>return builder(value, property_path=property_path)<EOL><DEDENT><DEDENT>if type_:<EOL><INDENT>warnings.warn(f"<STR_LIT>")<EOL><DEDENT>return {}<EOL>
Builds the schema definition based on the given type for the given value.

    :param type_: The type of the value
    :param value: The value to build the schema definition for
    :param List[str] property_path: The property path of the current type,
        defaults to None, optional
    :return: The built schema definition
    :rtype: Dict[str, Any]