def load_plugins(splash=None): # Search for plugins installed via entry_points. Basically, any package can # define plugins for glue, and needs to define an entry point using the # following format: # # entry_points = """ # [glue.plugins] # webcam_importer=glue_exp.importers.webcam:setup # vizier_importer=glue_exp.importers.vizier:setup # dataverse_importer=glue_exp.importers.dataverse:setup # """ # # where ``setup`` is a function that does whatever is needed to set up the # plugin, such as add items to various registries. import setuptools logger.info("Loading external plugins using " "setuptools=={0}".format(setuptools.__version__)) from glue._plugin_helpers import iter_plugin_entry_points, PluginConfig config = PluginConfig.load() n_plugins = len(list(iter_plugin_entry_points())) for iplugin, item in enumerate(iter_plugin_entry_points()): if item.module_name not in _installed_plugins: _installed_plugins.add(item.name) if item.module_name in _loaded_plugins: logger.info("Plugin {0} already loaded".format(item.name)) continue if not config.plugins[item.name]: continue try: function = item.load() function() except Exception as exc: logger.info("Loading plugin {0} failed " "(Exception: {1})".format(item.name, exc)) else: logger.info("Loading plugin {0} succeeded".format(item.name)) _loaded_plugins.add(item.module_name) if splash is not None: splash.set_progress(100. * iplugin / float(n_plugins)) try: config.save() except Exception as e: logger.warn("Failed to load plugin configuration") # Reload the settings now that we have loaded plugins, since some plugins # may have added some settings. Note that this will not re-read settings # that were previously read. from glue._settings_helpers import load_settings load_settings()
def load_plugins(): # Search for plugins installed via entry_points. Basically, any package can # define plugins for glue, and needs to define an entry point using the # following format: # # entry_points = """ # [glue.plugins] # webcam_importer=glue_exp.importers.webcam:setup # vizier_importer=glue_exp.importers.vizier:setup # dataverse_importer=glue_exp.importers.dataverse:setup # """ # # where ``setup`` is a function that does whatever is needed to set up the # plugin, such as add items to various registries. import setuptools logger.info("Loading external plugins using setuptools=={0}".format( setuptools.__version__)) from glue._plugin_helpers import iter_plugin_entry_points, PluginConfig config = PluginConfig.load() for item in iter_plugin_entry_points(): if not item.module_name in _installed_plugins: _installed_plugins.add(item.name) if item.module_name in _loaded_plugins: logger.info("Plugin {0} already loaded".format(item.name)) continue if not config.plugins[item.name]: continue try: function = item.load() function() except Exception as exc: logger.info("Loading plugin {0} failed (Exception: {1})".format( item.name, exc)) else: logger.info("Loading plugin {0} succeeded".format(item.name)) _loaded_plugins.add(item.module_name) try: config.save() except Exception as e: logger.warn("Failed to load plugin configuration")
def load_plugins(): # Search for plugins installed via entry_points. Basically, any package can # define plugins for glue, and needs to define an entry point using the # following format: # # entry_points = """ # [glue.plugins] # webcam_importer=glue_exp.importers.webcam:setup # vizier_importer=glue_exp.importers.vizier:setup # dataverse_importer=glue_exp.importers.dataverse:setup # """ # # where ``setup`` is a function that does whatever is needed to set up the # plugin, such as add items to various registries. import setuptools logger.info("Loading external plugins using setuptools=={0}".format(setuptools.__version__)) from glue._plugin_helpers import iter_plugin_entry_points, PluginConfig config = PluginConfig.load() for item in iter_plugin_entry_points(): if not item.module_name in _installed_plugins: _installed_plugins.add(item.name) if item.module_name in _loaded_plugins: logger.info("Plugin {0} already loaded".format(item.name)) continue if not config.plugins[item.name]: continue try: function = item.load() function() except Exception as exc: logger.info("Loading plugin {0} failed (Exception: {1})".format(item.name, exc)) else: logger.info("Loading plugin {0} succeeded".format(item.name)) _loaded_plugins.add(item.module_name) try: config.save() except Exception as e: logger.warn("Failed to load plugin configuration")
def load_plugins(splash=None, require_qt_plugins=False): # Search for plugins installed via entry_points. Basically, any package can # define plugins for glue, and needs to define an entry point using the # following format: # # entry_points = """ # [glue.plugins] # webcam_importer=glue_exp.importers.webcam:setup # vizier_importer=glue_exp.importers.vizier:setup # dataverse_importer=glue_exp.importers.dataverse:setup # """ # # where ``setup`` is a function that does whatever is needed to set up the # plugin, such as add items to various registries. import setuptools logger.info("Loading external plugins using " "setuptools=={0}".format(setuptools.__version__)) from glue._plugin_helpers import iter_plugin_entry_points, PluginConfig config = PluginConfig.load() n_plugins = len(list(iter_plugin_entry_points())) for iplugin, item in enumerate(iter_plugin_entry_points()): if item.module_name not in _installed_plugins: _installed_plugins.add(item.name) if item.module_name in _loaded_plugins: logger.info("Plugin {0} already loaded".format(item.name)) continue if not config.plugins[item.name]: continue # We don't use item.load() because that then checks requirements of all # the imported packages, which can lead to errors like this one that # don't really matter: # # Exception: (pytest 2.6.0 (/Users/tom/miniconda3/envs/py27/lib/python2.7/site-packages), # Requirement.parse('pytest>=2.8'), set(['astropy'])) # # Just to be clear, this kind of error does indicate that there is an # old version of a package in the environment, but this can confuse # users as importing astropy directly would work (as setuptools then # doesn't do a stringent test of dependency versions). Often this kind # of error can occur if there is a conda version of a package and and # older pip version. try: module = import_module(item.module_name) function = getattr(module, item.attrs[0]) function() except Exception as exc: # Here we check that some of the 'core' plugins load well and # raise an actual exception if not. if item.module_name in REQUIRED_PLUGINS: raise elif item.module_name in REQUIRED_PLUGINS_QT and require_qt_plugins: raise else: logger.info("Loading plugin {0} failed " "(Exception: {1})".format(item.name, exc)) else: logger.info("Loading plugin {0} succeeded".format(item.name)) _loaded_plugins.add(item.module_name) if splash is not None: splash.set_progress(100. * iplugin / float(n_plugins)) try: config.save() except Exception as e: logger.warn("Failed to load plugin configuration") # Reload the settings now that we have loaded plugins, since some plugins # may have added some settings. Note that this will not re-read settings # that were previously read. from glue._settings_helpers import load_settings load_settings()
def load_plugins(splash=None): # Search for plugins installed via entry_points. Basically, any package can # define plugins for glue, and needs to define an entry point using the # following format: # # entry_points = """ # [glue.plugins] # webcam_importer=glue_exp.importers.webcam:setup # vizier_importer=glue_exp.importers.vizier:setup # dataverse_importer=glue_exp.importers.dataverse:setup # """ # # where ``setup`` is a function that does whatever is needed to set up the # plugin, such as add items to various registries. import setuptools logger.info("Loading external plugins using " "setuptools=={0}".format(setuptools.__version__)) from glue._plugin_helpers import iter_plugin_entry_points, PluginConfig config = PluginConfig.load() n_plugins = len(list(iter_plugin_entry_points())) for iplugin, item in enumerate(iter_plugin_entry_points()): if item.module_name not in _installed_plugins: _installed_plugins.add(item.name) if item.module_name in _loaded_plugins: logger.info("Plugin {0} already loaded".format(item.name)) continue if not config.plugins[item.name]: continue # We don't use item.load() because that then checks requirements of all # the imported packages, which can lead to errors like this one that # don't really matter: # # Exception: (pytest 2.6.0 (/Users/tom/miniconda3/envs/py27/lib/python2.7/site-packages), # Requirement.parse('pytest>=2.8'), set(['astropy'])) # # Just to be clear, this kind of error does indicate that there is an # old version of a package in the environment, but this can confuse # users as importing astropy directly would work (as setuptools then # doesn't do a stringent test of dependency versions). Often this kind # of error can occur if there is a conda version of a package and and # older pip version. try: module = import_module(item.module_name) function = getattr(module, item.attrs[0]) function() except Exception as exc: # Here we check that some of the 'core' plugins load well and # raise an actual exception if not. if item.module_name in REQUIRED_PLUGINS: raise else: logger.info("Loading plugin {0} failed " "(Exception: {1})".format(item.name, exc)) else: logger.info("Loading plugin {0} succeeded".format(item.name)) _loaded_plugins.add(item.module_name) if splash is not None: splash.set_progress(100. * iplugin / float(n_plugins)) try: config.save() except Exception as e: logger.warn("Failed to load plugin configuration") # Reload the settings now that we have loaded plugins, since some plugins # may have added some settings. Note that this will not re-read settings # that were previously read. from glue._settings_helpers import load_settings load_settings()