code: def _create_indicator(self, key: str, value: any):
      if key in self.indicators:
          return
  
      ind_key, ind_score = strings.find_best_pattern(
          key, self.dot_indicators.keys()
      )
      if ind_key is None:
          raise ValueError(f"Cannot find matching indicator for {key}")
      if ind_score == 0:
          is_print = self.dot_indicators[ind_key].is_print
          self.indicators[key] = create_default_indicator(
              key, value, is_print
          )
      else:
          self.indicators[key] = self.dot_indicators[ind_key].copy(key)
      self.is_indicators_updated = True
  
imports: from pathlib import PurePath
  from typing import Dict, List, Optional, Callable, Union, Tuple
  from labml import logger
  from .indicators import Indicator
  from .indicators.factory import load_indicator_from_dict, create_default_indicator
  from .indicators.numeric import Scalar
  from .namespace import Namespace
  from .writers import Writer
  from .writers.screen import ScreenWriter
  from ..None import util
  from ..lab import lab_singleton, LabYamlNotfoundError
  from ..logger import LogPart
  from ..util import strings
  from ..util.colors import StyleCode
label_desc: Use image node_id 13 for calling the Tracker obj's underlying member method code with example usage: obj._create_indicator(key, value) without return types