def _handle_msg_compat()

in lib/src/klio/message/serializer.py [0:0]


def _handle_msg_compat(parsed_message):
    if parsed_message.version is klio_pb2.Version.V1:
        if parsed_message.data.entity_id and not parsed_message.data.element:
            # make v1 messages compatible with v2
            parsed_message.data.element = bytes(
                parsed_message.data.entity_id, "utf-8"
            )
        return parsed_message

    if parsed_message.version is klio_pb2.Version.V2:
        # is it safe to assume if a message is already labeled as v2, it should
        # have an element or payload? i.e. not just entity_id?
        return parsed_message

    if parsed_message.data.entity_id and not parsed_message.data.element:
        # assume v1 message
        parsed_message.version = klio_pb2.Version.V1
        # make v1 messages compatible with v2
        parsed_message.data.element = bytes(
            parsed_message.data.entity_id, "utf-8"
        )

    elif not parsed_message.data.entity_id and not parsed_message.data.element:
        # assume v1 message
        parsed_message.version = klio_pb2.Version.V1

    elif parsed_message.data.element and not parsed_message.data.entity_id:
        # assume v2 message
        parsed_message.version = klio_pb2.Version.V2

    return parsed_message