code: def run(self):
          '''Reads from the channel (pipe) that is the output pipe for a
          called Popen. As we are reading from the pipe, the output is added
          to a deque. After the size of the deque exceeds the sizelimit
          earlier (older) entries are removed.
  
          This means the returned output is chunksize-sensitive, but is not
          really byte-sensitive.
          '''
          try:
              while True:
                  line = self.chan.read(self.chunksize)
                  if not line:
                      # Pipe can remain open after output has completed
                      break
                  self.deque.append(line)
          except (ValueError, IOError):
              # pipe has closed, meaning command output is done
              pass
          self.running = Falsf run(self):
          '''Reads from the channel (pipe) that is the output pipe for a
          called Popen. As we are reading from the pipe, the output is added
          to a deque. After the size of the deque exceeds the sizelimit
          earlier (older) entries are removed.
  
          This means the returned output is chunksize-sensitive, but is not
          really byte-sensitive.
          '''
          try:
              while True:
                  line = self.chan.read(self.chunksize)
                  if not line:
                      # Pipe can remain open after output has completed
                      break
                  self.deque.append(line)
          except (ValueError, IOError):
              # pipe has closed, meaning command output is done
              pass
          self.running = False
docs: Reads from the channel (pipe) that is the output pipe for a
          called Popen. As we are reading from the pipe, the output is added
          to a deque. After the size of the deque exceeds the sizelimit
          earlier (older) entries are removed.
  
          This means the returned output is chunksize-sensitive, but is not
          really byte-sensitive.