| 359 | |
| 360 | |
| 361 | class ServerSentEvent: |
| 362 | def __init__( |
| 363 | self, |
| 364 | *, |
| 365 | event: str | None = None, |
| 366 | data: str | None = None, |
| 367 | id: str | None = None, |
| 368 | retry: int | None = None, |
| 369 | raw: list[str] | None = None, |
| 370 | ) -> None: |
| 371 | if data is None: |
| 372 | data = "" |
| 373 | |
| 374 | self._id = id |
| 375 | self._data = data |
| 376 | self._event = event or None |
| 377 | self._retry = retry |
| 378 | self._raw = raw if raw is not None else [] |
| 379 | |
| 380 | @property |
| 381 | def event(self) -> str | None: |
| 382 | return self._event |
| 383 | |
| 384 | @property |
| 385 | def id(self) -> str | None: |
| 386 | return self._id |
| 387 | |
| 388 | @property |
| 389 | def retry(self) -> int | None: |
| 390 | return self._retry |
| 391 | |
| 392 | @property |
| 393 | def data(self) -> str: |
| 394 | return self._data |
| 395 | |
| 396 | @property |
| 397 | def raw(self) -> list[str]: |
| 398 | """The original wire lines this event was decoded from, without trailing newlines. |
| 399 | |
| 400 | Includes SSE fields the decoder does not otherwise model (comment lines, |
| 401 | unknown fields). Empty for events that were constructed rather than decoded. |
| 402 | """ |
| 403 | return self._raw |
| 404 | |
| 405 | def json(self) -> Any: |
| 406 | return json.loads(self.data) |
| 407 | |
| 408 | @override |
| 409 | def __repr__(self) -> str: |
| 410 | return f"ServerSentEvent(event={self.event}, data={self.data}, id={self.id}, retry={self.retry})" |
| 411 | |
| 412 | |
| 413 | class SSEDecoder: |
no outgoing calls
no test coverage detected