nodes: 0, module; 1, function_definition; 2, function_name:weld_sort; 3, parameters; 4, block; 5, identifier:arrays; 6, identifier:weld_types; 7, identifier:readable_text; 8, default_parameter; 9, expression_statement; 10, expression_statement; 11, expression_statement; 12, expression_statement; 13, expression_statement; 14, expression_statement; 15, expression_statement; 16, expression_statement; 17, expression_statement; 18, expression_statement; 19, return_statement; 20, identifier:ascending; 21, True; 22, comment:"""Sort the arrays.
  
      Parameters
      ----------
      arrays : list of (numpy.ndarray or WeldObject)
          Arrays to put in a struct.
      weld_types : list of WeldType
          The Weld types of the arrays in the same order.
      readable_text : str
          Explanatory string to add in the Weld placeholder.
      ascending : bool, optional
  
      Returns
      -------
      list of WeldObject
          Representation of this computation.
  
      """; 23, assignment; 24, assignment; 25, assignment; 26, assignment; 27, assignment; 28, assignment; 29, assignment; 30, assignment; 31, call; 32, identifier:weld_obj; 33, identifier:weld_obj_sort; 34, call; 35, identifier:weld_obj_struct; 36, call; 37, identifier:weld_obj_indices; 38, call; 39, identifier:intermediate_result; 40, call; 41, identifier:dependency_name; 42, call; 43, identifier:fake_weld_input; 44, call; 45, pattern_list; 46, call; 47, attribute; 48, call; 49, attribute; 50, argument_list; 51, identifier:_weld_sort; 52, argument_list; 53, identifier:weld_vec_of_struct_to_struct_of_vec; 54, argument_list; 55, identifier:weld_select_from_struct; 56, argument_list; 57, identifier:LazyArrayResult; 58, argument_list; 59, attribute; 60, argument_list; 61, attribute; 62, argument_list; 63, identifier:obj_id; 64, identifier:weld_obj; 65, identifier:create_weld_object; 66, argument_list; 67, identifier:weld_obj; 68, identifier:weld_code; 69, attribute; 70, argument_list; 71, identifier:Cache; 72, identifier:cache_fake_input; 73, identifier:obj_id; 74, identifier:fake_weld_input; 75, identifier:arrays; 76, identifier:weld_types; 77, identifier:ascending; 78, identifier:weld_obj_sort; 79, identifier:weld_types; 80, identifier:weld_obj_struct; 81, integer:0; 82, identifier:weld_obj_indices; 83, call; 84, identifier:Cache; 85, identifier:cache_intermediate_result; 86, identifier:intermediate_result; 87, identifier:readable_text; 88, identifier:Cache; 89, identifier:create_fake_array_input; 90, identifier:dependency_name; 91, binary_operator:readable_text + '_indices'; 92, identifier:fake_weld_input; 93, string; 94, identifier:format; 95, identifier:obj_id; 96, identifier:WeldLong; 97, argument_list; 98, identifier:readable_text; 99, string; 100, string_content:{}; 101, string_content:_indices
code: def weld_sort(arrays, weld_types, readable_text, ascending=True):
      """Sort the arrays.
  
      Parameters
      ----------
      arrays : list of (numpy.ndarray or WeldObject)
          Arrays to put in a struct.
      weld_types : list of WeldType
          The Weld types of the arrays in the same order.
      readable_text : str
          Explanatory string to add in the Weld placeholder.
      ascending : bool, optional
  
      Returns
      -------
      list of WeldObject
          Representation of this computation.
  
      """
      weld_obj_sort = _weld_sort(arrays, weld_types, ascending)
      weld_obj_struct = weld_vec_of_struct_to_struct_of_vec(weld_obj_sort, weld_types)
      weld_obj_indices = weld_select_from_struct(weld_obj_struct, 0)
  
      intermediate_result = LazyArrayResult(weld_obj_indices, WeldLong())
      dependency_name = Cache.cache_intermediate_result(intermediate_result, readable_text)
  
      fake_weld_input = Cache.create_fake_array_input(dependency_name, readable_text + '_indices')
      obj_id, weld_obj = create_weld_object(fake_weld_input)
      weld_obj.weld_code = '{}'.format(obj_id)
      Cache.cache_fake_input(obj_id, fake_weld_input)
  
      return weld_obj