docs: def order_by(self, key_selector=identity):
          '''Sorts by a key in ascending order.
  
          Introduces a primary sorting order to the sequence. Additional sort
          criteria should be specified by subsequent calls to then_by() and
          then_by_descending().  Calling order_by() or order_by_descending() on
          the results of a call to order_by() will introduce a new primary
          ordering which will override any already established ordering.
  
          This method performs a stable sort. The order of two elements with the
          same key will be preserved.
  
          Note: This method uses deferred execution.
  
          Args:
              key_selector: A unary function which extracts a key from each
                  element using which the result will be ordered.
  
          Returns:
              An OrderedQueryable over the sorted elements.
  
          Raises:
              ValueError: If the Queryable is closed.
              TypeError: If the key_selector is not callable.
          '''
          if self.closed():
              raise ValueError("Attempt to call order_by() on a "
                               "closed Queryable.")
  
          if not is_callable(key_selector):
              raise TypeError("order_by() parameter key_selector={key_selector} "
                      "is not callable".format(key_selector=repr(key_selector)))
  
          return self._create_ordered(iter(self), -1, key_selector)