code: def _forward_stdout(self, process):
          '''
          Reads the stdout of `process` and forwards lines and progress
          to any interested subscribers
          '''
          while True:
              line = process.stdout.readline()
              if not line:
                  break
              pub.send_message(events.CONSOLE_UPDATE, msg=line.decode(self.encoding))
              pub.send_message(events.PROGRESS_UPDATE,
                               progress=self._extract_progress(line))
          pub.send_message(events.EXECUTION_COMPLETEf _forward_stdout(self, process):
          '''
          Reads the stdout of `process` and forwards lines and progress
          to any interested subscribers
          '''
          while True:
              line = process.stdout.readline()
              if not line:
                  break
              pub.send_message(events.CONSOLE_UPDATE, msg=line.decode(self.encoding))
              pub.send_message(events.PROGRESS_UPDATE,
                               progress=self._extract_progress(line))
          pub.send_message(events.EXECUTION_COMPLETE)
docs: Reads the stdout of `process` and forwards lines and progress
          to any interested subscribers