code: def start_kernel(argv=None, **kwargs):
      """Launch a normal IPython kernel instance (as opposed to embedded)
  
      `IPython.embed_kernel()` puts a shell in a particular calling scope,
      such as a function or method for debugging purposes,
      which is often not desirable.
  
      `start_kernel()` does full, regular IPython initialization,
      including loading startup files, configuration, etc.
      much of which is skipped by `embed_kernel()`.
  
      Parameters
      ----------
      argv : list or None, optional
          If unspecified or None, IPython will parse command-line options from sys.argv.
          To prevent any command-line parsing, pass an empty list: `argv=[]`.
      user_ns : dict, optional
          specify this dictionary to initialize the IPython user namespace with particular values.
      **kwargs : various, optional
          Any other kwargs will be passed to the Application constructor,
          such as `config`, a traitlets :class:`Config` object (see :ref:`configure_start_ipython`),
          allowing configuration of the kernel (see :ref:`kernel_options`).
      """
      import warnings
  
      warnings.warn(
          "start_kernel is deprecated since IPython 8.0, use from `ipykernel.kernelapp.launch_new_instance`",
          DeprecationWarning,
          stacklevel=2,
      )
      from ipykernel.kernelapp import launch_new_instance
  
      return launch_new_instance(argv=argv, **kwargs)
  
file_path: catboost/contrib/python/ipython/py3/IPython/__init__.py
imports: import sys
  from .core.getipython import get_ipython
  from .core import release
  from .core.application import Application
  from .terminal.embed import embed
  from .core.interactiveshell import InteractiveShell
  from .utils.sysinfo import sys_info
  from .utils.frame import extract_module_locals
label_desc: Use image node_id 3 for calling a global function with example usage: start_kernel(argv) and returns: launch_new_instance