docstr: Send last intermediate result as final result to tuner in case the
  trial is early stopped.
docstr_tok: ["Send","last","intermediate","result","as","final","result","to","tuner","in","case","the","trial","is","early","stopped","."]
code: def _earlystop_notify_tuner(self, data):
      """Send last intermediate result as final result to tuner in case the
      trial is early stopped.
      """
      _logger.debug("Early stop notify tuner data: [%s]", data)
      data["type"] = MetricType.FINAL
      data["value"] = dump(data["value"])
      self.enqueue_command(CommandType.ReportMetricData, data)
  
imports: import logging
  from collections import defaultdict
  from nni import NoMoreTrialError
  from nni.assessor import AssessResult
  from .common import multi_phase_enabled
  from .env_vars import dispatcher_env_vars
  from .msg_dispatcher_base import MsgDispatcherBase
  from .tuner_command_channel import CommandType
  from ..common.serializer import dump, load
  from ..utils import MetricType
label_desc: Use image node_id 14 for calling the MsgDispatcher obj's underlying member method code with example usage: obj._earlystop_notify_tuner(data) without return types