summaryrefslogtreecommitdiffstats
path: root/contrib/python/ipython/py3/IPython/terminal/debugger.py
diff options
context:
space:
mode:
authorrobot-contrib <[email protected]>2022-05-18 00:43:36 +0300
committerrobot-contrib <[email protected]>2022-05-18 00:43:36 +0300
commit9e5f436a8b2a27bcc7802e443ea3ef3e41a82a75 (patch)
tree78b522cab9f76336e62064d4d8ff7c897659b20e /contrib/python/ipython/py3/IPython/terminal/debugger.py
parent8113a823ffca6451bb5ff8f0334560885a939a24 (diff)
Update contrib/python/ipython/py3 to 8.3.0
ref:e84342d4d30476f9148137f37fd0c6405fd36f55
Diffstat (limited to 'contrib/python/ipython/py3/IPython/terminal/debugger.py')
-rw-r--r--contrib/python/ipython/py3/IPython/terminal/debugger.py55
1 files changed, 38 insertions, 17 deletions
diff --git a/contrib/python/ipython/py3/IPython/terminal/debugger.py b/contrib/python/ipython/py3/IPython/terminal/debugger.py
index db8ecac0d26..8448d96370d 100644
--- a/contrib/python/ipython/py3/IPython/terminal/debugger.py
+++ b/contrib/python/ipython/py3/IPython/terminal/debugger.py
@@ -1,21 +1,19 @@
import asyncio
-import signal
+import os
import sys
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
+from .shortcuts import create_ipython_shortcuts
+from . import embed
-from prompt_toolkit.enums import DEFAULT_BUFFER
-from prompt_toolkit.filters import (Condition, has_focus, has_selection,
- vi_insert_mode, emacs_insert_mode)
-from prompt_toolkit.key_binding import KeyBindings
-from prompt_toolkit.key_binding.bindings.completion import display_completions_like_readline
+from pathlib import Path
from pygments.token import Token
from prompt_toolkit.shortcuts.prompt import PromptSession
from prompt_toolkit.enums import EditingMode
from prompt_toolkit.formatted_text import PygmentsTokens
+from prompt_toolkit.history import InMemoryHistory, FileHistory
from concurrent.futures import ThreadPoolExecutor
from prompt_toolkit import __version__ as ptk_version
@@ -34,22 +32,20 @@ class TerminalPdb(Pdb):
def pt_init(self, pt_session_options=None):
"""Initialize the prompt session and the prompt loop
and store them in self.pt_app and self.pt_loop.
-
+
Additional keyword arguments for the PromptSession class
can be specified in pt_session_options.
"""
if pt_session_options is None:
pt_session_options = {}
-
+
def get_prompt_tokens():
return [(Token.Prompt, self.prompt)]
if self._ptcomp is None:
- compl = IPCompleter(shell=self.shell,
- namespace={},
- global_namespace={},
- parent=self.shell,
- )
+ compl = IPCompleter(
+ shell=self.shell, namespace={}, global_namespace={}, parent=self.shell
+ )
# add a completer for all the do_ methods
methods_names = [m[3:] for m in dir(self) if m.startswith("do_")]
@@ -62,11 +58,24 @@ class TerminalPdb(Pdb):
self._ptcomp = IPythonPTCompleter(compl)
+ # setup history only when we start pdb
+ if self.shell.debugger_history is None:
+ if self.shell.debugger_history_file is not None:
+
+ p = Path(self.shell.debugger_history_file).expanduser()
+ if not p.exists():
+ p.touch()
+ self.debugger_history = FileHistory(os.path.expanduser(str(p)))
+ else:
+ self.debugger_history = InMemoryHistory()
+ else:
+ self.debugger_history = self.shell.debugger_history
+
options = dict(
message=(lambda: PygmentsTokens(get_prompt_tokens())),
editing_mode=getattr(EditingMode, self.shell.editing_mode.upper()),
key_bindings=create_ipython_shortcuts(self.shell),
- history=self.shell.debugger_history,
+ history=self.debugger_history,
completer=self._ptcomp,
enable_history_search=True,
mouse_support=self.shell.mouse_support,
@@ -124,6 +133,18 @@ class TerminalPdb(Pdb):
except Exception:
raise
+ def do_interact(self, arg):
+ ipshell = embed.InteractiveShellEmbed(
+ config=self.shell.config,
+ banner1="*interactive*",
+ exit_msg="*exiting interactive console...*",
+ )
+ global_ns = self.curframe.f_globals
+ ipshell(
+ module=sys.modules.get(global_ns["__name__"], None),
+ local_ns=self.curframe_locals,
+ )
+
def set_trace(frame=None):
"""
@@ -141,6 +162,6 @@ if __name__ == '__main__':
# happened after hitting "c", this is needed in order to
# be able to quit the debugging session (see #9950).
old_trace_dispatch = pdb.Pdb.trace_dispatch
- pdb.Pdb = TerminalPdb
- pdb.Pdb.trace_dispatch = old_trace_dispatch
+ pdb.Pdb = TerminalPdb # type: ignore
+ pdb.Pdb.trace_dispatch = old_trace_dispatch # type: ignore
pdb.main()