51 lines
1.3 KiB
Python
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)
|