code: def pipe_data_received(self, fd: int, data: bytes) -> None:
      self.send_result((fd, data.decode()))
  
imports: from __future__ import annotations
  import sys
  from queue import Queue
  from typing import Any, Optional
  from datalad.runner.coreprotocols import NoCapture, StdOutErrCapture
  from datalad.runner.nonasyncrunner import _ResultGenerator, run_command
  from datalad.runner.protocol import GeneratorMixIn
  from datalad.tests.utils_pytest import assert_equal, assert_raises
  from ..exception import CommandError
  from ..runner import WitlessRunner
  from .utils import py2cmd
label_desc: Use image node_id 2 for calling the TestProtocol obj's underlying member method code with example usage: obj.pipe_data_received(fd, data) without return types