MCPcopy
hub / github.com/openai/openai-python / decode

Method decode

src/openai/_streaming.py:339–385  ·  view source on GitHub ↗
(self, line: str)

Source from the content-addressed store, hash-verified

337 yield data
338
339 def decode(self, line: str) -> ServerSentEvent | None:
340 # See: https://html.spec.whatwg.org/multipage/server-sent-events.html#event-stream-interpretation # noqa: E501
341
342 if not line:
343 if not self._event and not self._data and not self._last_event_id and self._retry is None:
344 return None
345
346 sse = ServerSentEvent(
347 event=self._event,
348 data="\n".join(self._data),
349 id=self._last_event_id,
350 retry=self._retry,
351 )
352
353 # NOTE: as per the SSE spec, do not reset last_event_id.
354 self._event = None
355 self._data = []
356 self._retry = None
357
358 return sse
359
360 if line.startswith(":"):
361 return None
362
363 fieldname, _, value = line.partition(":")
364
365 if value.startswith(" "):
366 value = value[1:]
367
368 if fieldname == "event":
369 self._event = value
370 elif fieldname == "data":
371 self._data.append(value)
372 elif fieldname == "id":
373 if "\0" in value:
374 pass
375 else:
376 self._last_event_id = value
377 elif fieldname == "retry":
378 try:
379 self._retry = int(value)
380 except (TypeError, ValueError):
381 pass
382 else:
383 pass # Field is ignored.
384
385 return None
386
387
388@runtime_checkable

Callers 15

iter_bytesMethod · 0.95
aiter_bytesMethod · 0.95
send_rawMethod · 0.80
send_rawMethod · 0.80
send_rawMethod · 0.80
send_rawMethod · 0.80
verify_signatureMethod · 0.80
unwrapMethod · 0.80
verify_signatureMethod · 0.80
parse_datetimeFunction · 0.80
parse_dateFunction · 0.80
_format_dataFunction · 0.80

Calls 2

ServerSentEventClass · 0.85
appendMethod · 0.45

Tested by 3