nodes: 0, module; 1, function_definition; 2, function_name:find_range_ix_in_section_list; 3, parameters; 4, block; 5, identifier:start; 6, identifier:end; 7, identifier:section_list; 8, expression_statement; 9, if_statement; 10, if_statement; 11, if_statement; 12, return_statement; 13, comment:"""Returns the index range all sections belonging to the given range.
  
      The given list is assumed to contain start points of consecutive
      sections, except for the final point, assumed to be the end point of the
      last section. For example, the list [5, 8, 30, 31] is interpreted as the
      following list of sections: [5-8), [8-30), [30-31]. As such, this function
      will return [5,8] for the range (7,9) and [5,8,30] while for (7, 30).
  
      Parameters
      ---------
      start : float
          The start of the desired range.
      end : float
          The end of the desired range.
      section_list : sortedcontainers.SortedList
          A list of start points of consecutive sections.
  
      Returns
      -------
      iterable
          The index range of all sections belonging to the given range.
  
      Example
      -------
      >>> from sortedcontainers import SortedList
      >>> seclist = SortedList([5, 8, 30, 31])
      >>> find_range_ix_in_section_list(3, 4, seclist)
      [0, 0]
      >>> find_range_ix_in_section_list(6, 7, seclist)
      [0, 1]
      >>> find_range_ix_in_section_list(7, 9, seclist)
      [0, 2]
      >>> find_range_ix_in_section_list(7, 30, seclist)
      [0, 3]
      >>> find_range_ix_in_section_list(7, 321, seclist)
      [0, 3]
      >>> find_range_ix_in_section_list(4, 321, seclist)
      [0, 3]
      """; 14, boolean_operator; 15, block; 16, comparison_operator:start < section_list[0]; 17, block; 18, else_clause; 19, comparison_operator:end > section_list[-1]; 20, block; 21, else_clause; 22, list; 23, comparison_operator:start > section_list[-1]; 24, comparison_operator:end < section_list[0]; 25, return_statement; 26, identifier:start; 27, subscript; 28, expression_statement; 29, block; 30, identifier:end; 31, subscript; 32, expression_statement; 33, block; 34, call; 35, binary_operator:section_list.index(end_section)+1; 36, identifier:start; 37, subscript; 38, identifier:end; 39, subscript; 40, list; 41, identifier:section_list; 42, integer:0; 43, assignment; 44, expression_statement; 45, identifier:section_list; 46, unary_operator; 47, assignment; 48, expression_statement; 49, attribute; 50, argument_list; 51, call; 52, integer:1; 53, identifier:section_list; 54, unary_operator; 55, identifier:section_list; 56, integer:0; 57, integer:0; 58, integer:0; 59, identifier:start_section; 60, subscript; 61, assignment; 62, integer:1; 63, identifier:end_section; 64, subscript; 65, assignment; 66, identifier:section_list; 67, identifier:index; 68, identifier:start_section; 69, attribute; 70, argument_list; 71, integer:1; 72, identifier:section_list; 73, integer:0; 74, identifier:start_section; 75, call; 76, identifier:section_list; 77, unary_operator; 78, identifier:end_section; 79, call; 80, identifier:section_list; 81, identifier:index; 82, identifier:end_section; 83, identifier:find_point_in_section_list; 84, argument_list; 85, integer:2; 86, identifier:find_point_in_section_list; 87, argument_list; 88, identifier:start; 89, identifier:section_list; 90, identifier:end; 91, identifier:section_list
code: def find_range_ix_in_section_list(start, end, section_list):
      """Returns the index range all sections belonging to the given range.
  
      The given list is assumed to contain start points of consecutive
      sections, except for the final point, assumed to be the end point of the
      last section. For example, the list [5, 8, 30, 31] is interpreted as the
      following list of sections: [5-8), [8-30), [30-31]. As such, this function
      will return [5,8] for the range (7,9) and [5,8,30] while for (7, 30).
  
      Parameters
      ---------
      start : float
          The start of the desired range.
      end : float
          The end of the desired range.
      section_list : sortedcontainers.SortedList
          A list of start points of consecutive sections.
  
      Returns
      -------
      iterable
          The index range of all sections belonging to the given range.
  
      Example
      -------
      >>> from sortedcontainers import SortedList
      >>> seclist = SortedList([5, 8, 30, 31])
      >>> find_range_ix_in_section_list(3, 4, seclist)
      [0, 0]
      >>> find_range_ix_in_section_list(6, 7, seclist)
      [0, 1]
      >>> find_range_ix_in_section_list(7, 9, seclist)
      [0, 2]
      >>> find_range_ix_in_section_list(7, 30, seclist)
      [0, 3]
      >>> find_range_ix_in_section_list(7, 321, seclist)
      [0, 3]
      >>> find_range_ix_in_section_list(4, 321, seclist)
      [0, 3]
      """
      if start > section_list[-1] or end < section_list[0]:
          return [0, 0]
      if start < section_list[0]:
          start_section = section_list[0]
      else:
          start_section = find_point_in_section_list(start, section_list)
      if end > section_list[-1]:
          end_section = section_list[-2]
      else:
          end_section = find_point_in_section_list(end, section_list)
      return [
          section_list.index(start_section), section_list.index(end_section)+1]