code: def _eval_write(
      self, stream_info: "WatcherBase.StreamInfo", event_data: EventData
  ):
      eval_return = stream_info.evaler.post(event_data)
      if eval_return.is_valid:
          event_name = stream_info.req.event_name
          stream_item = StreamItem(
              value=eval_return.result, exception=eval_return.exception
          )
          stream_info.stream.write(stream_item)
          utils.debug_log("eval_return sent", event_name, verbosity=5)
      else:
          utils.debug_log("Invalid eval_return not sent", verbosity=5)
  
imports: from typing import Dict, Any, Sequence
  from .lv_types import EventData, StreamItem, StreamCreateRequest, VisArgs
  from .evaler import Evaler
  from .stream import Stream
  from .stream_factory import StreamFactory
  from .filtered_stream import FilteredStream
  import uuid, time, functools
  from .None import utils
  from .notebook_maker import NotebookMaker
label_desc: Use image node_id 12 for calling the WatcherBase obj's underlying member method code with example usage: obj._eval_write(stream_info, event_data) without return types