diff options
author | Martin Panter <vadmium+py@gmail.com> | 2015-11-23 23:50:26 (GMT) |
---|---|---|
committer | Martin Panter <vadmium+py@gmail.com> | 2015-11-23 23:50:26 (GMT) |
commit | ed92910852ad7a3006bc264ef6cb061868e5a82c (patch) | |
tree | 8b56a31fff59f7fffbdb0f5cb5218025eda534ca /Lib/rlcompleter.py | |
parent | bf7b9ede1a7264009f5f35d357112ed3c3c38209 (diff) | |
download | cpython-ed92910852ad7a3006bc264ef6cb061868e5a82c.zip cpython-ed92910852ad7a3006bc264ef6cb061868e5a82c.tar.gz cpython-ed92910852ad7a3006bc264ef6cb061868e5a82c.tar.bz2 |
Issue #25663: Make rlcompleter avoid duplicate global names
Diffstat (limited to 'Lib/rlcompleter.py')
-rw-r--r-- | Lib/rlcompleter.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/Lib/rlcompleter.py b/Lib/rlcompleter.py index be8aee0..378f5aa 100644 --- a/Lib/rlcompleter.py +++ b/Lib/rlcompleter.py @@ -103,13 +103,16 @@ class Completer: """ import keyword matches = [] + seen = {"__builtins__"} n = len(text) for word in keyword.kwlist: if word[:n] == text: + seen.add(word) matches.append(word) - for nspace in [builtins.__dict__, self.namespace]: + for nspace in [self.namespace, builtins.__dict__]: for word, val in nspace.items(): - if word[:n] == text and word != "__builtins__": + if word[:n] == text and word not in seen: + seen.add(word) matches.append(self._callable_postfix(val, word)) return matches |