Skip to content

Commit dc5e87f

Browse files
committed
Log exceptions from auto completers
Also do not catch KeyboardInterrupt and SystemExit. Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
1 parent 3cdc732 commit dc5e87f

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

bpython/autocomplete.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import abc
3030
import glob
3131
import keyword
32+
import logging
3233
import os
3334
import re
3435
import rlcompleter
@@ -609,13 +610,18 @@ def get_completer(completers, cursor_offset, line, **kwargs):
609610
double underscore methods like __len__ in method signatures
610611
"""
611612

612-
try:
613-
for completer in completers:
613+
for completer in completers:
614+
try:
614615
matches = completer.matches(cursor_offset, line, **kwargs)
615-
if matches is not None:
616-
return sorted(matches), (completer if matches else None)
617-
except:
618-
pass
616+
except Exception as e:
617+
# Instead of crashing the UI, log exceptions from autocompleters.
618+
logger = logging.getLogger(__name__)
619+
logger.debug(
620+
'Completer {} failed with unhandled exception: {}'.format(
621+
completer, e))
622+
continue
623+
if matches is not None:
624+
return sorted(matches), (completer if matches else None)
619625

620626
return [], None
621627

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy