code: def sort_values(expr, by, ascending=True):
      
      if not isinstance(by, list):
          by = [by, ]
      by = [it(expr) if inspect.isfunction(it) else it for it in by]
      return SortedCollectionExpr(expr, _sorted_fields=by, _ascending=ascending,
                                  _schema=expr._schema)
docs: Sort the collection by values. `sort` is an alias name for `sort_values`
  
      :param expr: collection
      :param by: the sequence or sequences to sort
      :param ascending: Sort ascending vs. descending. Sepecify list for multiple sort orders.
                        If this is a list of bools, must match the length of the by
      :return: Sorted collection
  
      :Example:
  
      >>> df.sort_values(['name', 'id'])  # 1
      >>> df.sort(['name', 'id'], ascending=False)  # 2
      >>> df.sort(['name', 'id'], ascending=[False, True])  # 3
      >>> df.sort([-df.name, df.id])  # 4, equal to #3