class_docstr: Airflow rich console.
class_docstr_tok: ["Airflow","rich","console","."]
code: def _normalize_data(
      self, value: Any, output: str
  ) -> list | str | dict | None:
      if isinstance(value, (tuple, list)):
          if output == "table":
              return ",".join(
                  str(self._normalize_data(x, output)) for x in value
              )
          return [self._normalize_data(x, output) for x in value]
      if isinstance(value, dict) and output != "table":
          return {
              k: self._normalize_data(v, output)
              for k, v in value.items()
          }
      if inspect.isclass(value) and not isinstance(
          value, PluginsDirectorySource
      ):
          return value.__name__
      if value is None:
          return None
      return str(value)
  
imports: from __future__ import annotations
  import inspect
  import json
  from typing import TYPE_CHECKING, Any, Callable, Sequence
  from rich.box import ASCII_DOUBLE_HEAD
  from rich.console import Console
  from rich.syntax import Syntax
  from rich.table import Table
  from tabulate import tabulate
  from airflow.plugins_manager import PluginsDirectorySource
  from airflow.utils import yaml
  from airflow.utils.platform import is_tty
label_desc: Use image node_id 6 for calling the AirflowConsole obj's underlying member method code with example usage: obj._normalize_data(value, output) and returns: str, unknown, unknown, value, None, str