code: def getmode(mode):
      """Gets a mode descriptor for the given mode."""
      global _modes
      if not _modes:
          # initialize mode cache
          modes = {}
          for m, (basemode, basetype, bands) in {
              # core modes
              "1": ("L", "L", ("1",)),
              "L": ("L", "L", ("L",)),
              "I": ("L", "I", ("I",)),
              "F": ("L", "F", ("F",)),
              "P": ("P", "L", ("P",)),
              "RGB": ("RGB", "L", ("R", "G", "B")),
              "RGBX": ("RGB", "L", ("R", "G", "B", "X")),
              "RGBA": ("RGB", "L", ("R", "G", "B", "A")),
              "CMYK": ("RGB", "L", ("C", "M", "Y", "K")),
              "YCbCr": ("RGB", "L", ("Y", "Cb", "Cr")),
              "LAB": ("RGB", "L", ("L", "A", "B")),
              "HSV": ("RGB", "L", ("H", "S", "V")),
              # extra experimental modes
              "RGBa": ("RGB", "L", ("R", "G", "B", "a")),
              "LA": ("L", "L", ("L", "A")),
              "La": ("L", "L", ("L", "a")),
              "PA": ("RGB", "L", ("P", "A")),
          }.items():
              modes[m] = ModeDescriptor(m, bands, basemode, basetype)
          # mapping modes
          for i16mode in (
              "I;16",
              "I;16S",
              "I;16L",
              "I;16LS",
              "I;16B",
              "I;16BS",
              "I;16N",
              "I;16NS",
          ):
              modes[i16mode] = ModeDescriptor(i16mode, ("I",), "L", "L")
          # set global mode cache atomically
          _modes = modes
      return _modes[mode]
  
label_desc: Use image node_id 1 for calling a global function with example usage: getmode(mode) and returns: _modes