def METHOD_NAME(
    prs: List[Dict], packages: List[List], categories: List[List]
) -> Tuple[Dict, int]:
    """Assign all PRs to packages and categories based on labels."""
    assigned = {}
    prs_removed = 0
    for i, pr in enumerate(prs):
        pr_labels = [label["name"] for label in pr["labels"]]
        if "no changelog" in pr_labels:
            prs_removed += 1
            continue
        has_package = False
        for pkg in packages:
            if not set(pkg[1]).isdisjoint(set(pr_labels)):
                has_package = True
                if pkg[0] not in assigned:
                    assigned[pkg[0]] = {}
                assign_pr_category(assigned, categories, i, pr_labels, pkg[0])
        if not has_package:
            if "Other" not in assigned:
                assigned["Other"] = OrderedDict()
            assign_pr_category(assigned, categories, i, pr_labels, "Other")
    # order assignments
    assigned = OrderedDict({k: v for k, v in sorted(assigned.items())})
    if "Other" in assigned:
        assigned.move_to_end("Other")
    for key in assigned:
        assigned[key] = OrderedDict({k: v for k, v in sorted(assigned[key].items())})
        if "Other" in assigned[key]:
            assigned[key].move_to_end("Other")
    return assigned, prs_removed