code: def setup(app):
      setup.app = app
      setup.config = app.config
      setup.confdir = app.confdir
  
      options = {
          "alt": directives.unchanged,
          "height": directives.length_or_unitless,
          "width": directives.length_or_percentage_or_unitless,
          "scale": directives.nonnegative_int,
          "align": _option_align,
          "class": directives.class_option,
          "include-source": _option_boolean,
          "format": _option_format,
          "context": _option_context,
          "nofigs": directives.flag,
          "encoding": directives.encoding,
      }
  
      app.add_directive(
          "plot", plot_directive, True, (0, 2, False), **options
      )
      app.add_config_value("plot_pre_code", None, True)
      app.add_config_value("plot_include_source", False, True)
      app.add_config_value("plot_html_show_source_link", True, True)
      app.add_config_value(
          "plot_formats", ["png", "hires.png", "pdf"], True
      )
      app.add_config_value("plot_basedir", None, True)
      app.add_config_value("plot_html_show_formats", True, True)
      app.add_config_value("plot_rcparams", {}, True)
      app.add_config_value("plot_apply_rcparams", False, True)
      app.add_config_value("plot_working_directory", None, True)
      app.add_config_value("plot_template", None, True)
  
      app.connect(str("doctree-read"), mark_plot_labels)
  
      metadata = {
          "parallel_read_safe": True,
          "parallel_write_safe": True,
      }
      return metadata
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import six
  from six.moves import xrange
  import sys, os, shutil, io, re, textwrap
  from os.path import relpath
  import traceback
  import warnings
  from docutils.parsers.rst import directives
  from docutils.parsers.rst.directives.images import Image
  import sphinx
  import jinja2
  import matplotlib
  import matplotlib.cbook
  from matplotlib import _pylab_helpers
label_desc: Use image node_id 7 for calling a global function with example usage: setup(app) and returns: metadata