[docs]@classmethoddeffrom_data(cls,data,/,*,content_type=None):content_type=ensure_str(content_type)ifcontent_typeelseNoneifcontent_typeand";"incontent_type:# xxx hack, we should parse the rest of the content typecontent_type=content_type.split(";",1)[0].strip()data=ensure_bytes(data)returncls(id=hashlib.sha1((content_type.encode("utf-8")ifcontent_typeelseb"")+b"\n"+data).hexdigest(),data=data,content_type=content_type,)
[docs]defprettify(self):ifself.content_type=="application/json":try:data=orjson.loads(self.data)exceptorjson.JSONDecodeError:try:data=json.loads(self.data)exceptjson.JSONDecodeErrorasexc:raiseValueError("Could not decode json data.")fromexctry:returnorjson.dumps(data,option=orjson.OPT_INDENT_2)exceptorjson.JSONEncodeError:try:returnjson.dumps(data,indent=4)exceptjson.JSONDecodeErrorasexc:raiseValueError("Could not encode json data.")fromexcraiseNotImplementedError(f"Cannot prettify blob of type {self.content_type}")