Source code for simstack.util.b64mixin

import base64
import zlib


[docs] class BytesB64Mixin: """ Mixin that teaches Pydantic/ODMantic to serialise *bytes* fields as base-64-encoded ASCII strings when exporting to JSON (dict / response). """ model_config = { "json_encoders": {bytes: lambda b: base64.b64encode(b).decode("ascii")} } def _compress_bytes(self, data: bytes) -> str: """Compress bytes and encode to base64 string""" compressed = zlib.compress(data) return base64.b64encode(compressed).decode('utf-8') def _decompress_bytes(self, data: str) -> bytes: """Decode base64 string and decompress to bytes""" compressed = base64.b64decode(data.encode('utf-8')) return zlib.decompress(compressed)