docs: def get_summary(profile_block_list, maxlines=20):
      """
      References:
          https://github.com/rkern/line_profiler
      """
      time_list = [get_block_totaltime(block) for block in profile_block_list]
      time_list = [time if time is not None else -1 for time in time_list]
      blockid_list = [get_block_id(block) for block in profile_block_list]
      sortx = ut.list_argsort(time_list)
      sorted_time_list = ut.take(time_list, sortx)
      sorted_blockid_list = ut.take(blockid_list, sortx)
  
      aligned_blockid_list = ut.util_str.align_lines(sorted_blockid_list, ':')
      summary_lines = [('%6.2f seconds - ' % time) + line
                       for time, line in
                       zip(sorted_time_list, aligned_blockid_list)]
      #summary_header = ut.codeblock(
      #    '''
      #    CLEANED PROFILE OUPUT
  
      #    The Pystone timings are not from kernprof, so they may include kernprof
      #    overhead, whereas kernprof timings do not (unless the line being
      #    profiled is also decorated with kernrof)
  
      #    The kernprof times are reported in Timer Units
  
      #    ''')
      summary_lines_ = ut.listclip(summary_lines, maxlines, fromback=True)
      summary_text = '\n'.join(summary_lines_)
      return summary_text