Thun/docs/jupyter_kernel/joy_kernel.py

51 lines
1.3 KiB
Python

from ipykernel.kernelbase import Kernel
from joy.library import initialize
from joy.joy import run
from joy.utils.stack import stack_to_string
class JoyKernel(Kernel):
implementation = 'Joypy'
implementation_version = '1.0'
language = 'Joy'
language_version = '0.1'
language_info = {
'name': 'Joy',
'mimetype': 'text/plain',
'file_extension': '.joy',
}
banner = "Echo kernel - as useful as a parrot"
def __init__(self, *a, **b):
self.D = initialize()
self.S = ()
super(JoyKernel, self).__init__(*a, **b)
def do_execute(
self,
code,
silent,
store_history=True,
user_expressions=None,
allow_stdin=False,
):
self.S = run(code, self.S, self.D)[0]
if not silent:
stream_content = {
'name': 'stdout',
'text': stack_to_string(self.S),
}
self.send_response(self.iopub_socket, 'stream', stream_content)
return {'status': 'ok',
# The base class increments the execution count
'execution_count': self.execution_count,
'payload': [],
'user_expressions': {},
}
if __name__ == '__main__':
from ipykernel.kernelapp import IPKernelApp
IPKernelApp.launch_instance(kernel_class=JoyKernel)