# HG changeset patch # User drewp@bigasterisk.com # Date 1637812460 28800 # Node ID 1b6718a54c002e7c79d32e56a0e46baca940a877 # Parent cf1f964b7c2875d8ddc4949181302d19ea81e017 add a workaround for a str/bytes bug in cyclone SSE diff -r cf1f964b7c28 -r 1b6718a54c00 patch_cyclone.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patch_cyclone.py Wed Nov 24 19:54:20 2021 -0800 @@ -0,0 +1,20 @@ + + +def patch_sse(): + from cyclone import escape + import cyclone.sse + def new_sendEvent(self, message, event=None, eid=None, retry=None): + if isinstance(message, dict): + message = escape.json_encode(message) + if isinstance(message, str): + message = message.encode("utf-8") + assert isinstance(message, bytes) + if eid: + self.transport.write(b"id: " + eid.encode("utf-8") + b"\n") + if event: + self.transport.write(b"event: " + event + b"\n") + if retry: + self.transport.write(b"retry: " + retry.encode("utf-8") + b"\n") + self.transport.write(b"data: " + message + b"\n\n") + + cyclone.sse.SSEHandler.sendEvent = new_sendEvent diff -r cf1f964b7c28 -r 1b6718a54c00 patchablegraph.py --- a/patchablegraph.py Wed Nov 24 19:48:44 2021 -0800 +++ b/patchablegraph.py Wed Nov 24 19:54:20 2021 -0800 @@ -37,7 +37,9 @@ from rdflib.namespace import NamespaceManager from rdflib.parser import StringInputSource from rdflib.plugins.serializers.jsonld import from_rdf +import patch_cyclone +patch_cyclone.patch_sse() log = logging.getLogger('patchablegraph') SERIALIZE_CALLS = Summary('serialize_calls', 'PatchableGraph.serialize calls')