def test_load_plugins(self): """Verify the main model loads available plugins""" plugin_list = model.load_plugins() for plugin in plugin_list: plugin_instance = plugin[1] self.assertTrue( issubclass(plugin_instance, abstractplugin.AbstractPlugin))
def get_available_plugins(self): """Returns a tuple of available NDIToolbox plugins: (plugin_names, plugin_classes) """ available_plugins = mainmodel.load_plugins() plugin_names = [plugin[0] for plugin in available_plugins] plugin_classes = [plugin[1] for plugin in available_plugins] return plugin_names, plugin_classes
def get_plugin_class(self): """Returns the plugin class with the specified name, or None if not found.""" available_plugins = mainmodel.load_plugins() plugin_names = [plugin[0] for plugin in available_plugins] plugin_classes = [plugin[1] for plugin in available_plugins] if self.toolkit in plugin_names: plugin_class = plugin_classes[plugin_names.index(self.toolkit)] return plugin_class
def get_normalize_plugin(self): """Returns NDIToolbox's NormalizePlugin plugin""" normalize_plugin_name = "NormalizePlugin" plugin_list = model.load_plugins() plugin_names = [plugin[0] for plugin in plugin_list] plugin_classes = [plugin[1] for plugin in plugin_list] # Ensure that the normalize plugin was found self.assertTrue(normalize_plugin_name in plugin_names) return plugin_classes[plugin_names.index(normalize_plugin_name)]
def test_get_plugins(self): """Verify a list of available plugins is returned""" expected_plugin_list = mainmodel.load_plugins() expected_plugin_names = [plugin[0] for plugin in expected_plugin_list] retrieved_plugin_list = self.basic_model.get_plugins() self.assertEqual(len(expected_plugin_list), len(retrieved_plugin_list)) for plugin in retrieved_plugin_list: plugin_name = plugin[0] plugin_instance = plugin[1] self.assertTrue(plugin_name in expected_plugin_names) self.assertTrue(issubclass(plugin_instance, abstractplugin.AbstractPlugin))
def test_get_plugins(self): """Verify a list of available plugins is returned""" expected_plugin_list = mainmodel.load_plugins() expected_plugin_names = [plugin[0] for plugin in expected_plugin_list] retrieved_plugin_list = self.basic_model.get_plugins() self.assertEqual(len(expected_plugin_list), len(retrieved_plugin_list)) for plugin in retrieved_plugin_list: plugin_name = plugin[0] plugin_instance = plugin[1] self.assertTrue(plugin_name in expected_plugin_names) self.assertTrue( issubclass(plugin_instance, abstractplugin.AbstractPlugin))
def test_load_plugins(self): """Verify the main model loads available plugins""" plugin_list = model.load_plugins() for plugin in plugin_list: plugin_instance = plugin[1] self.assertTrue(issubclass(plugin_instance, abstractplugin.AbstractPlugin))
multiprocessing.freeze_support() if len(sys.argv) > 1: # Enter headless batch mode - given a list of input files, run a specified toolkit on each in turn print("\nNDIToolbox Batch Mode") parser = argparse.ArgumentParser(description='Run NDIToolbox toolkit in batch mode') parser.add_argument('-t', '--toolkit', help='Name of toolkit to run') parser.add_argument('-c', '--toolkit_config', help='Config file for toolkit') parser.add_argument('-f', '--filetype', help='Specify type of input file (default: guess from file extension)') parser.add_argument('-i', '--input_files', nargs=argparse.REMAINDER, help='Specify input file or files') parser.add_argument('-s', '--save_output', action='store_true', default=False, help="Save plugin output to new HDF5 data file") parser.add_argument('-m', '--multiprocess', action='store_true', default=False, help="Use multiple simultaneous processes for analysis") args = parser.parse_args() mainmodel.MainModel.check_user_path() available_plugins = mainmodel.load_plugins() available_plugins_names = [plugin[0] for plugin in available_plugins] if args.toolkit and args.toolkit not in available_plugins_names: print("** Unable to locate plugin '{0}'. Available plugins:".format(args.toolkit)) for plugin_name in available_plugins_names: print("\t{0}".format(plugin_name)) sys.exit(1) workers = multiprocessing.Pool() if args.multiprocess: print("Using multiprocessing mode, {0} simultaneous processes".format(multiprocessing.cpu_count())) if args.input_files: for _f in args.input_files: paths = glob.glob(_f) for _p in paths: if not args.multiprocess: print("\nProcessing {0}...".format(_p))
nargs=argparse.REMAINDER, help='Specify input file or files') parser.add_argument('-s', '--save_output', action='store_true', default=False, help="Save plugin output to new HDF5 data file") parser.add_argument( '-m', '--multiprocess', action='store_true', default=False, help="Use multiple simultaneous processes for analysis") args = parser.parse_args() mainmodel.MainModel.check_user_path() available_plugins = mainmodel.load_plugins() available_plugins_names = [plugin[0] for plugin in available_plugins] if args.toolkit and args.toolkit not in available_plugins_names: print( "** Unable to locate plugin '{0}'. Available plugins:".format( args.toolkit)) for plugin_name in available_plugins_names: print("\t{0}".format(plugin_name)) sys.exit(1) workers = multiprocessing.Pool() if args.multiprocess: print("Using multiprocessing mode, {0} simultaneous processes". format(multiprocessing.cpu_count())) if args.input_files: for _f in args.input_files: paths = glob.glob(_f)