немного поздно, но, возможно, эта ссылка может помочь другим.
В основном все сводится к определению пользовательских функций сериализации, сделанных вручную. Например вот ваш класс:
class MyData:
def __init__(self, name, data):
self.name = name
self.data = data
Вы пишете функции для преобразования в / из этого класса, например:
def _serialize_MyData(val):
return {'name': val.name, 'data': val.data}
def _deserialize_MyData(data):
return MyData(data['name'], data['data']
Затем инициализируйте контекст из этих функций, чтобы затем передать их методам сериализации / десериализации:
context = pa.SerializationContext()
context.register_type(MyData, 'MyData',
custom_serializer=_serialize_MyData,
custom_deserializer=_deserialize_MyData)
Теперь вы вызываете методы serialize
/ deserialize
и передаете им контекст:
buf = pa.serialize(val, context=context).to_buffer()
restored_val = pa.deserialize(buf, context=context)