Jedi: pandas read_csv fuction crashes jedi

Created on 19 Dec 2017  路  11Comments  路  Source: davidhalter/jedi

Trying to completing this pandas code crashes Jedi:

import jedi;jedi.Script('''import pandas; pandas.read_csv().m''').completions()

It also crashes with read_json and read_table (likely others with a similar code path

It's the same crash on 0.11 and master.

I think it would get the correct completions from the docs if it didn't crash.

pandas.__version__ '0.21.1'

TraceBack:

Python 3.6.3 |Anaconda custom (64-bit)| (default, Nov 20 2017, 20:41:42) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import jedi;jedi.Script('''import pandas; pandas.read_csv().m''').completions()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/bcolsen/jedi/jedi/api/__init__.py", line 158, in completions
    completions = completion.completions()
  File "/home/bcolsen/jedi/jedi/api/completion.py", line 99, in completions
    completion_names = self._get_context_completions()
  File "/home/bcolsen/jedi/jedi/api/completion.py", line 198, in _get_context_completions
    completion_names += self._trailer_completions(dot.get_previous_leaf())
  File "/home/bcolsen/jedi/jedi/api/completion.py", line 233, in _trailer_completions
    contexts = evaluate_call_of_leaf(evaluation_context, previous_leaf)
  File "/home/bcolsen/jedi/jedi/evaluate/helpers.py", line 102, in evaluate_call_of_leaf
    values = eval_trailer(context, values, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 153, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 151, in get_return_values
    context_set |= self.eval_node(children[1])
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 84, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 153, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 151, in get_return_values
    context_set |= self.eval_node(children[1])
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 58, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 172, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 204, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 140, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 100, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 479, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 441, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 225, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 241, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 84, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 153, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 151, in get_return_values
    context_set |= self.eval_node(children[1])
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 174, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 58, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 172, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 204, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 140, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 100, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 479, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 441, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 225, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 241, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 84, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 153, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 136, in get_return_values
    check = flow_analysis.reachability_check(self, funcdef, r)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 76, in reachability_check
    return _break_check(context, context_scope, first_flow_scope, node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 91, in _break_check
    reachable = _check_if(context, flow_node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 107, in _check_if
    types = context.eval_node(node)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 174, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 84, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 148, in eval_trailer
    name_or_str=node
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 204, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 140, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 100, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 479, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 441, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 225, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 241, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 72, in eval_node
    context_set = eval_atom(context, first_child)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 172, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 204, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 140, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 118, in infer
    return self.get_param().infer()
  File "/home/bcolsen/jedi/jedi/evaluate/param.py", line 34, in infer
    return self._lazy_context.infer()
  File "/home/bcolsen/jedi/jedi/evaluate/lazy_context.py", line 46, in infer
    return self._context.eval_node(self.data)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 174, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 84, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 148, in eval_trailer
    name_or_str=node
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 204, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 140, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 100, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 479, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 441, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 225, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 241, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 58, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 172, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 204, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 140, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 118, in infer
    return self.get_param().infer()
  File "/home/bcolsen/jedi/jedi/evaluate/param.py", line 34, in infer
    return self._lazy_context.infer()
  File "/home/bcolsen/jedi/jedi/evaluate/lazy_context.py", line 46, in infer
    return self._context.eval_node(self.data)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 58, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 172, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 204, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 140, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 100, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 479, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 441, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 225, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 241, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 84, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 153, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 136, in get_return_values
    check = flow_analysis.reachability_check(self, funcdef, r)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 76, in reachability_check
    return _break_check(context, context_scope, first_flow_scope, node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 91, in _break_check
    reachable = _check_if(context, flow_node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 107, in _check_if
    types = context.eval_node(node)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 174, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 84, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 153, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 151, in get_return_values
    context_set |= self.eval_node(children[1])
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 116, in eval_node
    return eval_or_test(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 280, in eval_or_test
    types = context.eval_node(next(iterator))
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 84, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 153, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 151, in get_return_values
    context_set |= self.eval_node(children[1])
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 72, in eval_node
    context_set = eval_atom(context, first_child)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 172, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 204, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 140, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 100, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 479, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 441, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 225, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 241, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 84, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 153, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 136, in get_return_values
    check = flow_analysis.reachability_check(self, funcdef, r)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 76, in reachability_check
    return _break_check(context, context_scope, first_flow_scope, node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 91, in _break_check
    reachable = _check_if(context, flow_node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 107, in _check_if
    types = context.eval_node(node)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 174, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 58, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 172, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 204, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 140, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 100, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 479, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 441, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 225, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 241, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 84, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 153, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 42, in execute
    return stdlib.execute(self.evaluator, self, arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/stdlib.py", line 73, in execute
    return func(evaluator, obj, arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/stdlib.py", line 111, in wrapper
    lst = list(arguments.eval_argument_clinic(clinic_args))
  File "/home/bcolsen/jedi/jedi/evaluate/arguments.py", line 44, in eval_argument_clinic
    values = NO_CONTEXTS if argument is None else argument.infer()
  File "/home/bcolsen/jedi/jedi/evaluate/lazy_context.py", line 46, in infer
    return self._context.eval_node(self.data)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 84, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 141, in eval_trailer
    ContextualizedNode(context, trailer)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 114, in get_item
    result |= getitem(index)
  File "/home/bcolsen/jedi/jedi/evaluate/context/iterable.py", line 426, in py__getitem__
    return self._lazy_context_list[index].infer()
  File "/home/bcolsen/jedi/jedi/evaluate/lazy_context.py", line 46, in infer
    return self._context.eval_node(self.data)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 58, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 172, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 204, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 140, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 118, in infer
    return self.get_param().infer()
  File "/home/bcolsen/jedi/jedi/evaluate/param.py", line 34, in infer
    return self._lazy_context.infer()
  File "/home/bcolsen/jedi/jedi/evaluate/lazy_context.py", line 46, in infer
    return self._context.eval_node(self.data)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 58, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 172, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 204, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 140, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 118, in infer
    return self.get_param().infer()
  File "/home/bcolsen/jedi/jedi/evaluate/param.py", line 34, in infer
    return self._lazy_context.infer()
  File "/home/bcolsen/jedi/jedi/evaluate/lazy_context.py", line 46, in infer
    return self._context.eval_node(self.data)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 174, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 58, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 172, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 204, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 140, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 100, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 479, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 441, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 225, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 241, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 84, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 153, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 151, in get_return_values
    context_set |= self.eval_node(children[1])
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 142, in eval_element
    definitions = self.goto_definitions(context, if_name)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 219, in goto_definitions
    return helpers.evaluate_call_of_leaf(context, name)
  File "/home/bcolsen/jedi/jedi/evaluate/helpers.py", line 74, in evaluate_call_of_leaf
    return context.eval_node(leaf)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 174, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 58, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 172, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 204, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 140, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 118, in infer
    return self.get_param().infer()
  File "/home/bcolsen/jedi/jedi/evaluate/param.py", line 34, in infer
    return self._lazy_context.infer()
  File "/home/bcolsen/jedi/jedi/evaluate/lazy_context.py", line 46, in infer
    return self._context.eval_node(self.data)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 58, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 172, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 204, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 140, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 157, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 118, in infer
    return self.get_param().infer()
  File "/home/bcolsen/jedi/jedi/evaluate/param.py", line 30, in infer
    doc_params = docstrings.infer_param(self._execution_context, self._param_node)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/docstrings.py", line 266, in infer_param
    types = eval_docstring(execution_context.py__doc__())
  File "/home/bcolsen/jedi/jedi/evaluate/docstrings.py", line 258, in eval_docstring
    for param_str in _search_param_in_docstr(docstring, param.name.value)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 20, in from_iterable
    return cls.from_set(set(iterable))
  File "/home/bcolsen/jedi/jedi/evaluate/docstrings.py", line 259, in <genexpr>
    for p in _evaluate_for_statement_string(module_context, param_str)
  File "/home/bcolsen/jedi/jedi/evaluate/docstrings.py", line 216, in _evaluate_for_statement_string
    return list(_execute_types_in_stmt(func_execution_context, stmt))
  File "/home/bcolsen/jedi/jedi/evaluate/docstrings.py", line 225, in _execute_types_in_stmt
    definitions = module_context.eval_node(stmt)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 123, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 179, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 191, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 195, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 46, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 103, in eval_node
    assert element.value in ('.', '...')
AssertionError        
>>> jedi.__version__
'0.12.0'
>>> 
bug

All 11 comments

If you have time it would be interesting to see what element and element.value is.

I cannot reproduce it on Ubuntu (Python 3.5):

>>> pandas.__version__
'0.21.1'
>>> jedi.__version__
'0.11.0'

I would definitely need more information about the operating system.

If you could also re-run it on the master branch (and send me the error message), that would really help, since I improved the error message.

I'm using the latest up to date Anaconda 3.6 on Ubuntu 64-bit 16.04.

I can get the same error as previous with the the packages available in Anaconda.
jedi = 0.11.1
pandas = 0.22.0

The error message in the latest Jedi Master is quite different and looks a bit more helpful, but I'm not sure if it's even pointing to the same problem anymore.

Python 3.6.4 |Anaconda custom (64-bit)| (default, Jan 16 2018, 18:10:19) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import jedi;jedi.Script('''import pandas; pandas.read_csv().m''').completions()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/bcolsen/jedi/jedi/api/__init__.py", line 158, in completions
    completions = completion.completions()
  File "/home/bcolsen/jedi/jedi/api/completion.py", line 99, in completions
    completion_names = self._get_context_completions()
  File "/home/bcolsen/jedi/jedi/api/completion.py", line 198, in _get_context_completions
    completion_names += self._trailer_completions(dot.get_previous_leaf())
  File "/home/bcolsen/jedi/jedi/api/completion.py", line 233, in _trailer_completions
    contexts = evaluate_call_of_leaf(evaluation_context, previous_leaf)
  File "/home/bcolsen/jedi/jedi/evaluate/helpers.py", line 102, in evaluate_call_of_leaf
    values = eval_trailer(context, values, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 155, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 152, in get_return_values
    context_set |= self.eval_node(children[1])
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 86, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 155, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 136, in get_return_values
    check = flow_analysis.reachability_check(self, funcdef, r)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 76, in reachability_check
    return _break_check(context, context_scope, first_flow_scope, node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 91, in _break_check
    reachable = _check_if(context, flow_node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 107, in _check_if
    types = context.eval_node(node)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 118, in eval_node
    return eval_or_test(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 282, in eval_or_test
    types = context.eval_node(next(iterator))
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 60, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 106, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 494, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 440, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 227, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 243, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 86, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 155, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 152, in get_return_values
    context_set |= self.eval_node(children[1])
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 60, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 56, in find
    names = self.filter_name(filters)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 123, in filter_name
    names = filter.get(self._string_name)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 176, in get
    return self._convert_names(self._filter(names))
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 208, in _filter
    return list(self._check_flows(names))
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 225, in _check_flows
    origin_scope=self._origin_scope
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 76, in reachability_check
    return _break_check(context, context_scope, first_flow_scope, node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 91, in _break_check
    reachable = _check_if(context, flow_node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 107, in _check_if
    types = context.eval_node(node)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 74, in eval_node
    context_set = eval_atom(context, first_child)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 106, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 500, in tree_name_to_contexts
    types = imports.infer_import(context, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/imports.py", line 74, in infer_import
    for t in types
  File "/home/bcolsen/jedi/jedi/evaluate/utils.py", line 26, in unite
    return set(typ for types in iterable for typ in types)
  File "/home/bcolsen/jedi/jedi/evaluate/utils.py", line 26, in <genexpr>
    return set(typ for types in iterable for typ in types)
  File "/home/bcolsen/jedi/jedi/evaluate/imports.py", line 74, in <genexpr>
    for t in types
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 106, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 494, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 440, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 227, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 243, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 74, in eval_node
    context_set = eval_atom(context, first_child)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 106, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 500, in tree_name_to_contexts
    types = imports.infer_import(context, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/imports.py", line 83, in infer_import
    types = importer.follow()
  File "/home/bcolsen/jedi/jedi/evaluate/imports.py", line 267, in follow
    return self._do_import(self.import_path, self.sys_path_with_modifications())
  File "/home/bcolsen/jedi/jedi/evaluate/imports.py", line 361, in _do_import
    module = _load_module(self._evaluator, module_path, code, sys_path, parent_module)
  File "/home/bcolsen/jedi/jedi/evaluate/imports.py", line 475, in _load_module
    return compiled.load_module(evaluator, path=path, sys_path=sys_path)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/__init__.py", line 32, in load_module
    access_path = evaluator.compiled_subprocess.load_module(**kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/__init__.py", line 93, in wrapper
    kwargs=kwargs,
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/__init__.py", line 159, in run
    return self._send(id(evaluator), function, args, kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/__init__.py", line 210, in _send
    raise result
AttributeError: Traceback (most recent call last):
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/__init__.py", line 281, in listen
    result = False, None, self._run(*payload)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/__init__.py", line 264, in _run
    return function(evaluator, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/functions.py", line 16, in load_module
    return access.load_module(evaluator, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/access.py", line 146, in load_module
    __import__(dotted_path)
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/__init__.py", line 42, in <module>
    from pandas.core.api import *
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/api.py", line 7, in <module>
    from pandas.core.algorithms import factorize, unique, value_counts
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/algorithms.py", line 31, in <module>
    from pandas.core import common as com
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/common.py", line 22, in <module>
    from pandas.api import types
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/api/types/__init__.py", line 8, in <module>
    from pandas.core.dtypes.concat import union_categoricals  # noqa
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/dtypes/concat.py", line 6, in <module>
    import pandas._libs.tslib as tslib
AttributeError: module 'pandas' has no attribute '_libs'

>>> jedi.__version__
'0.12.0'

If I run the code again in the same python console the error at the end is different (the first part is the similar):

AttributeError: Traceback (most recent call last):
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/__init__.py", line 281, in listen
    result = False, None, self._run(*payload)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/__init__.py", line 264, in _run
    return function(evaluator, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/functions.py", line 16, in load_module
    return access.load_module(evaluator, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/access.py", line 146, in load_module
    __import__(dotted_path)
  File "pandas/_libs/lib.pyx", line 1289, in init pandas._libs.lib
AttributeError: type object 'pandas._libs.lib._PandasNull' has no attribute '__reduce_cython__'

Everything in pandas._libs seems like cython .so files

Can you retry with latest master? I just tried to avoid the input errors in the subprocess.

I tried it again. All the first part of the error is the same, but now the last part is different.

The old error ended with:

AttributeError: Traceback (most recent call last):
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/__init__.py", line 281, in listen
    result = False, None, self._run(*payload)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/__init__.py", line 264, in _run
    return function(evaluator, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/functions.py", line 16, in load_module
    return access.load_module(evaluator, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/access.py", line 146, in load_module
    __import__(dotted_path)
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/__init__.py", line 42, in <module>
    from pandas.core.api import *
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/api.py", line 7, in <module>
    from pandas.core.algorithms import factorize, unique, value_counts
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/algorithms.py", line 31, in <module>
    from pandas.core import common as com
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/common.py", line 22, in <module>
    from pandas.api import types
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/api/types/__init__.py", line 8, in <module>
    from pandas.core.dtypes.concat import union_categoricals  # noqa
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/dtypes/concat.py", line 6, in <module>
    import pandas._libs.tslib as tslib
AttributeError: module 'pandas' has no attribute '_libs'

The new error ends with:

TypeError: Traceback (most recent call last):
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/access.py", line 146, in load_module
    __import__(dotted_path)
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/__init__.py", line 42, in <module>
    from pandas.core.api import *
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/api.py", line 7, in <module>
    from pandas.core.algorithms import factorize, unique, value_counts
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/algorithms.py", line 31, in <module>
    from pandas.core import common as com
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/common.py", line 22, in <module>
    from pandas.api import types
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/api/types/__init__.py", line 8, in <module>
    from pandas.core.dtypes.concat import union_categoricals  # noqa
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/dtypes/concat.py", line 6, in <module>
    import pandas._libs.tslib as tslib
AttributeError: module 'pandas' has no attribute '_libs'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/__init__.py", line 281, in listen
    result = False, None, self._run(*payload)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/__init__.py", line 264, in _run
    return function(evaluator, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/subprocess/functions.py", line 16, in load_module
    return access.load_module(evaluator, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/access.py", line 155, in load_module
    print_to_stderr("Cannot import:\n", traceback.format_exc())
TypeError: print_to_stderr() takes 1 positional argument but 2 were given

My bad. I messed something up. I cannot test this really, therefore it's a bit buggy. Can you try again? Sorry :)

That's better now I get:

>>> import jedi;jedi.Script('''import pandas; pandas.read_csv().m''').completions()
Cannot import:
Traceback (most recent call last):
  File "/home/bcolsen/jedi/jedi/evaluate/compiled/access.py", line 146, in load_module
    __import__(dotted_path)
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/__init__.py", line 42, in <module>
    from pandas.core.api import *
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/api.py", line 7, in <module>
    from pandas.core.algorithms import factorize, unique, value_counts
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/algorithms.py", line 31, in <module>
    from pandas.core import common as com
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/common.py", line 22, in <module>
    from pandas.api import types
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/api/types/__init__.py", line 8, in <module>
    from pandas.core.dtypes.concat import union_categoricals  # noqa
  File "/home/bcolsen/anaconda3/lib/python3.6/site-packages/pandas/core/dtypes/concat.py", line 6, in <module>
    import pandas._libs.tslib as tslib
AttributeError: module 'pandas' has no attribute '_libs'

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/bcolsen/jedi/jedi/api/__init__.py", line 158, in completions
    completions = completion.completions()
  File "/home/bcolsen/jedi/jedi/api/completion.py", line 99, in completions
    completion_names = self._get_context_completions()
  File "/home/bcolsen/jedi/jedi/api/completion.py", line 198, in _get_context_completions
    completion_names += self._trailer_completions(dot.get_previous_leaf())
  File "/home/bcolsen/jedi/jedi/api/completion.py", line 233, in _trailer_completions
    contexts = evaluate_call_of_leaf(evaluation_context, previous_leaf)
  File "/home/bcolsen/jedi/jedi/evaluate/helpers.py", line 102, in evaluate_call_of_leaf
    values = eval_trailer(context, values, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 155, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 152, in get_return_values
    context_set |= self.eval_node(children[1])
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 86, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 155, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 152, in get_return_values
    context_set |= self.eval_node(children[1])
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 60, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 106, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 494, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 440, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 227, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 243, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 86, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 155, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 152, in get_return_values
    context_set |= self.eval_node(children[1])
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 60, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 106, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 494, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 440, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 227, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 243, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 86, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 155, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 136, in get_return_values
    check = flow_analysis.reachability_check(self, funcdef, r)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 76, in reachability_check
    return _break_check(context, context_scope, first_flow_scope, node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 91, in _break_check
    reachable = _check_if(context, flow_node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 107, in _check_if
    types = context.eval_node(node)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 86, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 150, in eval_trailer
    name_or_str=node
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 106, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 494, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 440, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 227, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 243, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 74, in eval_node
    context_set = eval_atom(context, first_child)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 124, in infer
    return self.get_param().infer()
  File "/home/bcolsen/jedi/jedi/evaluate/param.py", line 34, in infer
    return self._lazy_context.infer()
  File "/home/bcolsen/jedi/jedi/evaluate/lazy_context.py", line 46, in infer
    return self._context.eval_node(self.data)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 86, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 150, in eval_trailer
    name_or_str=node
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 106, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 494, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 440, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 227, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 243, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 60, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 124, in infer
    return self.get_param().infer()
  File "/home/bcolsen/jedi/jedi/evaluate/param.py", line 34, in infer
    return self._lazy_context.infer()
  File "/home/bcolsen/jedi/jedi/evaluate/lazy_context.py", line 46, in infer
    return self._context.eval_node(self.data)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 60, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 106, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 494, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 440, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 227, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 243, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 86, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 155, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 136, in get_return_values
    check = flow_analysis.reachability_check(self, funcdef, r)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 76, in reachability_check
    return _break_check(context, context_scope, first_flow_scope, node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 91, in _break_check
    reachable = _check_if(context, flow_node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 107, in _check_if
    types = context.eval_node(node)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 86, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 155, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 152, in get_return_values
    context_set |= self.eval_node(children[1])
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 118, in eval_node
    return eval_or_test(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 282, in eval_or_test
    types = context.eval_node(next(iterator))
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 86, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 155, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 152, in get_return_values
    context_set |= self.eval_node(children[1])
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 74, in eval_node
    context_set = eval_atom(context, first_child)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 106, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 494, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 440, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 227, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 243, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 86, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 155, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 136, in get_return_values
    check = flow_analysis.reachability_check(self, funcdef, r)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 76, in reachability_check
    return _break_check(context, context_scope, first_flow_scope, node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 91, in _break_check
    reachable = _check_if(context, flow_node)
  File "/home/bcolsen/jedi/jedi/evaluate/flow_analysis.py", line 107, in _check_if
    types = context.eval_node(node)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 60, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 106, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 494, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 440, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 227, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 243, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 86, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 155, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 42, in execute
    return stdlib.execute(self.evaluator, self, arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/stdlib.py", line 73, in execute
    return func(evaluator, obj, arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/stdlib.py", line 112, in wrapper
    lst = list(arguments.eval_argument_clinic(clinic_args))
  File "/home/bcolsen/jedi/jedi/evaluate/arguments.py", line 47, in eval_argument_clinic
    values = NO_CONTEXTS if argument is None else argument.infer()
  File "/home/bcolsen/jedi/jedi/evaluate/lazy_context.py", line 46, in infer
    return self._context.eval_node(self.data)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 86, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 143, in eval_trailer
    ContextualizedNode(context, trailer)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 119, in get_item
    result |= getitem(index)
  File "/home/bcolsen/jedi/jedi/evaluate/context/iterable.py", line 429, in py__getitem__
    return self._lazy_context_list[index].infer()
  File "/home/bcolsen/jedi/jedi/evaluate/lazy_context.py", line 46, in infer
    return self._context.eval_node(self.data)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 60, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 124, in infer
    return self.get_param().infer()
  File "/home/bcolsen/jedi/jedi/evaluate/param.py", line 34, in infer
    return self._lazy_context.infer()
  File "/home/bcolsen/jedi/jedi/evaluate/lazy_context.py", line 46, in infer
    return self._context.eval_node(self.data)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 60, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 124, in infer
    return self.get_param().infer()
  File "/home/bcolsen/jedi/jedi/evaluate/param.py", line 34, in infer
    return self._lazy_context.infer()
  File "/home/bcolsen/jedi/jedi/evaluate/lazy_context.py", line 46, in infer
    return self._context.eval_node(self.data)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 60, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 106, in infer
    return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 494, in tree_name_to_contexts
    types = _remove_statements(evaluator, context, node, tree_name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 440, in _remove_statements
    return eval_expr_stmt(context, stmt, seek_name=name)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 227, in eval_expr_stmt
    return _eval_expr_stmt(context, stmt, seek_name)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 243, in _eval_expr_stmt
    context_set = context.eval_node(rhs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 86, in eval_node
    context_set = eval_trailer(context, context_set, trailer)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 155, in eval_trailer
    return base_contexts.execute(args)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in mapper
    for context in self._set
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 65, in <genexpr>
    for context in self._set
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 52, in execute
    context_set = func(arguments)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 80, in py__call__
    return self.infer_function_execution(function_execution)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 70, in infer_function_execution
    return function_execution.get_return_values()
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/recursion.py", line 84, in wrapper
    result = func(execution, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/context/function.py", line 152, in get_return_values
    context_set |= self.eval_node(children[1])
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 74, in eval_node
    context_set = eval_atom(context, first_child)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 124, in infer
    return self.get_param().infer()
  File "/home/bcolsen/jedi/jedi/evaluate/param.py", line 34, in infer
    return self._lazy_context.infer()
  File "/home/bcolsen/jedi/jedi/evaluate/lazy_context.py", line 46, in infer
    return self._context.eval_node(self.data)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 60, in eval_node
    return eval_atom(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 174, in eval_atom
    search_global=True
  File "/home/bcolsen/jedi/jedi/_compatibility.py", line 195, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 145, in py__getattribute__
    return f.find(filters, attribute_lookup=not search_global)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 67, in find
    types = self._names_to_types(names, attribute_lookup)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in _names_to_types
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 34, in from_sets
    sets = list(sets)
  File "/home/bcolsen/jedi/jedi/evaluate/finder.py", line 159, in <genexpr>
    contexts = ContextSet.from_sets(name.infer() for name in names)
  File "/home/bcolsen/jedi/jedi/evaluate/filters.py", line 124, in infer
    return self.get_param().infer()
  File "/home/bcolsen/jedi/jedi/evaluate/param.py", line 30, in infer
    doc_params = docstrings.infer_param(self._execution_context, self._param_node)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/docstrings.py", line 275, in infer_param
    types = eval_docstring(execution_context.py__doc__())
  File "/home/bcolsen/jedi/jedi/evaluate/docstrings.py", line 267, in eval_docstring
    for param_str in _search_param_in_docstr(docstring, param.name.value)
  File "/home/bcolsen/jedi/jedi/common/context.py", line 20, in from_iterable
    return cls.from_set(set(iterable))
  File "/home/bcolsen/jedi/jedi/evaluate/docstrings.py", line 268, in <genexpr>
    for p in _evaluate_for_statement_string(module_context, param_str)
  File "/home/bcolsen/jedi/jedi/evaluate/docstrings.py", line 225, in _evaluate_for_statement_string
    return list(_execute_types_in_stmt(func_execution_context, stmt))
  File "/home/bcolsen/jedi/jedi/evaluate/docstrings.py", line 234, in _execute_types_in_stmt
    definitions = module_context.eval_node(stmt)
  File "/home/bcolsen/jedi/jedi/evaluate/base_context.py", line 128, in eval_node
    return self.evaluator.eval_element(self, node)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 194, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 206, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 210, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 105, in eval_node
    assert element.value in ('.', '...'), "The unhandled operator %s" % repr(element.value)
AssertionError: The unhandled operator '('

Thanks for the report. I finally found the issue.

I still have the same error on latest master. The lines numbers are different now.

File "/home/bcolsen/jedi/jedi/evaluate/cache.py", line 40, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/__init__.py", line 209, in _eval_element_cached
    return eval_node(context, element)
  File "/home/bcolsen/jedi/jedi/debug.py", line 79, in wrapper
    return func(*args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 48, in wrapper
    return func(context, *args, **kwargs)
  File "/home/bcolsen/jedi/jedi/evaluate/syntax_tree.py", line 128, in eval_node
    assert element.value in ('.', '...'), "The unhandled operator %s" % repr(element.value)
AssertionError: The unhandled operator '('

I had a hard time reproducing it, but finally I think I found it. It should be better now. Please try again!

It takes ages to actually complete. And that's probably the next thing we have to work on, but there's tickets for that (like #520).

It works now!

>>> import jedi;jedi.Script('''import pandas; pandas.read_csv().m''').completions()
[<Completion: mad>, <Completion: mask>, <Completion: max>, <Completion: mean>,
<Completion: median>, <Completion: melt>, <Completion: memory_usage>, <Completion: merge>,
<Completion: min>, <Completion: mode>]

It did take about 10 seconds to complete, but that is #520 territory for sure

Thank you!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

aaltat picture aaltat  路  9Comments

papachoco picture papachoco  路  7Comments

PeterJCLaw picture PeterJCLaw  路  8Comments

DonJayamanne picture DonJayamanne  路  4Comments

maxnordlund picture maxnordlund  路  5Comments