docstr: Wait for a kernel to be ready, and store kernel info
docstr_tok: ["Wait","for","a","kernel","to","be","ready",",","and","store","kernel","info"]
code: def init_kernel_info(self):
      """Wait for a kernel to be ready, and store kernel info"""
      timeout = self.kernel_timeout
      tic = time.time()
      self.kernel_client.hb_channel.unpause()
      msg_id = self.kernel_client.kernel_info()
      while True:
          try:
              reply = self.kernel_client.get_shell_msg(timeout=1)
          except queue.Empty:
              if (time.time() - tic) > timeout:
                  raise RuntimeError(
                      "Kernel didn't respond to kernel_info_request"
                  )
          else:
              if reply["parent_header"].get("msg_id") == msg_id:
                  self.kernel_info = reply["content"]
                  return
  
file_path: catboost/contrib/python/jupyter-client/py2/jupyter_client/runapp.py
imports: from __future__ import print_function
  import logging
  import signal
  import time
  import sys
  from traitlets.config import catch_config_error
  from traitlets import Instance, Dict, Unicode, Bool, List, CUnicode, Any, Float
  from jupyter_core.application import JupyterApp, base_flags, base_aliases
  from .None import __version__
  from .consoleapp import JupyterConsoleApp, app_aliases, app_flags
label_desc: Use image node_id 4 for calling the RunApp obj's underlying member method code with example usage: obj.init_kernel_info() without return types