'Return an iterator of MapperProperty objects which will render into
a SELECT.'

def _iterate_polymorphic_properties(self, mappers=None):

    if (mappers is None):
        mappers = self._with_polymorphic_mappers
    if (not mappers):
        for c in self.iterate_properties:
            (yield c)
    else:
        for c in util.unique_list(chain(*[list(mapper.iterate_properties) for mapper in ([self] + mappers)])):
            if (getattr(c, '_is_polymorphic_discriminator', False) and ((self.polymorphic_on is None) or (c.columns[0] is not self.polymorphic_on))):
                continue
            (yield c)
