class_docstr: Runs Airflow task instances via CLI.
  
  Invoke the `airflow tasks run` command with raw mode enabled in a subprocess.
  
  :param job_runner: The LocalTaskJobRunner associated with the task runner
code: def _read_task_logs(self, stream):
      while True:
          line = stream.readline()
          if isinstance(line, bytes):
              line = line.decode("utf-8")
          if not line:
              break
          self.log.info(
              "Job %s: Subtask %s %s",
              self._task_instance.job_id,
              self._task_instance.task_id,
              line.rstrip("\n"),
          )
  
imports: from __future__ import annotations
  import os
  import subprocess
  import threading
  from airflow.utils.dag_parsing_context import _airflow_parsing_context_manager
  from airflow.utils.platform import IS_WINDOWS
  from typing import TYPE_CHECKING
  from airflow.configuration import conf
  from airflow.exceptions import AirflowConfigException
  from airflow.utils.configuration import tmp_configuration_copy
  from airflow.utils.log.logging_mixin import LoggingMixin
  from airflow.utils.net import get_hostname
  from airflow.utils.platform import getuser
label_desc: Use image node_id 2 for calling the BaseTaskRunner obj's underlying member method code with example usage: obj._read_task_logs(stream) without return types