Module Expr Str Import alias ImportFrom alias alias alias ImportFrom alias identifier ImportFrom alias ImportFrom alias ImportFrom alias identifier ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias ClassDef bases NameLoad body FunctionDef arguments args NameParam defaults body Assign AttributeStore NameLoad attr Dict Assign AttributeStore NameLoad attr Dict Assign AttributeStore NameLoad attr Dict Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad NameLoad body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body Return Call AttributeLoad NameLoad attr NameLoad Return Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad body Expr Str Expr Call AttributeLoad NameLoad attr Str NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore AttributeLoad NameLoad attr If BoolOpAnd NameLoad CompareNotEq SubscriptLoad SubscriptLoad NameLoad Index Num Index Num Str UnaryOpNot Call NameLoad NameLoad AttributeLoad NameLoad attr body Assign TupleStore NameStore NameStore SubscriptLoad NameLoad Index Num Assign NameStore SubscriptLoad NameLoad Slice Num Assign NameStore Call NameLoad AttributeLoad SubscriptLoad NameLoad Index Num attr Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr NameLoad AttributeLoad NameLoad attr If Call NameLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr body For NameStore NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad ListLoad NameLoad Assign NameStore NameLoad orelse Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad NameLoad orelse If BoolOpAnd CompareGt Call NameLoad Call AttributeLoad NameLoad attr Num NameLoad NameLoad body Assign NameStore ListLoad For TupleStore NameStore NameStore NameLoad body AugAssignAdd NameStore Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Num NameLoad NameLoad Assign NameStore NameLoad Return NameLoad decorator_list Call NameLoad keyword ListLoad keyword NameLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr FunctionDef arguments args NameParam NameParam defaults body Expr Str Expr Call AttributeLoad NameLoad attr Str NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad Return BoolOpOr Call AttributeLoad NameLoad attr NameLoad ListLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body If CompareIs NameLoad NameLoad body Return NameLoad orelse If Call NameLoad NameLoad AttributeLoad NameLoad attr body Return Call AttributeLoad NameLoad attr NameLoad orelse Return Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr NameLoad NameLoad AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body If Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad AttributeLoad AttributeLoad NameLoad attr attr body Assign NameStore Call NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr GeneratorExp Call AttributeLoad NameLoad attr NameLoad comprehension NameStore NameLoad Assign NameStore Call AttributeLoad NameLoad attr Expr Call NameLoad NameLoad NameLoad Return Call AttributeLoad NameLoad attr NameLoad NameLoad AttributeLoad NameLoad attr orelse If Call NameLoad NameLoad AttributeLoad NameLoad attr body Assign NameStore Call NameLoad NameLoad Assign AttributeStore AttributeLoad NameLoad attr attr NameLoad Return Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr orelse If Call NameLoad NameLoad AttributeLoad NameLoad attr body Return ListLoad Call AttributeLoad NameLoad attr NameLoad NameLoad orelse If BoolOpAnd Call NameLoad NameLoad AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Return ListLoad NameLoad orelse If Call NameLoad NameLoad AttributeLoad NameLoad attr body Return ListLoad NameLoad orelse If UnaryOpNot Call NameLoad NameLoad NameLoad body Return Call AttributeLoad NameLoad attr NameLoad orelse Return ListLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore NameLoad While UnaryOpNot Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr body Assign NameStore AttributeLoad NameLoad attr Return Call AttributeLoad NameLoad attr NameLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad NameLoad If Call NameLoad NameLoad AttributeLoad NameLoad attr body Assign NameStore ListLoad Call AttributeLoad NameLoad attr NameLoad NameLoad orelse If Call NameLoad NameLoad AttributeLoad NameLoad attr body Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad keyword NameLoad keyword NameLoad orelse Assign NameStore ListLoad Call AttributeLoad NameLoad attr NameLoad AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Return Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body Expr Str Assign NameStore ListLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad Call NameLoad NameLoad For TupleStore NameStore NameStore Call NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index NameLoad NameLoad NameLoad If CompareIsNot NameLoad NameLoad body AugAssignAdd NameStore NameLoad orelse Return NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body Expr Str TryExcept body Assign NameStore Call NameLoad NameLoad handlers ExceptHandler type NameLoad body Return NameLoad Expr Call AttributeLoad NameLoad attr Str NameLoad NameLoad Assign NameStore ListLoad If Call NameLoad NameLoad AttributeLoad NameLoad attr body If CompareEq AttributeLoad NameLoad attr AttributeLoad AttributeLoad NameLoad attr attr body If Call NameLoad NameLoad Str body Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad orelse If CompareNotIn AttributeLoad NameLoad attr ListLoad AttributeLoad AttributeLoad NameLoad attr attr body Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad orelse Expr Call AttributeLoad NameLoad attr Str NameLoad NameLoad orelse If Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Assign NameStore Call AttributeLoad NameLoad attr orelse If Call NameLoad NameLoad NameLoad NameLoad body Return ListLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Return Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults TupleLoad NameLoad body If Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Assign NameStore Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Str NameLoad NameLoad TryExcept body Return Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad handlers ExceptHandler type AttributeLoad NameLoad attr body Pass If Call NameLoad NameLoad AttributeLoad NameLoad attr body Return Call AttributeLoad NameLoad attr orelse If Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr body If Call AttributeLoad NameLoad attr body Return ListLoad Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad orelse Return Call NameLoad Call AttributeLoad NameLoad attr NameLoad NameLoad orelse If Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Return ListLoad Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad orelse Assign NameStore ListLoad If Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr body Assign NameStore Call AttributeLoad Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad attr NameLoad orelse If Call NameLoad NameLoad Str body TryExcept body Assign NameStore Call AttributeLoad NameLoad attr Str NameLoad handlers ExceptHandler type NameLoad body Expr Call AttributeLoad NameLoad attr Str NameLoad orelse Expr Call AttributeLoad NameLoad attr Str NameLoad Expr Call AttributeLoad NameLoad attr Str NameLoad NameLoad Return Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list AttributeLoad NameLoad attr FunctionDef arguments args NameParam NameParam NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign NameStore AttributeLoad NameLoad attr Assign TupleStore NameStore NameStore TupleLoad SubscriptLoad NameLoad Slice Num SubscriptLoad NameLoad Index Num If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Call NameLoad NameLoad NameLoad NameLoad Assign NameStore NameLoad Assign NameStore NameLoad orelse Assign NameStore ListLoad NameLoad Assign NameStore NameLoad Assign NameStore ListLoad For NameStore NameLoad body AugAssignAdd NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad keyword NameLoad keyword NameLoad Return TupleLoad NameLoad NameLoad decorator_list decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad NameLoad If BoolOpAnd Call NameLoad NameLoad TupleLoad NameLoad NameLoad Call NameLoad NameLoad AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr Str UnaryOpNot Call AttributeLoad NameLoad attr Str body Assign NameStore Call AttributeLoad NameLoad attr TupleLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr If CompareNotEq NameLoad NameLoad body If Call NameLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr body If CompareNotEq NameLoad AttributeLoad NameLoad attr body Return NameLoad orelse If CompareNotEq NameLoad AttributeLoad AttributeLoad NameLoad attr attr body Return NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Assign NameStore AttributeLoad NameLoad attr Assign NameStore SubscriptLoad Call AttributeLoad NameLoad attr Index Num If Call NameLoad NameLoad AttributeLoad NameLoad attr body Assign NameStore AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Call AttributeLoad NameLoad attr NameLoad ListLoad NameLoad AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr NameLoad Assign AttributeStore NameLoad attr BoolOpOr NameLoad Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr If Call NameLoad NameLoad AttributeLoad NameLoad attr body Assign NameStore Call NameLoad NameLoad NameLoad Return NameLoad decorator_list
N/A N/A 
Evaluation of Python code in |jedi| is based on three assumptions:

* Code is recursive (to weaken this assumption, the
  :mod:`jedi.evaluate.dynamic` module exists).
* No magic is being used:

  - metaclasses
  - ``setattr()`` / ``__import__()``
  - writing to ``globals()``, ``locals()``, ``object.__dict__``
* The programmer is not a total dick, e.g. like `this
  <https://github.com/davidhalter/jedi/issues/24>`_ :-)

That said, there's mainly one entry point in this script: ``eval_statement``.
This is where autocompletion starts. Everything you want to complete is either
a ``Statement`` or some special name like ``class``, which is easy to complete.

Therefore you need to understand what follows after ``eval_statement``. Let's
make an example::

    import datetime
    datetime.date.toda# <-- cursor here

First of all, this module doesn't care about completion. It really just cares
about ``datetime.date``. At the end of the procedure ``eval_statement`` will
return the ``datetime`` class.

To *visualize* this (simplified):

- ``eval_statement`` - ``<Statement: datetime.date>``

    - Unpacking of the statement into ``[[<Call: datetime.date>]]``
- ``eval_expression_list``, calls ``eval_call`` with ``<Call: datetime.date>``
- ``eval_call`` - searches the ``datetime`` name within the module.

This is exactly where it starts to get complicated. Now recursions start to
kick in. The statement has not been resolved fully, but now we need to resolve
the datetime import. So it continues

- follow import, which happens in the :mod:`jedi.evaluate.imports` module.
- now the same ``eval_call`` as above calls ``follow_path`` to follow the
  second part of the statement ``date``.
- After ``follow_path`` returns with the desired ``datetime.date`` class, the
  result is being returned and the recursion finishes.

Now what would happen if we wanted ``datetime.date.foo.bar``? Just two more
calls to ``follow_path`` (which calls itself with a recursion). What if the
import would contain another Statement like this::

    from foo import bar
    Date = bar.baz

Well... You get it. Just another ``eval_statement`` recursion. It's really
easy. Just that Python is not that easy sometimes. To understand tuple
assignments and different class scopes, a lot more code had to be written.  Yet
we're still not talking about Descriptors and Nested List Comprehensions, just
the simple stuff.

So if you want to change something, write a test and then just change what you
want. This module has been tested by about 600 tests. Don't be afraid to break
something. The tests are good enough.

I need to mention now that this recursive approach is really good because it
only *evaluates* what needs to be *evaluated*. All the statements and modules
that are not used are just being ignored. It's a little bit similar to the
backtracking algorithm.


.. todo:: nonlocal statement, needed or can be ignored? (py3k)
 N/A itertools jedi._compatibility next hasattr unicode jedi.parser representation pr jedi.parser.tokenize Token jedi debug jedi.evaluate representation er jedi.evaluate imports jedi.evaluate recursion jedi.evaluate iterable jedi.evaluate.cache memoize_default jedi.evaluate stdlib jedi.evaluate finder jedi.evaluate compiled jedi.evaluate precedence Evaluator N/A object N/A __init__ N/A N/A self N/A N/A N/A N/A self memoize_cache N/A N/A N/A self import_cache N/A N/A N/A self compiled_cache N/A N/A N/A self recursion_detector N/A N/A recursion RecursionDetector N/A N/A self execution_recursion_detector N/A N/A recursion ExecutionRecursionDetector N/A find_types N/A N/A self scope name_str position search_global is_goto resolve_decorator N/A None False False True N/A N/A 
        This is the search function. The most important part to debug.
        `remove_statements` and `filter_statements` really are the core part of
        this completion.

        :param position: Position of the last statement -> tuple of line, column
        :return: List of Names. Their parents are the types.
         N/A f N/A N/A finder NameFinder self scope name_str position N/A scopes N/A N/A f scopes search_global N/A is_goto N/A N/A N/A N/A f filter_name scopes N/A N/A N/A f find scopes resolve_decorator N/A eval_statement N/A N/A self stmt seek_name N/A None N/A N/A 
        The starting point of the completion. A statement always owns a call
        list, which are the calls, that a statement does. In case multiple
        names are defined in the statement, `seek_name` returns the result for
        this name.

        :param stmt: A `pr.Statement`.
         N/A N/A N/A debug dbg eval_statement %s (%s) stmt seek_name N/A expression_list N/A N/A stmt expression_list N/A result N/A N/A self eval_expression_list expression_list N/A ass_details N/A stmt assignment_details N/A N/A ass_details N/A N/A N/A ass_details N/A 0 N/A 1 = N/A N/A isinstance stmt N/A er InstanceElement N/A N/A N/A expr_list operator N/A ass_details N/A 0 N/A operator N/A operator N/A -1 N/A name N/A str N/A N/A expr_list N/A 0 name N/A left N/A N/A self find_types N/A stmt parent name N/A stmt start_pos N/A N/A isinstance N/A stmt parent N/A pr ForFlow N/A N/A r result N/A N/A left N/A N/A precedence calculate self left operator N/A r N/A result left N/A N/A result N/A N/A precedence calculate self left operator result N/A N/A N/A N/A N/A len N/A N/A stmt get_defined_names 1 seek_name ass_details N/A N/A new_result N/A N/A N/A ass_expression_list op ass_details N/A N/A new_result N/A N/A finder find_assignments N/A ass_expression_list N/A 0 result seek_name N/A result new_result N/A result N/A N/A memoize_default default N/A evaluator_is_first_arg True N/A recursion recursion_decorator N/A debug increase_indent eval_expression_list N/A N/A self expression_list N/A N/A N/A 
        `expression_list` can be either `pr.Array` or `list of list`.
        It is used to evaluate a two dimensional object, that has calls, arrays and
        operators in it.
         N/A N/A N/A debug dbg eval_expression_list: %s expression_list N/A p N/A N/A precedence create_precedence expression_list N/A N/A N/A N/A self process_precedence_element p N/A N/A process_precedence_element N/A N/A self el N/A N/A N/A N/A el None N/A N/A None N/A N/A N/A isinstance el N/A precedence Precedence N/A N/A N/A N/A self _eval_precedence el N/A N/A N/A N/A self _eval_statement_element el N/A _eval_precedence N/A N/A self _precedence N/A N/A N/A left N/A N/A self process_precedence_element N/A _precedence left N/A right N/A N/A self process_precedence_element N/A _precedence right N/A N/A N/A precedence calculate self left N/A _precedence operator right N/A _eval_statement_element N/A N/A self element N/A N/A N/A N/A N/A N/A pr Array is_type element N/A N/A pr Array NOARRAY N/A N/A r N/A list N/A N/A N/A itertools chain from_iterable N/A N/A N/A self eval_statement s N/A s element N/A call_path N/A N/A element generate_call_path N/A N/A next call_path None N/A N/A N/A self follow_path call_path r N/A element parent N/A N/A N/A isinstance element N/A pr ListComprehension N/A N/A loop N/A _evaluate_list_comprehension element N/A N/A N/A element stmt parent loop N/A N/A N/A self eval_statement N/A element stmt N/A N/A N/A isinstance element N/A pr Lambda N/A N/A N/A N/A N/A er Function self element N/A N/A N/A N/A isinstance element N/A pr Base N/A N/A element isinstance N/A er Function N/A er Class N/A er Instance N/A iterable ArrayInstance N/A N/A N/A element N/A N/A N/A isinstance element N/A compiled CompiledObject N/A N/A N/A element N/A N/A N/A N/A isinstance element Token N/A N/A N/A N/A self eval_call element N/A N/A N/A N/A eval_call N/A N/A self call N/A N/A N/A Follow a call is following a function, variable, string, etc. N/A path N/A N/A call generate_call_path N/A s call N/A N/A N/A N/A N/A s parent isinstance N/A pr IsScope N/A N/A s N/A s parent N/A N/A N/A self eval_call_path path N/A s parent N/A s start_pos N/A eval_call_path N/A N/A self path scope position N/A N/A N/A 
        Follows a path generated by `pr.StatementElement.generate_call_path()`.
         N/A current N/A next path N/A N/A isinstance current N/A pr Array N/A N/A types N/A N/A N/A iterable Array self current N/A N/A N/A isinstance current N/A pr NamePart N/A N/A types N/A N/A self find_types scope current position position search_global True N/A N/A types N/A N/A N/A compiled create self N/A current value N/A types N/A N/A imports strip_imports self types N/A N/A N/A self follow_path path types scope N/A follow_path N/A N/A self path types call_scope N/A N/A N/A 
        Follows a path like::

            self.follow_path(iter(['Foo', 'bar']), [a_type], from_somewhere)

        to follow a call like ``module.a_type.Foo.bar`` (in ``from_somewhere``).
         N/A results_new N/A N/A iter_paths N/A N/A itertools tee path N/A len types N/A N/A i typ N/A enumerate types N/A N/A fp N/A N/A self _follow_path N/A iter_paths N/A i typ call_scope N/A N/A fp None N/A N/A results_new fp N/A N/A types N/A results_new N/A _follow_path N/A N/A self path typ scope N/A N/A N/A 
        Uses a generator and tries to complete the path, e.g.::

            foo.bar.baz

        `_follow_path` is only responsible for completing `.bar.baz`, the rest
        is done in the `follow_call` function.
         N/A N/A N/A current N/A next path N/A N/A N/A StopIteration N/A N/A None N/A N/A N/A debug dbg _follow_path: %s in scope %s current typ N/A result N/A N/A N/A isinstance current N/A pr Array N/A N/A N/A N/A current type N/A N/A pr Array LIST N/A N/A N/A hasattr typ get_index_types N/A N/A slc N/A N/A iterable create_indexes_or_slices self current N/A result N/A N/A typ get_index_types slc N/A N/A N/A N/A current type N/A N/A N/A pr Array DICT N/A N/A result N/A N/A self execute typ current N/A N/A N/A N/A debug warning strange function call with {} %s %s current typ N/A N/A N/A N/A typ isinstance N/A er Function N/A N/A typ N/A N/A typ get_magic_function_scope N/A N/A N/A filter_private_variable typ scope current N/A N/A N/A N/A types N/A N/A self find_types typ current N/A result N/A N/A imports strip_imports self types N/A N/A N/A self follow_path path result scope N/A execute N/A N/A self obj params evaluate_generator N/A N/A False N/A N/A N/A N/A obj isinstance N/A er Function N/A N/A obj N/A N/A obj get_decorated_func N/A N/A N/A debug dbg execute: %s %s obj params N/A N/A N/A N/A N/A stdlib execute self obj params N/A N/A N/A N/A stdlib NotInStdLib N/A N/A N/A N/A isinstance obj N/A iterable GeneratorMethod N/A N/A N/A N/A obj execute N/A N/A N/A N/A obj isinstance N/A compiled CompiledObject N/A N/A N/A N/A obj is_executable_class N/A N/A N/A N/A N/A er Instance self obj params N/A N/A N/A list N/A N/A obj execute_function self params N/A N/A N/A N/A obj isinstance N/A er Class N/A N/A N/A N/A N/A er Instance self obj params N/A N/A stmts N/A N/A N/A N/A obj isinstance N/A er Function N/A N/A stmts N/A N/A N/A N/A er FunctionExecution self obj params get_return_types evaluate_generator N/A N/A N/A hasattr obj execute_subscope_by_name N/A N/A N/A N/A stmts N/A N/A obj execute_subscope_by_name __call__ params N/A N/A N/A KeyError N/A N/A N/A N/A debug warning no __call__ func available %s obj N/A N/A N/A N/A debug warning no execution possible %s obj N/A N/A N/A debug dbg execute result: %s in %s stmts obj N/A N/A N/A imports strip_imports self stmts N/A N/A debug increase_indent goto N/A N/A self stmt call_path N/A N/A N/A scope N/A N/A stmt get_parent_until N/A pr IsScope N/A pos N/A stmt start_pos N/A N/A call_path search_name_part N/A N/A call_path N/A -1 N/A call_path N/A -1 N/A call_path N/A N/A scopes N/A N/A self eval_call_path N/A iter call_path scope pos N/A search_global False N/A pos None N/A N/A scopes N/A scope N/A search_global True N/A follow_res N/A N/A s scopes N/A N/A follow_res N/A N/A self find_types s search_name_part pos search_global search_global is_goto True N/A N/A follow_res search_name_part N/A N/A filter_private_variable N/A N/A scope call_scope var_name N/A N/A N/A private variables begin with a double underline `__` N/A var_name N/A str var_name N/A N/A N/A isinstance var_name N/A str unicode N/A isinstance scope N/A er Instance N/A N/A var_name startswith __ N/A N/A N/A var_name endswith __ N/A N/A s N/A N/A call_scope get_parent_until N/A N/A pr Class N/A er Instance N/A compiled CompiledObject N/A N/A s scope N/A N/A N/A isinstance N/A scope base N/A compiled CompiledObject N/A N/A N/A s N/A scope base N/A N/A True N/A N/A N/A s N/A N/A scope base base N/A N/A True N/A False N/A _evaluate_list_comprehension N/A N/A lc parent N/A None N/A N/A input N/A lc input N/A nested_lc N/A N/A N/A input expression_list N/A 0 N/A N/A isinstance nested_lc N/A pr ListComprehension N/A N/A input N/A nested_lc stmt N/A module N/A N/A input get_parent_until N/A loop N/A N/A pr ForFlow module N/A input N/A N/A lc stmt start_pos N/A lc middle True N/A N/A loop parent N/A parent N/A N/A lc get_parent_until N/A pr IsScope N/A N/A isinstance nested_lc N/A pr ListComprehension N/A N/A loop N/A _evaluate_list_comprehension nested_lc loop N/A loop N/A