@dataclass(kw_only=True)
class Tag:
"""A tag."""
key: str
"""The tag's key."""
value: str
"""The tag's value."""
def serialize(self, serializer: ShapeSerializer):
serializer.write_struct(_SCHEMA_TAG, self)
def serialize_members(self, serializer: ShapeSerializer):
serializer.write_string(_SCHEMA_TAG.members["key"], self.key)
serializer.write_string(_SCHEMA_TAG.members["value"], self.value)
@classmethod
def deserialize(cls, deserializer: ShapeDeserializer) -> Self:
return cls(**cls.deserialize_kwargs(deserializer))
@classmethod
def deserialize_kwargs(cls, deserializer: ShapeDeserializer) -> dict[str, Any]:
kwargs: dict[str, Any] = {}
def _consumer(schema: Schema, de: ShapeDeserializer) -> None:
match schema.expect_member_index():
case 0:
kwargs["key"] = de.read_string(_SCHEMA_TAG.members["key"])
case 1:
kwargs["value"] = de.read_string(_SCHEMA_TAG.members["value"])
case _:
logger.debug("Unexpected member schema: %s", schema)
deserializer.read_struct(_SCHEMA_TAG, consumer=_consumer)
return kwargs