import bson import marshmallow as ma from marshmallow import fields as ma_fields from umongo import fields class BinaryField(fields.BaseField, ma_fields.Field): default_error_messages = {"invalid": "Not a valid byte sequence."} def _serialize(self, value, attr, data, **kwargs): return bytes(value) def _deserialize(self, value, attr, data, **kwargs): if not isinstance(value, bytes): self.fail("invalid") return value def _serialize_to_mongo(self, obj): return bson.binary.Binary(obj) def _deserialize_from_mongo(self, value): return bytes(value) class RawField(fields.BaseField, ma_fields.Raw): pass