Merging upstream version 3.0.20.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-09 18:27:47 +01:00
parent d06f6264af
commit 29560d1aa1
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
16 changed files with 658 additions and 152 deletions

View file

@ -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)):

View file

View file

@ -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: