def all_class_properties(cls):
    """Find all properties of the class, including those inherited"""
    found_names = set()
    for base in cls.__mro__:
        for k, v in base.__dict__.iteritems():
            if k in found_names:
                continue
            yield k, v
            found_names.add(k)
