code: def configure_inline_support(shell, backend):
      """Configure an IPython shell object for matplotlib use.
  
      Parameters
      ----------
      shell : InteractiveShell instance
  
      backend : matplotlib backend
      """
      # If using our svg payload backend, register the post-execution
      # function that will pick up the results for display.  This can only be
      # done with access to the real shell object.
  
      # Note: if we can't load the inline backend, then there's no point
      # continuing (such as in terminal-only shells in environments without
      # zeromq available).
      try:
          from ipykernel.pylab.backend_inline import InlineBackend
      except ImportError:
          return
      import matplotlib
  
      cfg = InlineBackend.instance(parent=shell)
      cfg.shell = shell
      if cfg not in shell.configurables:
          shell.configurables.append(cfg)
  
      if backend == backends["inline"]:
          from ipykernel.pylab.backend_inline import flush_figures
  
          shell.events.register("post_execute", flush_figures)
  
          # Save rcParams that will be overwrittern
          shell._saved_rcParams = dict()
          for k in cfg.rc:
              shell._saved_rcParams[k] = matplotlib.rcParams[k]
          # load inline_rc
          matplotlib.rcParams.update(cfg.rc)
          new_backend_name = "inline"
      else:
          from ipykernel.pylab.backend_inline import flush_figures
  
          try:
              shell.events.unregister("post_execute", flush_figures)
          except ValueError:
              pass
          if hasattr(shell, "_saved_rcParams"):
              matplotlib.rcParams.update(shell._saved_rcParams)
              del shell._saved_rcParams
          new_backend_name = "other"
  
      # only enable the formats once -> don't change the enabled formats (which the user may
      # has changed) when getting another "%matplotlib inline" call.
      # See https://github.com/ipython/ipykernel/issues/29
      cur_backend = getattr(
          configure_inline_support, "current_backend", "unset"
      )
      if new_backend_name != cur_backend:
          # Setup the default figure format
          select_figure_formats(
              shell, cfg.figure_formats, **cfg.print_figure_kwargs
          )
          configure_inline_support.current_backend = new_backend_name
  
file_path: catboost/contrib/python/ipython/py2/IPython/core/pylabtools.py
imports: from __future__ import print_function
  from io import BytesIO
  from IPython.core.display import _pngxy
  from IPython.utils.decorators import flag_calls
  from IPython.utils import py3compat
label_desc: Use image node_id 11 for calling a global function with example usage: configure_inline_support(shell, backend) without return types