class_docstr: Emulates the API of a MainFunction while wrapping all vertex or fragment
  shaders in a MultiProgram.
  
  Example::
  
      mp = MultiProgram(vert, frag)
      mp.add_program('p1')
      mp.add_program('p2')
  
      # applies to all programs
      mp.vert['u_scale'] = (1, 2)
  
      # applies to one program
      mp.get_program('p1').frag['u_color'] = (1, 1, 1, 1)  
code: def __getitem__(self, key):
      return self._set_items[key]
  
imports: import weakref
  from .program import ModularProgram
label_desc: Use image node_id 2 for calling the MultiShader obj's underlying member method code with example usage: obj.__getitem__(key) and returns: self