0

I'm wondering if jupyter_client is able to return code sent in to the execute function as HTML somehow?

I'm also wondering if I can do the same with stdout and stderr, as well as markdown?

If jupyter_client cannot do this, is there a jupyter library that does?

Hairy
  • 393
  • 1
  • 10

1 Answers1

1

Adapting the solution from here might help. This adaptation takes the request of 1+1 or msg_id=c.execute('1+1') and returns the result formatted in html as bold red text with this display(HTML('<div style="color:Red;"><b>' + res + '</b></div>')) using IPython's display module. The kernel info status has been commented out but left for reference.

from subprocess import PIPE
from jupyter_client import KernelManager
from IPython.display import display, HTML

from queue import Empty         
km = KernelManager(kernel_name='python3')
km.start_kernel()
# print(km.is_alive())
try:
    c = km.client()
    msg_id=c.execute('1+1')
    state='busy'
    data={}
    while state!='idle' and c.is_alive():
        try:
            msg=c.get_iopub_msg(timeout=1)
            if not 'content' in msg: continue
            content = msg['content']
            if 'data' in content:
                data=content['data']
            if 'execution_state' in content:
                state=content['execution_state']
        except Empty:
            pass
    res = data['text/plain']
#     print(data)
    display(HTML('<div style="color:Red;"><b>' + res + '</b></div>'))
except KeyboardInterrupt:
    pass
finally:
    km.shutdown_kernel()
#     print(km.is_alive())

Also see here for more info.

jayveesea
  • 2,886
  • 13
  • 25