from msgpack import unpackb, packb cdef class FileData: def __init__(self, str folder, str filename): self.folder = folder self.filename = filename @staticmethod cdef from_msgpack(bytes data): unpacked = unpackb(data, strict_map_key=False) return FileData( unpacked.get("Folder"), unpacked.get("Filename")) cdef bytes serialize(self): return packb({ "Folder": self.folder, "Filename": self.filename }) cdef class UploadFileData(FileData): def __init__(self, bytes resource, str folder, str filename): super().__init__(folder, filename) self.resource = resource @staticmethod cdef from_msgpack(bytes data): unpacked = unpackb(data, strict_map_key=False) return UploadFileData( unpacked.get("Resource"), unpacked.get("Folder"), unpacked.get("Filename")) cdef bytes serialize(self): return packb({ "Resource": self.resource, "Folder": self.folder, "Filename": self.filename }) cdef class FileList: def __init__(self, list[str] files): self.files = files @staticmethod cdef from_msgpack(bytes data): unpacked = unpackb(data, strict_map_key=False) return FileList(unpacked.get("files")) cdef bytes serialize(self): return packb({ "files": self.files })