def _get_labels_and_return_labels_model()

in aws-frauddetector-detector/src/aws_frauddetector_detector/helpers/model_helpers.py [0:0]


def _get_labels_and_return_labels_model(frauddetector_client, label_names, reference_label_names: set):
    label_models = []
    for label_name in label_names:
        get_labels_response = api_helpers.call_get_labels(frauddetector_client, label_name)
        labels = get_labels_response.get("labels", [])
        if not labels:
            raise RuntimeError(f"Error! Expected an existing label, but label did not exist! label name {label_name}")
        label = labels[0]
        label_arn = label.get("arn", "")
        LOG.debug(f"checking if {label_name} is in {reference_label_names}")
        if label_name in reference_label_names:
            LOG.debug(f"in reference set, {label_name} is not inline")
            label_model = models.Label(
                Arn=label_arn,
                Name=label_name,
                Tags=None,
                Description=None,
                CreatedTime=None,
                LastUpdatedTime=None,
                Inline=False,
            )
        else:
            LOG.debug(f"not in reference set, {label_name} is inline")
            label_tags = _get_tags_for_given_arn(frauddetector_client, label_arn)
            tag_models = get_tag_models_from_tags(label_tags)
            label_model = models.Label(
                Name=label_name,
                Tags=tag_models,
                Description=label.get("description", ""),
                Arn=label_arn,
                CreatedTime=label.get("createdTime", ""),
                LastUpdatedTime=label.get("lastUpdatedTime", ""),
                Inline=True,
            )
        # remove empty description/tags
        if not label_model.Tags:
            del label_model.Tags
        if label_model.Description is None or label_model.Description == "":
            del label_model.Description
        label_models.append(label_model)
    return label_models