class_docstr: A stripped-down handler similar to CodeHandler but that does
  some appropriate monkeypatching.
class_docstr_tok: ["A","stripped-down","handler","similar","to","CodeHandler","but","that","does","some","appropriate","monkeypatching","."]
code: def _monkeypatch(self):
      def _pass(*args, **kw):
          pass
  
      def _add_root(obj, *args, **kw):
          curdoc().add_root(obj)
  
      def _curdoc(*args, **kw):
          return curdoc()
  
      # these functions are transitively imported from io into plotting,
      # so we have to patch them all. Assumption is that no other patching
      # has occurred, i.e. we can just save the funcs being patched once,
      # from io, and use those as the originals to replace everywhere
      import bokeh.io as io  # lgtm [py/import-and-import-from]
      import bokeh.plotting as p
  
      mods = [io, p]
  
      old_io = {}
      for f in self._output_funcs + self._io_funcs:
          old_io[f] = getattr(io, f)
  
      for mod in mods:
          for f in self._output_funcs:
              setattr(mod, f, _pass)
          for f in self._io_funcs:
              setattr(mod, f, _add_root)
  
      import bokeh.document as d
  
      old_doc = d.Document
      d.Document = _curdoc
  
      return old_io, old_doc
  
file_path: bokeh/src/bokeh/sphinxext/example_handler.py
imports: from __future__ import annotations
  import logging
  from typing import TYPE_CHECKING
  from bokeh.application.handlers.code_runner import CodeRunner
  from bokeh.application.handlers.handler import Handler
  from bokeh.core.types import PathLike
  from bokeh.io.doc import curdoc, set_curdoc
label_desc: Use image node_id 3 for calling the ExampleHandler obj's underlying member method code with example usage: obj._monkeypatch() and returns: old_io,  old_doc, curdoc