code: def __getitem__(self, uniform_name):
      if uniform_name not in self._uniforms:
          self._uniforms[uniform_name] = gl.glGetUniformLocation(
              self, uniform_name
          )
      return self._uniforms[uniform_name]
  
imports: from contextlib import contextmanager
  import numpy
  import OpenGL.GL
  from .meshutil import perspective
label_desc: Use image node_id 3 for calling the Shader obj's underlying member method code with example usage: obj.__getitem__(uniform_name) and returns: self