class_docstr: Base class for all objects that may be included in a GLSL program
  (Functions, Variables, Expressions).
  
  Shader objects have a *definition* that defines the object in GLSL, an
  *expression* that is used to reference the object, and a set of
  *dependencies* that must be declared before the object is used.
  
  Dependencies are tracked hierarchically such that changes to any object
  will be propagated up the dependency hierarchy to trigger a recompile.
class_docstr_tok: ["Base","class","for","all","objects","that","may","be","included","in","a","GLSL","program","(","Functions",",","Variables",",","Expressions",")",".","Shader","objects","have","a","*","definition","*","that","defines","the","object","in","GLSL",",","an","*","expression","*","that","is","used","to","reference","the","object",",","and","a","set","of","*","dependencies","*","that","must","be","declared","before","the","object","is","used",".","Dependencies","are","tracked","hierarchically","such","that","changes","to","any","object","will","be","propagated","up","the","dependency","hierarchy","to","trigger","a","recompile","."]
docstr: Return a compilation of this object and its dependencies.
  
  Note: this is mainly for debugging purposes; the names in this code
  are not guaranteed to match names in any other compilations. Use
  Compiler directly to ensure consistent naming across multiple objects.
docstr_tok: ["Return","a","compilation","of","this","object","and","its","dependencies",".","Note",":","this","is","mainly","for","debugging","purposes",";","the","names","in","this","code","are","not","guaranteed","to","match","names","in","any","other","compilations",".","Use","Compiler","directly","to","ensure","consistent","naming","across","multiple","objects","."]
code: def compile(self):
      """Return a compilation of this object and its dependencies.
  
      Note: this is mainly for debugging purposes; the names in this code
      are not guaranteed to match names in any other compilations. Use
      Compiler directly to ensure consistent naming across multiple objects.
      """
      compiler = Compiler(obj=self)
      return compiler.compile()["obj"]
  
imports: from collections import OrderedDict
  from weakref import WeakKeyDictionary
  from .compiler import Compiler
  from .variable import Variable
  from .expression import TextExpression
label_desc: Use image node_id 13 for calling the ShaderObject obj's underlying member method code with example usage: obj.compile() and returns: compiler