Skip to content

Commit

Permalink
Merge pull request ipython#13332 from Carreau/auto-backport-of-pr-133…
Browse files Browse the repository at this point in the history
…11-on-7.x

Auto backport of pr 13311 on 7.x
  • Loading branch information
Carreau committed Nov 26, 2021
2 parents 5b8cff4 + b2061d8 commit fad75ee
Showing 1 changed file with 8 additions and 21 deletions.
29 changes: 8 additions & 21 deletions IPython/terminal/debugger.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import asyncio
import signal
import sys
import threading

from IPython.core.debugger import Pdb

from IPython.core.completer import IPCompleter
from .ptutils import IPythonPTCompleter
from .shortcuts import create_ipython_shortcuts, suspend_to_bg, cursor_in_leading_ws
Expand All @@ -18,6 +16,7 @@
from prompt_toolkit.shortcuts.prompt import PromptSession
from prompt_toolkit.enums import EditingMode
from prompt_toolkit.formatted_text import PygmentsTokens
from concurrent.futures import ThreadPoolExecutor

from prompt_toolkit import __version__ as ptk_version
PTK3 = ptk_version.startswith('3.')
Expand All @@ -30,6 +29,7 @@ def __init__(self, *args, pt_session_options=None, **kwargs):
Pdb.__init__(self, *args, **kwargs)
self._ptcomp = None
self.pt_init(pt_session_options)
self.thread_executor = ThreadPoolExecutor(1)

def pt_init(self, pt_session_options=None):
"""Initialize the prompt session and the prompt loop
Expand Down Expand Up @@ -102,7 +102,7 @@ def cmdloop(self, intro=None):
if intro is not None:
self.intro = intro
if self.intro:
self.stdout.write(str(self.intro)+"\n")
print(self.intro, file=self.stdout)
stop = None
while not stop:
if self.cmdqueue:
Expand All @@ -112,24 +112,11 @@ def cmdloop(self, intro=None):
self._ptcomp.ipy_completer.global_namespace = self.curframe.f_globals

# Run the prompt in a different thread.
line = ''
keyboard_interrupt = False

def in_thread():
nonlocal line, keyboard_interrupt
try:
line = self.pt_app.prompt()
except EOFError:
line = 'EOF'
except KeyboardInterrupt:
keyboard_interrupt = True

th = threading.Thread(target=in_thread)
th.start()
th.join()

if keyboard_interrupt:
raise KeyboardInterrupt
try:
line = self.thread_executor.submit(self.pt_app.prompt).result()
except EOFError:
line = "EOF"

line = self.precmd(line)
stop = self.onecmd(line)
stop = self.postcmd(stop, line)
Expand Down

0 comments on commit fad75ee

Please sign in to comment.