code: def property(self, name, key='value'):
          
          hlist = themeable._hierarchy[name]
          scalar = key == 'value'
          for th in hlist:
              try:
                  value = self[th].properties[key]
              except KeyError:
                  continue
              else:
                  if not scalar or value is not None:
                      return value
  
          msg = "'{}' is not in the properties of {} "
          raise KeyError(msg.format(key, hlist))
docs: Get the value a specific themeable(s) property
  
          Themeables store theming attribute values in the
          :attr:`Themeable.properties` :class:`dict`. The goal
          of this method is to look a value from that dictionary,
          and fallback along the inheritance heirarchy of themeables.
  
          Parameters
          ----------
          name : str
              Themeable name
          key : str
              Property name to lookup
  
          Returns
          -------
          out : object
              Value
  
          Raises
          ------
          KeyError
              If key is in not in any of themeables