from typing import Any from google.protobuf.message import Message class MessageHelper: @staticmethod def get_field(message: Message, field_name: str): """ Retrieves the value of a field from a Protobuf message. :param message: A Protobuf Message object. :param field_name: The name of the field to retrieve. :return: The value of the specified field. :raises ValueError: If the input parameters are invalid. """ if not message or not field_name or not isinstance(field_name, str) or not field_name.strip(): raise ValueError("Some parameter is missing") descriptor = message.DESCRIPTOR field_descriptor = descriptor.fields[field_name] if not field_descriptor: raise ValueError(f"Field '{field_name}' not found in message descriptor") return getattr(field_descriptor, field_name) @staticmethod def set_field(message: Message, field_name: str, value: Any) -> None: if message is None or not field_name.strip() or value is None: raise ValueError("Some parameter is missing") setattr(message, message.DESCRIPTOR.fields[field_name], value)