class_docstr: Base class for "value getters" (e.g., class DictValueGetter) that are used
  to resolve values of sub-fields after the experiment's config dictionary (in
  description.py) is defined and possibly updated from a sub-experiment.
  
  This solves the problem of referencing the config dictionary's field from within
  the definition of the dictionary itself (before the dictionary's own defintion
  is complete).
  
  NOTE: its possible that the referenced value does not yet exist at the
        time of instantiation of a given value-getter future. It will be
        resolved when the base description.py calls
        applyValueGettersToContainer().
  
  NOTE: The constructor of the derived classes MUST call our constructor.
  NOTE: The derived classes MUST override handleGetValue(self).
  
  NOTE: may be used by base and sub-experiments to derive their own custom value
    getters; however, their use is applicapble only where permitted, as
    described in comments within descriptionTemplate.tpl. See class
    DictValueGetter for implementation example.
class_docstr_tok: ["Base","class","for","``","value","getters","''","(","e.g.",",","class","DictValueGetter",")","that","are","used","to","resolve","values","of","sub-fields","after","the","experiment","'s","config","dictionary","(","in","description.py",")","is","defined","and","possibly","updated","from","a","sub-experiment",".","This","solves","the","problem","of","referencing","the","config","dictionary","'s","field","from","within","the","definition","of","the","dictionary","itself","(","before","the","dictionary","'s","own","defintion","is","complete",")",".","NOTE",":","its","possible","that","the","referenced","value","does","not","yet","exist","at","the","time","of","instantiation","of","a","given","value-getter","future",".","It","will","be","resolved","when","the","base","description.py","calls","applyValueGettersToContainer","(",")",".","NOTE",":","The","constructor","of","the","derived","classes","MUST","call","our","constructor",".","NOTE",":","The","derived","classes","MUST","override","handleGetValue","(","self",")",".","NOTE",":","may","be","used","by","base","and","sub-experiments","to","derive","their","own","custom","value","getters",";","however",",","their","use","is","applicapble","only","where","permitted",",","as","described","in","comments","within","descriptionTemplate.tpl",".","See","class","DictValueGetter","for","implementation","example","."]
docstr: A "pure virtual" method.  The derived class MUST override this method
  and return the referenced value.  The derived class is NOT responsible for
  fully resolving the reference'd value in the event the value resolves to
  another ValueGetterBase-based instance -- this is handled automatically
  within ValueGetterBase implementation.
  
  topContainer: The top-level container (dict, tuple, or list [sub-]instance)
                within whose context the value-getter is applied.
  
  Returns:      The value referenced by this instance (which may be another
                value-getter instance)
docstr_tok: ["A","``","pure","virtual","''","method",".","The","derived","class","MUST","override","this","method","and","return","the","referenced","value",".","The","derived","class","is","NOT","responsible","for","fully","resolving","the","reference","'d","value","in","the","event","the","value","resolves","to","another","ValueGetterBase-based","instance","--","this","is","handled","automatically","within","ValueGetterBase","implementation",".","topContainer",":","The","top-level","container","(","dict",",","tuple",",","or","list","[","sub-","]","instance",")","within","whose","context","the","value-getter","is","applied",".","Returns",":","The","value","referenced","by","this","instance","(","which","may","be","another","value-getter","instance",")"]
code: def handleGetValue(self, topContainer):
      """A "pure virtual" method.  The derived class MUST override this method
      and return the referenced value.  The derived class is NOT responsible for
      fully resolving the reference'd value in the event the value resolves to
      another ValueGetterBase-based instance -- this is handled automatically
      within ValueGetterBase implementation.
  
      topContainer: The top-level container (dict, tuple, or list [sub-]instance)
                    within whose context the value-getter is applied.
  
      Returns:      The value referenced by this instance (which may be another
                    value-getter instance)
      """
      raise NotImplementedError(
          "ERROR: ValueGetterBase is an abstract "
          + "class; base class MUST override handleGetValue()"
      )
  
file_path: nupic-legacy/src/nupic/frameworks/opf/exp_description_helpers.py
imports: import os
  import imp
  from nupic.data.dict_utils import rUpdate
label_desc: Use image node_id 3 for calling the ValueGetterBase obj's underlying member method code with example usage: obj.handleGetValue(topContainer) without return types