code: def select(self, timeout):
          '''wait for up to timeout seconds for more data'''
          if self.fd is None:
              time.sleep(min(timeout,0.5))
              return True
          try:
              (rin, win, xin) = select.select([self.fd], [], [], timeout)
          except select.error:
              return False
          return len(rin) == f select(self, timeout):
          '''wait for up to timeout seconds for more data'''
          if self.fd is None:
              time.sleep(min(timeout,0.5))
              return True
          try:
              (rin, win, xin) = select.select([self.fd], [], [], timeout)
          except select.error:
              return False
          return len(rin) == 1
docs: wait for up to timeout seconds for more data