docs: def select(read_streams, write_streams, timeout=0):
      """
      Select the streams from `read_streams` that are ready for reading, and
      streams from `write_streams` ready for writing.
  
      Uses `select.select()` internally but only returns two lists of ready streams.
      """
  
      exception_streams = []
  
      try:
          return builtin_select.select(
              read_streams,
              write_streams,
              exception_streams,
              timeout,
          )[0:2]
      except builtin_select.error as e:
          # POSIX signals interrupt select()
          no = e.errno if six.PY3 else e[0]
          if no == errno.EINTR:
              return ([], [])
          else:
              raise e