def METHOD_NAME() -> FrameworkInfo:
    """
    Detect the information for the keras framework such as package versions,
    availability for core actions such as training and inference,
    sparsification support, and inference provider support.
    :return: The framework info for keras
    :rtype: FrameworkInfo
    """
    cpu_provider = FrameworkInferenceProviderInfo(
        name="cpu",
        description="Base CPU provider within Keras",
        device="cpu",
        supported_sparsification=SparsificationInfo(),  # TODO: fill in when available
        available=check_keras_install(raise_on_error=False),
        properties={},
        warnings=[],
    )
    gpu_provider = FrameworkInferenceProviderInfo(
        name="cuda",
        description="Base GPU CUDA provider within Keras",
        device="gpu",
        supported_sparsification=SparsificationInfo(),  # TODO: fill in when available
        available=(
            check_keras_install(raise_on_error=False)
            and tensorflow.test.is_gpu_available()
        ),
        properties={},
        warnings=[],
    )
    return FrameworkInfo(
        framework=Framework.keras,
        package_versions={
            "keras": (
                get_version(package_name="keras", raise_on_error=False)
                if is_native_keras
                else get_version(package_name="tensorflow", raise_on_error=False)
            ),
            "tensorflow": get_version(package_name="tensorflow", raise_on_error=False),
            "onnx": get_version(package_name="onnx", raise_on_error=False),
            "keras2onnx": get_version(package_name="keras2onnx", raise_on_error=False),
            "tf2onnx": get_version(package_name="tf2onnx", raise_on_error=False),
            "sparsezoo": get_version(
                package_name="sparsezoo",
                raise_on_error=False,
                alternate_package_names=["sparsezoo-nightly"],
            ),
            "sparseml": get_version(
                package_name="sparseml",
                raise_on_error=False,
                alternate_package_names=["sparseml-nightly"],
            ),
        },
        sparsification=sparsification_info(),
        inference_providers=[cpu_provider, gpu_provider],
        properties={
            "is_native_keras": is_native_keras,
        },
        training_available=True,
        sparsification_available=True,
        exporting_onnx_available=True,
        inference_available=True,
    )