code: def linkcode_resolve(domain, info):
      """
      Determine the URL corresponding to Python object
      """
      if domain != "py":
          return None
  
      modname = info["module"]
      fullname = info["fullname"]
  
      submod = sys.modules.get(modname)
      if submod is None:
          return None
  
      obj = submod
      for part in fullname.split("."):
          try:
              obj = getattr(obj, part)
          except AttributeError:
              return None
  
      # Strip decorators which would resolve to the source of the decorator
      obj = inspect.unwrap(obj)
  
      try:
          fn = inspect.getsourcefile(obj)
      except TypeError:
          fn = None
  
      if not fn:
          return None
  
      try:
          source, start_line = inspect.getsourcelines(obj)
      except OSError:
          linespec = ""
      else:
          stop_line = start_line + len(source) - 1
          linespec = f"#L{start_line}-L{stop_line}"
  
      fn = os.path.relpath(fn, start=os.path.dirname(skimage.__file__))
  
      if "dev" in skimage.__version__:
          return (
              "https://github.com/scikit-image/scikit-image/blob/"
              f"main/skimage/{fn}{linespec}"
          )
      else:
          return (
              "https://github.com/scikit-image/scikit-image/blob/"
              f"v{skimage.__version__}/skimage/{fn}{linespec}"
          )
  
file_path: scikit-image/doc/source/conf.py
imports: from datetime import date
  import inspect
  import os
  import sys
  from warnings import filterwarnings
  import plotly.io
  import skimage
  from packaging.version import parse
  from plotly.io._sg_scraper import plotly_sg_scraper
  from sphinx_gallery.sorting import ExplicitOrder
  from sphinx_gallery.utils import _has_optipng
label_desc: Use image node_id 1 for calling a global function with example usage: linkcode_resolve(domain, info) and returns: None, None, None, str, fn, linespec, str, skimage, str, fn, linespec, None