code: def _evaluate_annotation_string(context, string, index=None):
      node = _get_forward_reference_node(context, string)
      if node is None:
          return NO_CONTEXTS
  
      context_set = context.eval_node(node)
      if index is not None:
          context_set = context_set.filter(
              lambda context: context.array_type == "tuple"
              and len(list(context.py__iter__())) >= index
          ).py__getitem__(index)
      return context_set.execute_evaluated()
  
imports: import os
  import re
  from parso import ParserSyntaxError, parse, split_lines
  from parso.python import tree
  from jedi._compatibility import unicode, force_unicode
  from jedi.evaluate.cache import evaluator_method_cache
  from jedi.evaluate import compiled
  from jedi.evaluate.base_context import NO_CONTEXTS, ContextSet
  from jedi.evaluate.lazy_context import LazyTreeContext
  from jedi.evaluate.context import ModuleContext
  from jedi.evaluate.helpers import is_string
  from jedi import debug
  from jedi import parser_utils
label_desc: Use image node_id 2 for calling a global function with example usage: _evaluate_annotation_string(context, string, index) and returns: context_set, NO_CONTEXTS