Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def push(self, s, insert_into_history=True):
# curses.raw(True) prevents C-c from causing a SIGINT
curses.raw(False)
try:
return repl.Repl.push(self, s, insert_into_history)
except SystemExit as e:
# Avoid a traceback on e.g. quit()
self.do_exit = True
self.exit_value = e.args
return False
finally:
curses.raw(True)
def push(self, s, insert_into_history=True):
# curses.raw(True) prevents C-c from causing a SIGINT
curses.raw(True)
try:
return Repl.push(self, s, insert_into_history)
finally:
curses.raw(True)
def push(self, s, insert_into_history=True):
# Restore the original SIGINT handler. This is needed to be able
# to break out of infinite loops. If the interpreter itself
# sees this it prints 'KeyboardInterrupt' and returns (good).
orig_handler = signal.getsignal(signal.SIGINT)
signal.signal(signal.SIGINT, signal.default_int_handler)
# Pretty blindly adapted from bpython.cli
try:
return repl.Repl.push(self, s, insert_into_history)
except SystemExit as e:
self.exit_value = e.args
raise urwid.ExitMainLoop()
except KeyboardInterrupt:
# KeyboardInterrupt happened between the except block around
# user code execution and this code. This should be rare,
# but make sure to not kill bpython here, so leaning on
# ctrl+c to kill buggy code running inside bpython is safe.
self.keyboard_interrupt()
finally:
signal.signal(signal.SIGINT, orig_handler)