summaryrefslogtreecommitdiffstats
path: root/ptpython
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2021-11-08 13:25:29 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2021-11-08 13:25:29 +0000
commit94d2563a3569ceda457cedd45ab406129557e2cc (patch)
treeb9d6c077349a57688ffbc934e80af6f54424652e /ptpython
parentReleasing debian version 3.0.19-2. (diff)
downloadptpython-94d2563a3569ceda457cedd45ab406129557e2cc.tar.xz
ptpython-94d2563a3569ceda457cedd45ab406129557e2cc.zip
Merging upstream version 3.0.20.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ptpython')
-rw-r--r--ptpython/completer.py11
-rw-r--r--ptpython/py.typed0
-rw-r--r--ptpython/repl.py15
3 files changed, 24 insertions, 2 deletions
diff --git a/ptpython/completer.py b/ptpython/completer.py
index 285398c..51a4086 100644
--- a/ptpython/completer.py
+++ b/ptpython/completer.py
@@ -505,6 +505,10 @@ class DictionaryCompleter(Completer):
display=f"[{k_repr}]",
display_meta=abbr_meta(self._do_repr(result[k])),
)
+ except KeyError:
+ # `result[k]` lookup failed. Trying to complete
+ # broken object.
+ pass
except ReprFailedError:
pass
@@ -521,6 +525,10 @@ class DictionaryCompleter(Completer):
display=f"[{k_repr}]",
display_meta=abbr_meta(self._do_repr(result[k])),
)
+ except KeyError:
+ # `result[k]` lookup failed. Trying to complete
+ # broken object.
+ pass
except ReprFailedError:
pass
@@ -545,9 +553,8 @@ class DictionaryCompleter(Completer):
def get_suffix(name: str) -> str:
try:
obj = getattr(result, name, None)
- if inspect.isfunction(obj):
+ if inspect.isfunction(obj) or inspect.ismethod(obj):
return "()"
-
if isinstance(obj, dict):
return "{}"
if isinstance(obj, (list, tuple)):
diff --git a/ptpython/py.typed b/ptpython/py.typed
deleted file mode 100644
index e69de29..0000000
--- a/ptpython/py.typed
+++ /dev/null
diff --git a/ptpython/repl.py b/ptpython/repl.py
index 220c673..b55b5d5 100644
--- a/ptpython/repl.py
+++ b/ptpython/repl.py
@@ -135,6 +135,12 @@ class PythonRepl(PythonInput):
text = self.read()
except EOFError:
return
+ except BaseException as e:
+ # Something went wrong while reading input.
+ # (E.g., a bug in the completer that propagates. Don't
+ # crash the REPL.)
+ traceback.print_exc()
+ continue
# Run it; display the result (or errors if applicable).
self.run_and_show_expression(text)
@@ -192,6 +198,12 @@ class PythonRepl(PythonInput):
text = await loop.run_in_executor(None, self.read)
except EOFError:
return
+ except BaseException:
+ # Something went wrong while reading input.
+ # (E.g., a bug in the completer that propagates. Don't
+ # crash the REPL.)
+ traceback.print_exc()
+ continue
# Eval.
await self.run_and_show_expression_async(text)
@@ -333,6 +345,9 @@ class PythonRepl(PythonInput):
# not used.
try:
import black
+
+ if not hasattr(black, "Mode"):
+ raise ImportError
except ImportError:
pass # no Black package in your installation
else: