code: def get_run_props(run: Run):
      return {
          "name": run.name if run.name else None,
          "description": run.description if run.description else None,
          "experiment": {
              "id": run.props.experiment_obj.uuid,
              "name": run.props.experiment_obj.name,
              "description": run.props.experiment_obj.description,
          }
          if run.props.experiment_obj
          else None,
          "tags": [
              {
                  "id": tag.uuid,
                  "name": tag.name,
                  "color": tag.color,
                  "description": tag.description,
              }
              for tag in run.props.tags_obj
          ],
          "archived": run.archived if run.archived else False,
          "creation_time": run.creation_time,
          "end_time": run.end_time,
          "active": run.active,
      }
  
imports: import asyncio
  import numpy
  import random
  import struct
  import time
  from collections import namedtuple
  from itertools import chain
  from typing import Iterator, Tuple, Optional, List
  from typing import TYPE_CHECKING
  from fastapi import HTTPException
  from aim.storage.context import Context
  from aim.sdk import Run
  from aim.sdk.sequences.metric import Metric
  from aim.sdk.sequence_collection import SequenceCollection
  from aim.storage.query import syntax_error_check
  from aim.web.configs import AIM_PROGRESS_REPORT_INTERVAL
  from aim.web.api.projects.project import Project
  from aim.web.api.runs.pydantic_models import AlignedRunIn, TraceBase
  from aim.storage.treeutils import encode_tree
label_desc: Use image node_id 5 for calling a global function with example usage: get_run_props(run) and returns: dict