code: def hopper(mode=None, cache={}):
      if mode is None:
          # Always return fresh not-yet-loaded version of image.
          # Operations on not-yet-loaded images is separate class of errors
          # what we should catch.
          return Image.open("Tests/images/hopper.ppm")
      # Use caching to reduce reading from disk but so an original copy is
      # returned each time and the cached image isn't modified by tests
      # (for fast, isolated, repeatable tests).
      im = cache.get(mode)
      if im is None:
          if mode == "F":
              im = hopper("L").convert(mode)
          elif mode[:4] == "I;16":
              im = hopper("I").convert(mode)
          else:
              im = hopper().convert(mode)
          cache[mode] = im
      return im.copy()
  
imports: import logging
  import os
  import shutil
  import sys
  import sysconfig
  import tempfile
  from io import BytesIO
  import pytest
  from packaging.version import parse
  from PIL import Image, ImageMath, features
label_desc: Use image node_id 16 for calling a global function with example usage: hopper(mode, cache) and returns: im, Image