code: def _normalized_values(value, name):
      def _normalize_single_value(val):
          if is_number(val):
              return convert_to_py_number(val)
          elif isinstance(val, (CustomObject, list, tuple)):
              return val
          else:
              raise ValueError(
                  f"Input type {type(value)} is neither python number nor AimObject"
              )
  
      if isinstance(value, dict):
          if name is not None:
              raise ValueError(
                  "'name' should be None when tracking values dictionary."
              )
          return {
              str(k): _normalize_single_value(v)
              for k, v in value.items()
          }
      else:
          if name is None:
              raise ValueError("'name' should not be None.")
          return {name: _normalize_single_value(value)}
  
imports: import datetime
  import os
  import logging
  from collections import defaultdict
  from copy import deepcopy
  from typing import Dict, Tuple, TYPE_CHECKING
  import pytz
  from aim.sdk.configs import AIM_ENABLE_TRACKING_THREAD
  from aim.sdk.num_utils import is_number, convert_to_py_number
  from aim.sdk.utils import get_object_typename, check_types_compatibility
  from aim.storage.hashing import hash_auto
  from aim.storage.context import Context
  from aim.storage.object import CustomObject
  from aim.storage.types import AimObject
label_desc: Use image node_id 12 for calling the RunTracker obj's underlying member method code with example usage: obj._normalized_values(value, name) and returns: unknown, dict, convert_to_py_number, val