Merge branch 'master' of github.com:davidhalter/jedi

This commit is contained in:
Dave Halter
2017-11-05 15:05:22 +01:00
6 changed files with 26 additions and 4 deletions
+2 -1
View File
@@ -44,6 +44,7 @@ Mathias Rav (@Mortal) <rav@cs.au.dk>
Daniel Fiterman (@dfit99) <fitermandaniel2@gmail.com> Daniel Fiterman (@dfit99) <fitermandaniel2@gmail.com>
Simon Ruggier (@sruggier) Simon Ruggier (@sruggier)
Élie Gouzien (@ElieGouzien) Élie Gouzien (@ElieGouzien)
Robin Roth (@robinro)
Malte Plath (@langsamer)
Note: (@user) means a github user name. Note: (@user) means a github user name.
+1 -1
View File
@@ -222,7 +222,7 @@ A little history
The Star Wars Jedi are awesome. My Jedi software tries to imitate a little bit 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 the precognition the Jedi have. There's even an awesome `scene
<http://www.youtube.com/watch?v=5BDO3pyavOY>`_ of Monty Python Jedis :-). <https://youtu.be/yHRJLIf7wMU>`_ of Monty Python Jedis :-).
But actually the name hasn't so much to do with Star Wars. It's part of my But actually the name hasn't so much to do with Star Wars. It's part of my
second name. second name.
+2
View File
@@ -249,6 +249,8 @@ class Evaluator(object):
else: else:
i = trailer.parent.children.index(trailer) i = trailer.parent.children.index(trailer)
to_evaluate = trailer.parent.children[:i] to_evaluate = trailer.parent.children[:i]
if to_evaluate[0] == 'await':
to_evaluate.pop(0)
context_set = context.eval_node(to_evaluate[0]) context_set = context.eval_node(to_evaluate[0])
for trailer in to_evaluate[1:]: for trailer in to_evaluate[1:]:
context_set = eval_trailer(context, context_set, trailer) context_set = eval_trailer(context, context_set, trailer)
+9 -2
View File
@@ -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([])``. 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 We use this function for two purposes. Given an expression ``bar.foo``,
# ignore it, It's not what we want anyway. Or document it better? 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 trailer = leaf.parent
# The leaf may not be the last or first child, because there exist three # The leaf may not be the last or first child, because there exist three
@@ -89,6 +92,10 @@ def evaluate_call_of_leaf(context, leaf, cut_own_trailer=False):
base = power.children[0] base = power.children[0]
trailers = power.children[1:cut] trailers = power.children[1:cut]
if base == 'await':
base = trailers[0]
trailers = trailers[1:]
values = context.eval_node(base) values = context.eval_node(base)
from jedi.evaluate.syntax_tree import eval_trailer from jedi.evaluate.syntax_tree import eval_trailer
for trailer in trailers: for trailer in trailers:
+1
View File
@@ -31,6 +31,7 @@ setup(name='jedi',
long_description=readme, long_description=readme,
packages=find_packages(exclude=['test']), packages=find_packages(exclude=['test']),
install_requires=install_requires, install_requires=install_requires,
extras_require={'dev': ['docopt']},
package_data={'jedi': ['evaluate/compiled/fake/*.pym']}, package_data={'jedi': ['evaluate/compiled/fake/*.pym']},
platforms=['any'], platforms=['any'],
classifiers=[ classifiers=[
+11
View File
@@ -23,3 +23,14 @@ async def x2():
async with open('asdf') as f: async with open('asdf') as f:
#? ['readlines'] #? ['readlines']
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)