class_docstr: TensorBoardX Logger.
  
  Note that hparams will be written only after a trial has terminated.
  This logger automatically flattens nested dicts to show on TensorBoard:
  
      {"a": {"b": 1, "c": 2}} -> {"a/b": 1, "a/c": 2}
code: def log_trial_end(self, trial: "Trial", failed: bool = False):
      if trial in self._trial_writer:
          if (
              trial
              and trial.evaluated_params
              and self._trial_result[trial]
          ):
              flat_result = flatten_dict(
                  self._trial_result[trial], delimiter="/"
              )
              scrubbed_result = {
                  k: value
                  for k, value in flat_result.items()
                  if isinstance(value, tuple(VALID_SUMMARY_TYPES))
              }
              self._try_log_hparams(trial, scrubbed_result)
          self._trial_writer[trial].close()
          del self._trial_writer[trial]
          del self._trial_result[trial]
  
imports: import logging
  import numpy
  from typing import TYPE_CHECKING, Dict
  from ray.air.constants import TRAINING_ITERATION
  from ray.tune.logger.logger import _LOGGER_DEPRECATION_WARNING, Logger, LoggerCallback
  from ray.util.debug import log_once
  from ray.tune.result import TIME_TOTAL_S, TIMESTEPS_TOTAL
  from ray.tune.utils import flatten_dict
  from ray.util.annotations import Deprecated, PublicAPI
label_desc: Use image node_id 4 for calling the TBXLoggerCallback obj's underlying member method code with example usage: obj.log_trial_end(trial, failed) without return types