docs: def get_public_attributes(cls, as_list=True):
      """
      Return class attributes that are neither private nor magic.
  
      :param cls: class
      :param as_list: [True] set to False to return generator
      :return: only public attributes of class
      """
      attrs = (a for a in dir(cls) if not a.startswith('_'))
      if as_list:
          return list(attrs)
      return attrs