""" Named Params: >>> def a(abc): pass ... >>> a(abc=3) # <- this stuff (abc) """ def a(abc): pass #? 5 ['abc='] a(abc) def a(*some_args, **some_kwargs): pass #? 11 [] a(some_args) #? 13 [] a(some_kwargs) def multiple(foo, bar): pass #? 17 ['bar='] multiple(foo, bar) #? ['bar='] multiple(foo, bar my_lambda = lambda lambda_param: lambda_param + 1 #? 22 ['lambda_param='] my_lambda(lambda_param) # __call__ / __init__ class Test(object): def __init__(self, hello_other): pass def __call__(self, hello): pass def test(self, blub): pass #? 10 ['hello_other='] Test(hello=) #? 12 ['hello='] Test()(hello=) #? 11 [] Test()(self=) #? 16 [] Test().test(self=) #? 16 ['blub='] Test().test(blub=) # builtins #? 12 [] any(iterable=) def foo(xyz): pass #? 7 ['xyz='] foo(xyz) # No completion should be possible if it's not a simple name #? 17 [] x = " "; foo(x.xyz) #? 17 [] x = " "; foo([xyz) #? 20 [] x = " "; foo(z[f,xyz) #? 18 [] x = " "; foo(z[xyz) #? 20 [] x = " "; foo(xyz[xyz) #? 20 [] x = " "; foo(xyz[(xyz) #? 8 ['xyz='] @foo(xyz) def x(): pass @str #? 8 ['xyz='] @foo(xyz) def x(): pass