@event.listens_for(PolymorphicVerticalProperty, 'mapper_configured', propagate=True)
def on_new_class(mapper, cls_):
 info_dict = {}
 info_dict[type(None)] = (None, 'none')
 info_dict['none'] = (None, 'none')
 for k in mapper.c.keys():
  col = mapper.c[k]
  if ('type' in col.info):
   (python_type, discriminator) = col.info['type']
   info_dict[python_type] = (k, discriminator)
   info_dict[discriminator] = (k, discriminator)
 cls_.type_map = info_dict

@ event . listens_for ( PolymorphicVerticalProperty , 'mapper_configured' , propagate = True ) def on_new_class ( mapper , cls_ ) : info_dict = { } info_dict [ type ( None ) ] = ( None , 'none' ) info_dict [ 'none' ] = ( None , 'none' ) for k in mapper . c . keys ( ) : col = mapper . c [ k ] if ( 'type' in col . info ) : ( python_type , discriminator ) = col . info [ 'type' ] info_dict [ python_type ] = ( k , discriminator ) info_dict [ discriminator ] = ( k , discriminator ) cls_ . type_map = info_dict
look for column objects with type info in them .