code: def __getattr__(self, item):
      if item == "metrics":
          return MetricsView(self.meta_run_tree, self.proxy_cache)
      if item in ["finalized_at", "end_time"]:
          end_time = self.meta_run_tree["end_time"]
          if item == "finalized_at":
              if not end_time:
                  return None
              else:
                  return datetime.datetime.fromtimestamp(
                      end_time, tz=pytz.utc
                  ).replace(tzinfo=None) - datetime.timedelta(
                      minutes=self._timezone_offset
                  )
          else:
              return end_time
      if item == "created_at":
          return getattr(
              self.db.caches["runs_cache"][self.hash], item
          ) - datetime.timedelta(minutes=self._timezone_offset)
      if item in ("active", "duration"):
          return getattr(self.run, item)
      elif item in self.structured_run_cls.fields():
          if self.db:
              return getattr(
                  self.db.caches["runs_cache"][self.hash], item
              )
          else:
              return getattr(self.run, item)
      else:
          return self[item]
  
imports: import datetime
  import pytz
  from typing import Any, Union
  from typing import TYPE_CHECKING
  from aim.storage.context import Context
  from aim.storage.proxy import AimObjectProxy
  from aim.storage.structured.entities import StructuredObject
  from aim.storage.treeview import TreeView
  from aim.storage.types import AimObject, AimObjectKey, AimObjectPath, SafeNone
  from aim.storage.structured.sql_engine.entities import ModelMappedRun
label_desc: Use image node_id 2 for calling the RunView obj's underlying member method code with example usage: obj.__getattr__(item) and returns: MetricsView, unknown, getattr, end_time, self, None, unknown, getattr, getattr