class_docstr: Implementation of HpoExecutor Interface, where ray tune is used as the backend
code: def get_hpo_results(self, model_name, model_path_root, **kwargs):
      assert (
          self.analysis is not None
      ), "Call `execute()` before `get_hpo_results()`"
      hpo_models = {}
      for trial, details in self.analysis.results.items():
          validation_performance = details.get(
              "validation_performance", None
          )
          # when equals to -inf, trial finished with TimeLimitExceeded exception and didn't finish at least 1 epoch
          if (
              validation_performance is None
              or validation_performance == float("-inf")
          ):
              continue
          trial_id = details.get("trial_id")
          file_id = (
              trial_id  # unique identifier to files from this trial
          )
          trial_model_name = os.path.join(model_name, file_id)
          trial_model_path = os.path.join(
              model_path_root, trial_model_name
          )
          hpo_models[trial_model_name] = dict(path=trial_model_path)
  
          hpo_models[trial_model_name] = dict(
              path=trial_model_path,
              val_score=validation_performance,
              trial=trial,
              hyperparameters=details["config"],
          )
  
      return hpo_models, self.analysis
  
imports: from __future__ import annotations
  import copy
  import logging
  import math
  import os
  import time
  from abc import ABC, abstractmethod
  from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Tuple, Union
  import pandas
  from autogluon.common import space
  from autogluon.common.utils.resource_utils import ResourceManager
  from autogluon.common.utils.s3_utils import is_s3_url
  from ..ray.resources_calculator import ResourceCalculator
  from ..scheduler.scheduler_factory import scheduler_factory
  from ..utils.savers import save_pkl
  from .constants import CUSTOM_BACKEND, RAY_BACKEND
  from .exceptions import EmptySearchSpace
label_desc: Use image node_id 7 for calling the RayHpoExecutor obj's underlying member method code with example usage: obj.get_hpo_results(model_name, model_path_root) and returns: hpo_models,  self