Skip to content

COMPAS Protobuf¤

COMPAS Protobuf Logo

A COMPAS extension which lets you serialize and deserialize COMPAS Data types using protobuf.

Installation¤

Stable releases can be installed from PyPI.

pip install compas_pb

Basic Usage¤

Serialize to file¤

from compas.geometry import Vector
from compas_pb import pb_dump
from compas_pb import pb_load

PATH = "vector.data"

vector = Vector(1.0, 2.0, 3.0)

pb_dump(vector, PATH)

loaded_vector = pb_load(PATH)

(De)serialize to bytes¤

from compas.geometry import Vector
from compas_pb import pb_dump_bts
from compas_pb import pb_load_bts

vector = Vector(1.0, 2.0, 3.0)

bytes_vector = pb_dump_bts(vector)

loaded_vector = pb_load_bts(bytes_vector)

Serialization of arbitrarily nested data structures¤

from compas.geometry import Vector
from compas.geometry import Polyline
from compas_pb import pb_dump_bts
from compas_pb import pb_load_bts

data = {
    "direction": Vector(1.0, 2.0, 3.0),
    "outlines":
        [
            Polyline([[0, 0, 0], [1, 1, 1], [2, 2, 2]]),
            Polyline([[3, 3, 3], [4, 4, 4], [5, 5, 5]])
        ],
}

pb_data = pb_dump_bts(data)

loaded_data = pb_load_bts(pb_data)