class_docstr: Compiler is used to convert Function and Variable instances into
  ready-to-use GLSL code. This class handles name mangling to ensure that
  there are no name collisions amongst global objects. The final name of
  each object may be retrieved using ``Compiler.__getitem__(obj)``.
  
  Accepts multiple root Functions as keyword arguments. ``compile()`` then
  returns a dict of GLSL strings with the same keys.
  
  Example::
  
      # initialize with two main functions
      compiler = Compiler(vert=v_func, frag=f_func)
  
      # compile and extract shaders
      code = compiler.compile()
      v_code = code['vert']
      f_code = code['frag']
  
      # look up name of some object
      name = compiler[obj]
docstr: Assign *name* to *obj* in *shaders*.
code: def _assign_name(self, obj, name, shaders):
      """Assign *name* to *obj* in *shaders*."""
      if self._is_global(obj):
          assert name not in self._global_ns
          self._global_ns[name] = obj
      else:
          for shader in shaders:
              ns = self._shader_ns[shader]
              assert name not in ns
              ns[name] = obj
      self._object_names[obj] = name
  
file_path: vispy/vispy/visuals/shaders/compiler.py
imports: from __future__ import division
  from ...None import gloo
label_desc: Use image node_id 8 for calling the Compiler obj's underlying member method code with example usage: obj._assign_name(obj, name, shaders) without return types