bpo-39314: Closes parenthesis when autocompleting for functions that take no arguments (GH-20562)
This commit is contained in:
parent
0c4f0f3b29
commit
bd4a3f2145
|
@ -31,6 +31,7 @@ Notes:
|
|||
|
||||
import atexit
|
||||
import builtins
|
||||
import inspect
|
||||
import __main__
|
||||
|
||||
__all__ = ["Completer"]
|
||||
|
@ -96,7 +97,13 @@ class Completer:
|
|||
|
||||
def _callable_postfix(self, val, word):
|
||||
if callable(val):
|
||||
word = word + "("
|
||||
word += "("
|
||||
try:
|
||||
if not inspect.signature(val).parameters:
|
||||
word += ")"
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
return word
|
||||
|
||||
def global_matches(self, text):
|
||||
|
|
|
@ -40,12 +40,12 @@ class TestRlcompleter(unittest.TestCase):
|
|||
|
||||
# test with a customized namespace
|
||||
self.assertEqual(self.completer.global_matches('CompleteM'),
|
||||
['CompleteMe('])
|
||||
['CompleteMe()'])
|
||||
self.assertEqual(self.completer.global_matches('eg'),
|
||||
['egg('])
|
||||
# XXX: see issue5256
|
||||
self.assertEqual(self.completer.global_matches('CompleteM'),
|
||||
['CompleteMe('])
|
||||
['CompleteMe()'])
|
||||
|
||||
def test_attr_matches(self):
|
||||
# test with builtins namespace
|
||||
|
@ -64,7 +64,7 @@ class TestRlcompleter(unittest.TestCase):
|
|||
['CompleteMe.spam'])
|
||||
self.assertEqual(self.completer.attr_matches('Completeme.egg'), [])
|
||||
self.assertEqual(self.completer.attr_matches('CompleteMe.'),
|
||||
['CompleteMe.mro(', 'CompleteMe.spam'])
|
||||
['CompleteMe.mro()', 'CompleteMe.spam'])
|
||||
self.assertEqual(self.completer.attr_matches('CompleteMe._'),
|
||||
['CompleteMe._ham'])
|
||||
matches = self.completer.attr_matches('CompleteMe.__')
|
||||
|
@ -134,7 +134,7 @@ class TestRlcompleter(unittest.TestCase):
|
|||
# No opening bracket "(" because we overrode the built-in class
|
||||
self.assertEqual(completer.complete('memoryview', 0), 'memoryview')
|
||||
self.assertIsNone(completer.complete('memoryview', 1))
|
||||
self.assertEqual(completer.complete('Ellipsis', 0), 'Ellipsis(')
|
||||
self.assertEqual(completer.complete('Ellipsis', 0), 'Ellipsis()')
|
||||
self.assertIsNone(completer.complete('Ellipsis', 1))
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
:class:`rlcompleter.Completer` and the standard Python shell now close the
|
||||
parenthesis for functions that take no arguments. Patch contributed by Rémi
|
||||
Lapeyre.
|
Loading…
Reference in New Issue