def get_group_key_and_header(self, finding_data: Dict, attributes: List) -> Tuple[KeyT, List[str]]:
        """Generates group key and descriptive header from finding data.

        For example, for finding_data = {"a":1, "b":2, "x": 3, "y": None} and attributes = ["x", "y"]
        this method will return ((3, "(undefined)"), [])"""
        values = ()
        descriptions = []
        for attr in attributes:
            if isinstance(attr, str):
                if attr not in finding_data:
                    continue
                value = finding_data[attr]
                values += (value, )
                descriptions.append(
                    f"{'notification' if attr=='identifier' else attr}: {self.display_value(value)}"
                )
            elif isinstance(attr, dict):
                # This is typically for labels and annotations
                top_level_attr_name = list(attr.keys())[0]
                values += tuple(
                    finding_data.get(top_level_attr_name, {}).get(element_name)
                    for element_name in sorted(attr[top_level_attr_name])
                )
                subvalues = []
                for subattr_name in sorted(attr[top_level_attr_name]):
                    subvalues.append((subattr_name, finding_data.get(top_level_attr_name, {}).get(subattr_name)))
                subvalues_str = ", ".join(f"{key}={self.display_value(value)}" for key, value in sorted(subvalues))
                descriptions.append(f"{top_level_attr_name}: {subvalues_str}")
        return values, descriptions
Generates group key and descriptive header from finding data.

        For example, for finding_data = {"a":1, "b":2, "x": 3, "y": None} and attributes = ["x", "y"]
        this method will return ((3, "(undefined)"), [])
src/robusta/core/sinks/sink_base.py