code: def wait_for_ready(self):
      # Wait for kernel info reply on shell channel
      while True:
          msg = self.shell_channel.get_msg(block=True)
          if msg["msg_type"] == "kernel_info_reply":
              self._handle_kernel_info_reply(msg)
              break
  
      # Flush IOPub channel
      while True:
          try:
              msg = self.iopub_channel.get_msg(block=True, timeout=0.2)
              print(msg["msg_type"])
          except Empty:
              break
  
file_path: catboost/contrib/python/ipykernel/py2/ipykernel/inprocess/blocking.py
imports: from IPython.utils.io import raw_print
  from traitlets import Type
  from .channels import InProcessChannel
  from .client import InProcessKernelClient
label_desc: Use image node_id 1 for calling the BlockingInProcessKernelClient obj's underlying member method code with example usage: obj.wait_for_ready() without return types