code: def __repr__(self):
      if len(self.data) < 1:
          return ""
      column_names = list(self.data.values())[0].keys()
      column_names = ["name"] + list(column_names)
      print_list = [column_names]
      print_list += [
          [f"{key}"] + [_get_str(val[cn]) for cn in column_names[1:]]
          for key, val in self.data.items()
      ]
      col_size = [max(map(len, col)) for col in zip(*print_list)]
      ret_str = [
          " | ".join(
              f"{' ' * (col_size[idx] - len(val))}{val}"
              for idx, val in enumerate(print_list[0])
          )
      ]
      ret_str += [" | ".join(f"{'-' * cs}" for cs in col_size)]
      for pl in print_list[1:]:
          ret_str.append(
              " | ".join(
                  f"{' ' * (col_size[idx] - len(val))}{val}"
                  for idx, val in enumerate(pl)
              )
          )
      return "\n".join(ret_str)
  
file_path: coremltools/coremltools/optimize/torch/base_model_optimizer.py
imports: import logging
  from abc import ABC
  from abc import abstractmethod
  from collections import UserDict
  from typing import Optional
  from typing import Tuple
  import torch
  from coremltools.optimize.torch._utils.python_utils import get_str
  from coremltools.optimize.torch.optimization_config import OptimizationConfig
label_desc: Use image node_id 1 for calling the _Report obj's underlying member method code with example usage: obj.__repr__() and returns: str, str