docs: def select(
              self,
              selector):
          '''Transforms each element of a sequence into a new form.
  
          Each element of the source is transformed through a selector function
          to produce a corresponding element in teh result sequence.
  
          If the selector is identity the method will return self.
  
          Note: This method uses deferred execution.
  
          Args:
              selector: A unary function mapping a value in the source sequence
                  to the corresponding value in the generated generated sequence.
                  The single positional argument to the selector function is the
                  element value.  The return value of the selector function
                  should be the corresponding element of the result sequence.
  
          Returns:
              A Queryable over generated sequence whose elements are the result
              of invoking the selector function on each element of the source
              sequence.
  
          Raises:
              ValueError: If this Queryable has been closed.
              TypeError: If selector is not callable.
          '''
          if self.closed():
              raise ValueError("Attempt to call select() on a closed Queryable.")
  
          try:
              selector = make_selector(selector)
          except ValueError:
              raise TypeError("select() parameter selector={selector} cannot be"
                              "converted into a callable "
                              "selector".format(selector=repr(selector)))
  
          if selector is identity:
              return self
  
          return self._create(imap(selector, self))