code: def print_(rows, limit=15, sort='size', order='descending'):
      
      localrows = []
      for row in rows:
          localrows.append(list(row))
      # input validation
      sortby = ['type', '#', 'size']
      if sort not in sortby:
          raise ValueError("invalid sort, should be one of" + str(sortby))
      orders = ['ascending', 'descending']
      if order not in orders:
          raise ValueError("invalid order, should be one of" + str(orders))
      # sort rows
      if sortby.index(sort) == 0:
          if order == "ascending":
              localrows.sort(key=lambda x: _repr(x[0]))
          elif order == "descending":
              localrows.sort(key=lambda x: _repr(x[0]), reverse=True)
      else:
          if order == "ascending":
              localrows.sort(key=lambda x: x[sortby.index(sort)])
          elif order == "descending":
              localrows.sort(key=lambda x: x[sortby.index(sort)], reverse=True)
      # limit rows
      localrows = localrows[0:limit]
      for row in localrows:
          row[2] = stringutils.pp(row[2])
      # print rows
      localrows.insert(0,["types", "# objects", "total size"])
      _print_table(localrows)
docs: Print the rows as a summary.
  
      Keyword arguments:
      limit -- the maximum number of elements to be listed
      sort  -- sort elements by 'size', 'type', or '#'
      order -- sort 'ascending' or 'descending'