def METHOD_NAME(dump_dir_path: str) -> Tuple[str, Optional[str], Optional[str]]:
    dump_dir = report.dd_opendir(dump_dir_path, report.DD_OPEN_READONLY)
    if not dump_dir:
        logger.error(_("Cannot open problem directory '%s'"), dump_dir_path)
        sys.exit(RETURN_FAILURE)
    dd_load_flags = (report.DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE |
                     report.DD_FAIL_QUIETLY_ENOENT)
    duphash = dump_dir.load_text(FILENAME_DUPHASH, dd_load_flags)
    if not duphash:
        logger.error(_("Problem directory is missing file '%s'"), FILENAME_DUPHASH)
        dump_dir.close()
        sys.exit(RETURN_FAILURE)
    os_info = dump_dir.load_text(FILENAME_OSINFO, dd_load_flags)
    dump_dir.close()
    if not os_info:
        logger.error(_("Problem directory is missing file '%s'"), FILENAME_OSINFO)
        sys.exit(RETURN_FAILURE)
    # get Bugzilla Product and Version from os_info
    product: Optional[str] = os.getenv("Bugzilla_Product")
    version: Optional[str] = None
    for line in os_info.split("\n"):
        if not product and OSINFO_BUGZILLA_PRODUCT in line:
            product = parse_os_release_line(line)
        if OSINFO_BUGZILLA_PRODUCT_VERSION in line:
            version = parse_os_release_line(line)
    return duphash, product, version