From e3b18c29478a24e543a2071ef8f8cf6c852c4de9 Mon Sep 17 00:00:00 2001 From: Ethan Blackwood Date: Mon, 30 Jun 2025 23:43:13 -0400 Subject: [PATCH 1/2] Set newline to \n to avoid breaking Linux --- remote_ikernel/kernel.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/remote_ikernel/kernel.py b/remote_ikernel/kernel.py index 6ad68e1..153d5a1 100755 --- a/remote_ikernel/kernel.py +++ b/remote_ikernel/kernel.py @@ -520,6 +520,7 @@ def tunnel_connection(self): # connection info should have the ports being used tunnel_command = self.tunnel_cmd.format(**self.connection_info) tunnel = pexpect_spawn(tunnel_command, logfile=self.log) + tunnel.linesep = "\n" check_password(tunnel) self.log.info( @@ -606,6 +607,7 @@ def _spawn(self, command, timeout=600): """ if self.connection is None: self.connection = pexpect_spawn(command, timeout=timeout, logfile=self.log) + self.connection.linesep = "\n" else: self.connection.sendline(command) From 6001d43e9fa76b17721c736fb9f10ba9aad55065 Mon Sep 17 00:00:00 2001 From: Ethan Blackwood Date: Tue, 12 Aug 2025 13:47:11 -0400 Subject: [PATCH 2/2] Implement sendintr for PopenSpawn adapter to not error on Ctrl-C --- remote_ikernel/kernel.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/remote_ikernel/kernel.py b/remote_ikernel/kernel.py index 153d5a1..7a92ff3 100755 --- a/remote_ikernel/kernel.py +++ b/remote_ikernel/kernel.py @@ -13,6 +13,7 @@ import logging import os import re +import signal import subprocess import time import uuid @@ -27,6 +28,10 @@ class pexpect_spawn(PopenSpawn): def isalive(self): return self.proc.poll() is None + + def sendintr(self): + """sendintr does not exist on PopenSpawn, use kill instead""" + self.kill(signal.SIGINT) from tornado.log import LogFormatter