original_docstring:  Traverse the class hierarchy and accumulate the special sets of names
      ``MetaHasProps`` stores on classes:
  
      Args:
          name (str) : name of the special attribute to collect.
  
              Typically meaningful values are: ``__container_props__``,
              ``__properties__``, ``__properties_with_refs__``
  
      
docstring: Traverse the class hierarchy and accumulate the special sets of names
  ``MetaHasProps`` stores on classes.
docstring_tokens: Traverse the class hierarchy and accumulate the special sets of names ` ` MetaHasProps ` ` stores on classes .
code: def accumulate_from_superclasses(cls, propname):
      ''' Traverse the class hierarchy and accumulate the special sets of names
      ``MetaHasProps`` stores on classes:
  
      Args:
          name (str) : name of the special attribute to collect.
  
              Typically meaningful values are: ``__container_props__``,
              ``__properties__``, ``__properties_with_refs__``
  
      '''
      cachename = "__cached_all" + propname
      # we MUST use cls.__dict__ NOT hasattr(). hasattr() would also look at base
      # classes, and the cache must be separate for each class
      if cachename not in cls.__dict__:
          s = set()
          for c in inspect.getmro(cls):
              if issubclass(c, HasProps) and hasattr(c, propname):
                  base = getattr(c, propname)
                  s.update(base)
          setattr(cls, cachename, s)
      return cls.__dict__[cachename]
code_tokens: def accumulate_from_superclasses ( cls , propname ) : cachename = "__cached_all" + propname if cachename not in cls . __dict__ : s = set ( ) for c in inspect . getmro ( cls ) : if issubclass ( c , HasProps ) and hasattr ( c , propname ) : base = getattr ( c , propname ) s . update ( base ) setattr ( cls , cachename , s ) return cls . __dict__ [ cachename ]
short_docstring: Traverse the class hierarchy and accumulate the special sets of names
  ``MetaHasProps`` stores on classes:
short_docstring_tokens: Traverse the class hierarchy and accumulate the special sets of names ` ` MetaHasProps ` ` stores on classes :
comment: ''' Traverse the class hierarchy and accumulate the special sets of names
      ``MetaHasProps`` stores on classes:
  
      Args:
          name (str) : name of the special attribute to collect.
  
              Typically meaningful values are: ``__container_props__``,
              ``__properties__``, ``__properties_with_refs__``
  
      '''$SEP$# we MUST use cls.__dict__ NOT hasattr(). hasattr() would also look at base$SEP$# classes, and the cache must be separate for each class