frostfs-sdk-python/frostfs_sdk/client/utils/message_helper.py
Ilyas Niyazov 297e107b10 [#3] Added generate proto script create container method
Signed-off-by: Ilyas Niyazov <i.niyazov@yadro.com>
2025-03-25 11:13:48 +03:00

30 lines
1.2 KiB
Python

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)