diff --git a/force_bdss/cli/__init__.py b/force_bdss/cli/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/force_bdss/cli/force_bdss.py b/force_bdss/cli/force_bdss.py index 79a792030b580e77cfdf12d01946fe78908bd678..c4a26d123dd76722fb572cded61a63171675de91 100644 --- a/force_bdss/cli/force_bdss.py +++ b/force_bdss/cli/force_bdss.py @@ -1,12 +1,10 @@ import click +from stevedore import extension +from stevedore.exception import NoMatches from envisage.core_plugin import CorePlugin from force_bdss.bdss_application import BDSSApplication from force_bdss.core_mco_driver import CoreMCODriver -from force_bdss.data_sources.data_sources_plugin import \ - DataSourcesPlugin -from force_bdss.mco.multi_criteria_optimizers_plugin import \ - MultiCriteriaOptimizersPlugin @click.command() @@ -17,10 +15,22 @@ def run(evaluate, workflow_filepath): plugins = [ CorePlugin(), CoreMCODriver(), - DataSourcesPlugin(), - MultiCriteriaOptimizersPlugin(), ] + mgr = extension.ExtensionManager( + namespace='force.bdss.extensions', + invoke_on_load=True + ) + + def import_extensions(ext): + print("Found extension {}".format(ext.name)) + plugins.append(ext.obj) + + try: + mgr.map(import_extensions) + except NoMatches: + print("No extensions found") + application = BDSSApplication( plugins=plugins, evaluate=evaluate, diff --git a/force_bdss/workspecs/__init__.py b/force_bdss/workspecs/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/setup.py b/setup.py index c544f177233e07b060f03ec9bd59f0a2a8ac88dc..2087e062ab152e56627f63424ca6fc32a25f0028 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -from setuptools import setup +from setuptools import setup, find_packages VERSION = "0.1.0.dev0" @@ -8,9 +8,18 @@ setup( entry_points={ 'console_scripts': [ 'force_bdss = force_bdss.cli.force_bdss:run', - ]}, + ], + "force.bdss.extensions": [ + "mco = force_bdss.mco.multi_criteria_optimizers_plugin:" + "MultiCriteriaOptimizersPlugin", + "data_source = force_bdss.data_sources.data_sources_plugin:" + "DataSourcesPlugin", + ] + }, + packages=find_packages(), install_requires=[ "envisage >= 4.6.0", - "click >= 6.7" + "click >= 6.7", + "stevedore >= 1.24.0" ] )