Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ _build
docs/man/*.gz
docs/source/api/generated
docs/source/config/options
docs/source/config/shortcuts/*.csv
docs/source/interactive/magics-generated.txt
docs/gh-pages
jupyter_notebook/notebook/static/mathjax
Expand Down
16 changes: 10 additions & 6 deletions IPython/core/completer.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,9 @@
else:
PROTECTABLES = ' ()[]{}?=\\|;:\'#*"^&'

# Protect against returning an enormous number of completions which the frontend
# may have trouble processing.
MATCHES_LIMIT = 500

_deprecation_readline_sentinel = object()

Expand Down Expand Up @@ -1944,7 +1947,8 @@ def _complete(self, *, cursor_line, cursor_pos, line_buffer=None, text=None,
for meth in (self.unicode_name_matches, back_latex_name_matches, back_unicode_name_matches):
name_text, name_matches = meth(base_text)
if name_text:
return name_text, name_matches, [meth.__qualname__]*len(name_matches), ()
return name_text, name_matches[:MATCHES_LIMIT], \
[meth.__qualname__]*min(len(name_matches), MATCHES_LIMIT), ()


# If no line buffer is given, assume the input text is all there was
Expand All @@ -1956,11 +1960,10 @@ def _complete(self, *, cursor_line, cursor_pos, line_buffer=None, text=None,

# Do magic arg matches
for matcher in self.magic_arg_matchers:
matches = [(m, matcher.__qualname__) for m in matcher(line_buffer)]
matches = list(matcher(line_buffer))[:MATCHES_LIMIT]
if matches:
matches2 = [m[0] for m in matches]
origins = [m[1] for m in matches]
return text, matches2, origins, ()
origins = [matcher.__qualname__] * len(matches)
return text, matches, origins, ()

# Start with a clean slate of completions
matches = []
Expand Down Expand Up @@ -2007,7 +2010,8 @@ def _complete(self, *, cursor_line, cursor_pos, line_buffer=None, text=None,
seen.add(t)

_filtered_matches = sorted(
set(filtered_matches), key=lambda x: completions_sorting_key(x[0]))
set(filtered_matches), key=lambda x: completions_sorting_key(x[0]))\
[:MATCHES_LIMIT]

_matches = [m[0] for m in _filtered_matches]
origins = [m[1] for m in _filtered_matches]
Expand Down