MCPcopy
hub / github.com/anthropics/anthropic-sdk-python / decode

Method decode

src/anthropic/_streaming.py:471–522  ·  view source on GitHub ↗
(self, line: str)

Source from the content-addressed store, hash-verified

469 yield data
470
471 def decode(self, line: str) -> ServerSentEvent | None:
472 # See: https://html.spec.whatwg.org/multipage/server-sent-events.html#event-stream-interpretation # noqa: E501
473
474 if not line:
475 if not self._event and not self._data and not self._last_event_id and self._retry is None:
476 self._raw = []
477 return None
478
479 sse = ServerSentEvent(
480 event=self._event,
481 data="\n".join(self._data),
482 id=self._last_event_id,
483 retry=self._retry,
484 raw=self._raw,
485 )
486
487 # NOTE: as per the SSE spec, do not reset last_event_id.
488 self._event = None
489 self._data = []
490 self._retry = None
491 self._raw = []
492
493 return sse
494
495 self._raw.append(line)
496
497 if line.startswith(":"):
498 return None
499
500 fieldname, _, value = line.partition(":")
501
502 if value.startswith(" "):
503 value = value[1:]
504
505 if fieldname == "event":
506 self._event = value
507 elif fieldname == "data":
508 self._data.append(value)
509 elif fieldname == "id":
510 if "\0" in value:
511 pass
512 else:
513 self._last_event_id = value
514 elif fieldname == "retry":
515 try:
516 self._retry = int(value)
517 except (TypeError, ValueError):
518 pass
519 else:
520 pass # Field is ignored.
521
522 return None
523
524
525@runtime_checkable

Callers 15

iter_bytesMethod · 0.95
aiter_bytesMethod · 0.95
parse_datetimeFunction · 0.80
parse_dateFunction · 0.80
_format_dataFunction · 0.80
_async_format_dataFunction · 0.80
execMethod · 0.80
grepFunction · 0.80
scanFunction · 0.80
_prepare_requestMethod · 0.80
_prepare_requestMethod · 0.80

Calls 1

ServerSentEventClass · 0.85