def process_advanced_mode_proto()

in src/dfcx_scrapi/core/intents.py [0:0]


    def process_advanced_mode_proto(self, obj: types.Intent):
        """Process Intent Proto in advanced mode."""

        intent_df = pd.DataFrame(columns=[
            "name", "display_name", "description", "priority",
            "is_fallback", "labels", "id", "repeat_count",
            "training_phrase_idx", "text", "text_idx",
            "parameter_id", "entity_type", "is_list", "redact",
            ])

        intent_dict = {
            "name": str(obj.name),
            "display_name": str(obj.display_name),
            "description": str(obj.description),
            "priority": int(obj.priority),
            "is_fallback": bool(obj.is_fallback),
        }

        # labels
        intent_dict["labels"] = ",".join([
            key if key == val else f"{key}:{val}"
            for key, val in obj.labels.items()
        ])
        # parameters
        params_dict = {
            str(param.id): {
                "parameter_id": str(param.id),
                "entity_type": str(param.entity_type),
                "is_list": bool(param.is_list),
                "redact": bool(param.redact),
            }
            for param in obj.parameters
        }
        # training phrases
        if not obj.training_phrases:
            intent_df = self.concat_dict_and_df(intent_df, intent_dict)

        else:
            for tp_count, phrase in enumerate(obj.training_phrases):
                intent_dict.update({
                    "id": str(phrase.id),
                    "repeat_count": int(phrase.repeat_count),
                    "training_phrase_idx": tp_count,
                })
                for part_count, part in enumerate(phrase.parts):
                    intent_dict = self.parse_phrase_for_parameter_info(
                        intent_dict, params_dict, part, part_count)

                    intent_df = self.concat_dict_and_df(intent_df, intent_dict)

        return intent_df