def is_abstract_class(cls):
    """ Returns boolean telling whether given class is abstract or not.

        A class is abstract if it has not implemented any abstractmethod or
        abstractproperty of base classes.
    """
    return bool(getattr(cls, "__abstractmethods__", False))