class_docstr: The class defines the interface of nodes modifying tha data flow in the :class:`Pipeline`
  
  Args:
      operation_type: operation defined in the operation repository
      nodes_from: parent nodes where data comes from
      node_data: ``dict`` with :class:`InputData` for fit and predict stage
      kwargs: optional arguments (i.e. logger)
code: def _get_input_data(
      self, input_data: InputData, parent_operation: str
  ):
      if self.nodes_from:
          input_data = self._input_from_parents(
              input_data=input_data, parent_operation=parent_operation
          )
      else:
          if self.direct_set:
              input_data = self.node_data
          else:
              self.node_data = input_data
      return input_data
  
imports: from __future__ import annotations
  from dataclasses import dataclass
  from typing import Any, List, Optional, Tuple, Union
  import numpy
  from golem.core.dag.linked_graph_node import LinkedGraphNode
  from golem.core.log import default_log
  from golem.core.optimisers.timer import Timer
  from golem.serializers.serializer import register_serializable
  from fedot.core.data.data import InputData, OutputData
  from fedot.core.data.merge.data_merger import DataMerger
  from fedot.core.operations.factory import OperationFactory
  from fedot.core.operations.operation import Operation
  from fedot.core.operations.operation_parameters import OperationParameters
  from fedot.core.repository.operation_types_repository import OperationTypesRepository
  from fedot.core.utils import DEFAULT_PARAMS_STUB, NESTED_PARAMS_LABEL
label_desc: Use image node_id 17 for calling the PipelineNode obj's underlying member method code with example usage: obj._get_input_data(input_data, parent_operation) and returns: input_data