import inspect


def public_attrs_fromdict(dic):
    """
    Return all public names of *dic*.

    Public names do not begin with '_', are not function
    and are not *property*!
    """
    return [attr for attr in dic \
            if not attr.startswith('_') \
            and not inspect.isroutine(dic[attr]) \
            and not isinstance(dic[attr], property)]