class_docstr: Trainable that runs a user function reporting results.
  
  This mode of execution does not support checkpoint/restore.
code: def setup(self, config):
      init_session(
          training_func=lambda: self._trainable_func(self.config),
          trial_info=TrialInfo(
              name=self.trial_name,
              id=self.trial_id,
              resources=self.trial_resources,
              logdir=self._storage.trial_local_path,
              driver_ip=None,
              experiment_name=self._storage.experiment_dir_name,
          ),
          storage=self._storage,
          synchronous_result_reporting=True,
          # Set all Train-specific properties to None.
          world_rank=None,
          local_rank=None,
          node_rank=None,
          local_world_size=None,
          world_size=None,
          dataset_shard=None,
          checkpoint=None,
      )
      self._last_training_result: Optional[_TrainingResult] = None
  
imports: import inspect
  import logging
  import os
  from functools import partial
  from numbers import Number
  from typing import Any, Callable, Dict, Optional, Type
  from ray.air._internal.util import StartTraceback, RunnerThread
  import queue
  from ray.air.constants import _ERROR_FETCH_TIMEOUT
  import ray.train
  from ray.train._internal.checkpoint_manager import _TrainingResult
  from ray.train._internal.session import init_session, get_session, shutdown_session, _TrainSession, TrialInfo
  from ray.tune.execution.placement_groups import PlacementGroupFactory
  from ray.tune.result import DEFAULT_METRIC, RESULT_DUPLICATE, SHOULD_CHECKPOINT
  from ray.tune.trainable import Trainable
  from ray.tune.utils import _detect_checkpoint_function, _detect_config_single, _detect_reporter
  from ray.util.annotations import DeveloperAPI
label_desc: Use image node_id 1 for calling the FunctionTrainable obj's underlying member method code with example usage: obj.setup(config) without return types