@dataclass(kw_only=True)
class VideoBlock:
"""A video block."""
format: str
"""The block's format."""
source: VideoSource
"""The block's source."""
def serialize(self, serializer: ShapeSerializer):
serializer.write_struct(_SCHEMA_VIDEO_BLOCK, self)
def serialize_members(self, serializer: ShapeSerializer):
serializer.write_string(_SCHEMA_VIDEO_BLOCK.members["format"], self.format)
serializer.write_struct(_SCHEMA_VIDEO_BLOCK.members["source"], self.source)
@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["format"] = de.read_string(
_SCHEMA_VIDEO_BLOCK.members["format"]
)
case 1:
kwargs["source"] = _VideoSourceDeserializer().deserialize(de)
case _:
logger.debug("Unexpected member schema: %s", schema)
deserializer.read_struct(_SCHEMA_VIDEO_BLOCK, consumer=_consumer)
return kwargs