def get_plugin_classes(cls, showall=False, lower=False):
 result = {}
 for plugin in set(_get_subclasses(cls)):
  if (showall or (not (plugin.__name__.startswith('Abstract') or (plugin == cls)))):
   if ((not showall) and (plugin.__name__ in ['BufferAddressSpace', 'HiveFileAddressSpace', 'HiveAddressSpace'])):
    continue
   name = plugin.__name__.split('.')[(-1)]
   if lower:
    name = name.lower()
   if (name not in result):
    result[name] = plugin
   else:
    raise Exception('Object {0} has already been defined by {1}'.format(name, plugin))
 return result

def get_plugin_classes ( cls , showall = False , lower = False ) : result = { } for plugin in set ( _get_subclasses ( cls ) ) : if ( showall or ( not ( plugin . __name__ . startswith ( 'Abstract' ) or ( plugin == cls ) ) ) ) : if ( ( not showall ) and ( plugin . __name__ in [ 'BufferAddressSpace' , 'HiveFileAddressSpace' , 'HiveAddressSpace' ] ) ) : continue name = plugin . __name__ . split ( '.' ) [ ( - 1 ) ] if lower : name = name . lower ( ) if ( name not in result ) : result [ name ] = plugin else : raise Exception ( 'Object {0} has already been defined by {1}' . format ( name , plugin ) ) return result
returns a dictionary of plugins .