def METHOD_NAME(
    pkg_infos: Mapping[str, Any],
    distroversion: str,
    reponame: str,
    archs: List[str],
) -> Iterable[AdvisoryData]:
    """
    Yield AdvisoryData by mapping data from `pkg_infos`
    and form PURL for AffectedPackages by using
    `distroversion`, `reponame`, `archs`
    """
    if not pkg_infos.get("name"):
        LOGGER.error(f'"name" is not available in package {pkg_infos!r}')
        return []
    for version, fixed_vulns in pkg_infos["secfixes"].items():
        if not fixed_vulns:
            LOGGER.error(f"No fixed vulnerabilities in version {version!r}")
            continue
        for vuln_ids in fixed_vulns:
            if not isinstance(vuln_ids, str):
                LOGGER.error(f"{vuln_ids!r} is not of `str` instance")
                continue
            vuln_ids = vuln_ids.split()
            aliases = []
            vuln_id = vuln_ids[0]
            # check for valid vuln ID, if there is valid vuln ID then iterate over
            # the remaining elements of the list else iterate over the whole list
            # and also check if the initial element is a reference or not
            if is_cve(vuln_id):
                aliases = [vuln_id]
                vuln_ids = vuln_ids[1:]
            references = []
            for reference_id in vuln_ids:
                if reference_id.startswith("XSA"):
                    references.append(XsaReference.from_id(xsa_id=reference_id))
                elif reference_id.startswith("ZBX"):
                    references.append(ZbxReference.from_id(zbx_id=reference_id))
                elif reference_id.startswith("wnpa-sec"):
                    references.append(WireSharkReference.from_id(wnpa_sec_id=reference_id))
            qualifiers = {
                "distroversion": distroversion,
                "reponame": reponame,
            }
            affected_packages = []
            try:
                fixed_version = AlpineLinuxVersion(version)
            except Exception as e:
                LOGGER.error(f"{version!r} is not a valid AlpineVersion {e!r}")
                continue
            if not isinstance(archs, List):
                LOGGER.error(f"{archs!r} is not of `List` instance")
                continue
            if archs:
                for arch in archs:
                    qualifiers["arch"] = arch
                    affected_packages.append(
                        AffectedPackage(
                            package=PackageURL(
                                type="alpine",
                                name=pkg_infos["name"],
                                qualifiers=qualifiers,
                            ),
                            fixed_version=fixed_version,
                        )
                    )
            else:
                # there is no arch, this is not an arch-specific package
                affected_packages.append(
                    AffectedPackage(
                        package=PackageURL(
                            type="alpine",
                            name=pkg_infos["name"],
                            qualifiers=qualifiers,
                        ),
                        fixed_version=fixed_version,
                    )
                )
            yield AdvisoryData(
                references=references,
                affected_packages=affected_packages,
                aliases=aliases,
            )