def _all_sqla_attributes(self, exclude=None):
        """return an iterator of all classbound attributes that are
        implement :class:`._InspectionAttr`.

        This includes :class:`.QueryableAttribute` as well as extension
        types such as :class:`.hybrid_property` and
        :class:`.AssociationProxy`.

        """
        if exclude is None:
            exclude = set()
        for supercls in self.class_.__mro__:
            for key in set(supercls.__dict__).difference(exclude):
                exclude.add(key)
                val = supercls.__dict__[key]
                if isinstance(val, interfaces._InspectionAttr):
                    yield key, val
dataset/ETHPy150Open RoseOu/flasky/venv/lib/python2.7/site-packages/sqlalchemy/orm/instrumentation.py/ClassManager._all_sqla_attributes/original