parameters: (context, atom)
docstring: Basically to process ``atom`` nodes. The parser sometimes doesn't
      generate the node (because it has just one child). In that case an atom
      might be a name or a literal as well.
docstring_summary: Basically to process ``atom`` nodes. The parser sometimes doesn't
      generate the node (because it has just one child). In that case an atom
      might be a name or a literal as well.
docstring_tokens: Basically to process atom nodes . The parser sometimes doesn t generate the node ( because it has just one child ) . In that case an atom might be a name or a literal as well .
function: def eval_atom(context, atom):
      """
      Basically to process ``atom`` nodes. The parser sometimes doesn't
      generate the node (because it has just one child). In that case an atom
      might be a name or a literal as well.
      """
      if atom.type == 'name':
          # This is the first global lookup.
          stmt = tree.search_ancestor(
              atom, 'expr_stmt', 'lambdef'
          ) or atom
          if stmt.type == 'lambdef':
              stmt = atom
          return context.py__getattribute__(
              name_or_str=atom,
              position=stmt.start_pos,
              search_global=True
          )
  
      elif isinstance(atom, tree.Literal):
          string = context.evaluator.compiled_subprocess.safe_literal_eval(atom.value)
          return ContextSet(compiled.create_simple_object(context.evaluator, string))
      elif atom.type == 'strings':
          # Will be multiple string.
          context_set = eval_atom(context, atom.children[0])
          for string in atom.children[1:]:
              right = eval_atom(context, string)
              context_set = _eval_comparison(context.evaluator, context, context_set, u'+', right)
          return context_set
      else:
          c = atom.children
          # Parentheses without commas are not tuples.
          if c[0] == '(' and not len(c) == 2 \
                  and not(c[1].type == 'testlist_comp' and
                          len(c[1].children) > 1):
              return context.eval_node(c[1])
  
          try:
              comp_for = c[1].children[1]
          except (IndexError, AttributeError):
              pass
          else:
              if comp_for == ':':
                  # Dict comprehensions have a colon at the 3rd index.
                  try:
                      comp_for = c[1].children[3]
                  except IndexError:
                      pass
  
              if comp_for.type == 'comp_for':
                  return ContextSet(iterable.comprehension_from_atom(
                      context.evaluator, context, atom
                  ))
  
          # It's a dict/list/tuple literal.
          array_node = c[1]
          try:
              array_node_c = array_node.children
          except AttributeError:
              array_node_c = []
          if c[0] == '{' and (array_node == '}' or ':' in array_node_c):
              context = iterable.DictLiteralContext(context.evaluator, context, atom)
          else:
              context = iterable.SequenceLiteralContext(context.evaluator, context, atom)
          return ContextSet(context)
function_tokens: def eval_atom ( context , atom ) : if atom . type == 'name' : # This is the first global lookup. stmt = tree . search_ancestor ( atom , 'expr_stmt' , 'lambdef' ) or atom if stmt . type == 'lambdef' : stmt = atom return context . py__getattribute__ ( name_or_str = atom , position = stmt . start_pos , search_global = True ) elif isinstance ( atom , tree . Literal ) : string = context . evaluator . compiled_subprocess . safe_literal_eval ( atom . value ) return ContextSet ( compiled . create_simple_object ( context . evaluator , string ) ) elif atom . type == 'strings' : # Will be multiple string. context_set = eval_atom ( context , atom . children [ 0 ] ) for string in atom . children [ 1 : ] : right = eval_atom ( context , string ) context_set = _eval_comparison ( context . evaluator , context , context_set , u'+' , right ) return context_set else : c = atom . children # Parentheses without commas are not tuples. if c [ 0 ] == '(' and not len ( c ) == 2 and not ( c [ 1 ] . type == 'testlist_comp' and len ( c [ 1 ] . children ) > 1 ) : return context . eval_node ( c [ 1 ] ) try : comp_for = c [ 1 ] . children [ 1 ] except ( IndexError , AttributeError ) : pass else : if comp_for == ':' : # Dict comprehensions have a colon at the 3rd index. try : comp_for = c [ 1 ] . children [ 3 ] except IndexError : pass if comp_for . type == 'comp_for' : return ContextSet ( iterable . comprehension_from_atom ( context . evaluator , context , atom ) ) # It's a dict/list/tuple literal. array_node = c [ 1 ] try : array_node_c = array_node . children except AttributeError : array_node_c = [ ] if c [ 0 ] == '{' and ( array_node == '}' or ':' in array_node_c ) : context = iterable . DictLiteralContext ( context . evaluator , context , atom ) else : context = iterable . SequenceLiteralContext ( context . evaluator , context , atom ) return ContextSet ( context )