kernel_gateway icon indicating copy to clipboard operation
kernel_gateway copied to clipboard

Add support for display_data messages in HTTP outputs

Open teeler opened this issue 5 months ago • 1 comments

Problem

I'd like IPython.display.display to work for all the supported mime types.

Repro:


# GET /
from IPython.display import display
display({"a": 1})

Expected output:

{"a": 1}

Actual output:

(nothing)

Proposed Solution

I think adding a bit of code in the notebook handler that mimics what the notebook frontend does would be sufficient. Two places in particular

  • https://github.com/jupyter-server/kernel_gateway/blob/main/kernel_gateway/notebook_http/handlers.py#L127 needs to not drop display_data (and accumulate them appropriately)
  • https://github.com/jupyter-server/kernel_gateway/blob/main/kernel_gateway/notebook_http/handlers.py#L87 needs to also convert them to a reasonable result (ie presenting mimetypes appropriately for an HTML context)

Additional context

This seems like a common thing that would need to be done either by javascript frontends or python HTML-serving ones. I haven't seen if theres any code available for reuse but am curious if there is any.

I'm happy to take a stab at implementing a bit of this - PR's OK?

teeler avatar Sep 04 '24 23:09 teeler