class_docstr: ``InputBase`` is the base class for the :class:`~flash.core.data.io.input.Input` and
  :class:`~flash.core.data.io.input.IterableInput` dataset implementations in Flash. These datasets are constructed
  via the ``load_data`` and ``load_sample`` hooks, which allow a single dataset object to include custom loading logic
  according to the running stage (e.g. train, validate, test, predict).
  
  Args:
      running_stage: The running stage for which the input will be used.
      *args: Any arguments that are to be passed to the ``load_data`` hook.
      **kwargs: Any additional keyword arguments to pass to the ``load_data`` hook.
code: def _call_load_sample(self, sample: Any) -> Any:
      # Deepcopy the sample to avoid leaks with complex data structures
      sample_output = getattr(
          self, f"{_STAGES_PREFIX[self.running_stage]}_load_sample"
      )(_deepcopy_dict(sample))
  
      # Change DataKeys Enum to strings
      if isinstance(sample_output, dict):
          output_dict = {}
          for key, val in sample_output.items():
              if isinstance(key, Enum) and hasattr(key, "value"):
                  output_dict[key.value] = val
              else:
                  output_dict[key] = val
          return output_dict
      return sample_output
  
imports: import functools
  import os
  from enum import Enum
  from typing import Any, Dict, Iterable, List, Sequence, Tuple, Union, cast
  from pytorch_lightning.utilities.enums import LightningEnum
  from torch.utils.data import Dataset
  from flash.core.data.properties import Properties
  from flash.core.data.utils import _STAGES_PREFIX
  from flash.core.utilities.stages import RunningStage
label_desc: Use image node_id 2 for calling the InputBase obj's underlying member method code with example usage: obj._call_load_sample(sample) and returns: sample_output, output_dict