class_docstr: A blocking in-process kernel client.
class_docstr_tok: ["A","blocking","in-process","kernel","client","."]
docstr: Wait for kernel info reply on shell channel.
docstr_tok: ["Wait","for","kernel","info","reply","on","shell","channel","."]
code: def wait_for_ready(self):
      """Wait for kernel info reply on shell channel."""
      while True:
          self.kernel_info()
          try:
              msg = self.shell_channel.get_msg(block=True, timeout=1)
          except Empty:
              pass
          else:
              if msg["msg_type"] == "kernel_info_reply":
                  # Checking that IOPub is connected. If it is not connected, start over.
                  try:
                      self.iopub_channel.get_msg(
                          block=True, timeout=0.2
                      )
                  except Empty:
                      pass
                  else:
                      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/py3/ipykernel/inprocess/blocking.py
imports: import sys
  from queue import Empty, Queue
  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