kernel_sidecar/jupyter/iopub_content/
stream.rs

1/*
2https://jupyter-client.readthedocs.io/en/latest/messaging.html#streams-stdout-stderr-etc
3*/
4use crate::notebook::list_or_string_to_string;
5use bytes::Bytes;
6use serde::{Deserialize, Serialize};
7
8#[derive(Clone, Serialize, PartialEq, Deserialize, Debug)]
9#[serde(rename_all = "lowercase")]
10pub enum StreamName {
11    Stdout,
12    Stderr,
13}
14
15#[allow(dead_code)]
16#[derive(Clone, Serialize, PartialEq, Deserialize, Debug)]
17pub struct Stream {
18    pub name: StreamName,
19    #[serde(deserialize_with = "list_or_string_to_string")]
20    pub text: String,
21}
22
23impl From<Bytes> for Stream {
24    fn from(bytes: Bytes) -> Self {
25        serde_json::from_slice(&bytes).expect("Failed to deserialize Stream")
26    }
27}