code: def _update_context_data(self, ctx: Context):
      if ctx not in self.contexts:
          self.meta_tree["contexts", ctx.idx] = ctx.to_dict()
          self.meta_run_tree["contexts", ctx.idx] = ctx.to_dict()
          self.contexts[ctx] = ctx.idx
          self._idx_to_ctx[ctx.idx] = ctx
  
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 10 for calling the RunTracker obj's underlying member method code with example usage: obj._update_context_data(ctx) without return types