From 88cf592c9534c00776789fb3c221334dbdd66d64 Mon Sep 17 00:00:00 2001 From: Robin Roth Date: Sat, 28 Oct 2017 13:34:25 +0200 Subject: [PATCH 1/4] Make goto work with await Created together with @langsamer and @davidhalter --- AUTHORS.txt | 3 ++- jedi/evaluate/__init__.py | 2 ++ jedi/evaluate/helpers.py | 4 ++++ test/completion/async_.py | 11 +++++++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index 52204a8b..29f46765 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -44,6 +44,7 @@ Mathias Rav (@Mortal) Daniel Fiterman (@dfit99) Simon Ruggier (@sruggier) Élie Gouzien (@ElieGouzien) - +Robin Roth (@robinro) +Malte Plath (@langsamer) Note: (@user) means a github user name. diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index d1453f32..20461071 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -249,6 +249,8 @@ class Evaluator(object): else: i = trailer.parent.children.index(trailer) to_evaluate = trailer.parent.children[:i] + if to_evaluate[0] == 'await': + to_evaluate.pop(0) context_set = context.eval_node(to_evaluate[0]) for trailer in to_evaluate[1:]: context_set = eval_trailer(context, context_set, trailer) diff --git a/jedi/evaluate/helpers.py b/jedi/evaluate/helpers.py index 6652287b..44522f8b 100644 --- a/jedi/evaluate/helpers.py +++ b/jedi/evaluate/helpers.py @@ -89,6 +89,10 @@ def evaluate_call_of_leaf(context, leaf, cut_own_trailer=False): base = power.children[0] trailers = power.children[1:cut] + if base == 'await': + base = trailers[0] + trailers = trailers[1:] + values = context.eval_node(base) from jedi.evaluate.syntax_tree import eval_trailer for trailer in trailers: diff --git a/test/completion/async_.py b/test/completion/async_.py index c6035e37..b2202137 100644 --- a/test/completion/async_.py +++ b/test/completion/async_.py @@ -23,3 +23,14 @@ async def x2(): async with open('asdf') as f: #? ['readlines'] f.readlines + +class A(): + @staticmethod + async def b(c=1, d=2): + return 1 + +#! 9 ['def b'] +await A.b() + +#! 11 ['param d=2'] +await A.b(d=3) From f13b4e800a55e7a4a991456c32daf4190360b148 Mon Sep 17 00:00:00 2001 From: Robin Roth Date: Sat, 28 Oct 2017 14:14:44 +0200 Subject: [PATCH 2/4] Install docopt for dev setup --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 21db855a..72df7c53 100755 --- a/setup.py +++ b/setup.py @@ -31,6 +31,7 @@ setup(name='jedi', long_description=readme, packages=find_packages(exclude=['test']), install_requires=install_requires, + extras_require={'dev': ['docopt']}, package_data={'jedi': ['evaluate/compiled/fake/*.pym']}, platforms=['any'], classifiers=[ From 1428b67c4d315c5b7136a1a98c6a832068eb4525 Mon Sep 17 00:00:00 2001 From: langsamer <25152973+langsamer@users.noreply.github.com> Date: Sun, 29 Oct 2017 02:00:28 +0200 Subject: [PATCH 3/4] Replace TODO by explanation of the parameter 'cut_own_trailer' (it cannot be dropped!) (#978) --- jedi/evaluate/helpers.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/jedi/evaluate/helpers.py b/jedi/evaluate/helpers.py index 44522f8b..3b21e01b 100644 --- a/jedi/evaluate/helpers.py +++ b/jedi/evaluate/helpers.py @@ -58,8 +58,11 @@ def evaluate_call_of_leaf(context, leaf, cut_own_trailer=False): If you're using the leaf, e.g. the bracket `)` it will return ``list([])``. - # TODO remove cut_own_trailer option, since its always used with it. Just - # ignore it, It's not what we want anyway. Or document it better? + We use this function for two purposes. Given an expression ``bar.foo``, + we may want to + - infer the type of ``foo`` to offer completions after foo + - infer the type of ``bar`` to be able to jump to the definition of foo + The option ``cut_own_trailer`` must be set to true for the second purpose. """ trailer = leaf.parent # The leaf may not be the last or first child, because there exist three From 9cbcf00aa2762c23b0884dd513bacc4113305300 Mon Sep 17 00:00:00 2001 From: Samuel Bishop Date: Mon, 30 Oct 2017 11:55:50 +0800 Subject: [PATCH 4/4] Fix dead link. Hopefully this is close enough to the original video. --- docs/docs/features.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/features.rst b/docs/docs/features.rst index f00e4203..aef32708 100644 --- a/docs/docs/features.rst +++ b/docs/docs/features.rst @@ -222,7 +222,7 @@ A little history The Star Wars Jedi are awesome. My Jedi software tries to imitate a little bit of the precognition the Jedi have. There's even an awesome `scene -`_ of Monty Python Jedis :-). +`_ of Monty Python Jedis :-). But actually the name hasn't so much to do with Star Wars. It's part of my second name.