Run diagnostics on the configuration file.

    Args:
        config_path (str): Path to the configuration file.
    Returns:
        str, Set[str], dict(str, Set[str]): The path to the configuration file, a set of missing
        sections and a dict that maps each section to the entries that have either missing or empty
        options.

def run_config_diagnostics(config_path=CONFIG_PATH):
    """Run diagnostics on the configuration file.

    Args:
        config_path (str): Path to the configuration file.
    Returns:
        str, Set[str], dict(str, Set[str]): The path to the configuration file, a set of missing
        sections and a dict that maps each section to the entries that have either missing or empty
        options.
    """
    config = read_config(config_path)
    missing_sections = set()
    malformed_entries = defaultdict(set)
    for section, expected_section_keys in SECTION_KEYS.items():
        section_content = config.get(section)
        if not section_content:
            missing_sections.add(section)
        else:
            for option in expected_section_keys:
                option_value = section_content.get(option)
                if not option_value:
                    malformed_entries[section].add(option)
    return config_path, missing_sections, malformed_entries