NeuroneLauncher.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import logging
  2. logging.basicConfig()
  3. logger = logging.getLogger("jarvis")
  4. class NeuroneNotFoundError(Exception):
  5. pass
  6. def _run_plugin(plugin, parameters=None):
  7. """
  8. Dynamic loading of a module
  9. :param plugin: Module name to load
  10. :param parameters: Parameter of the module
  11. :return:
  12. """
  13. logger.debug("Run plugin %s with parameter %s" % (plugin, parameters))
  14. mod = __import__('neurons', fromlist=[plugin])
  15. try:
  16. klass = getattr(mod, plugin)
  17. except AttributeError:
  18. logger.debug("Error: No module named %s " % plugin)
  19. raise NeuroneNotFoundError
  20. if klass is not None:
  21. # run the plugin
  22. if not parameters:
  23. klass()
  24. elif isinstance(parameters, dict):
  25. klass(**parameters)
  26. else:
  27. klass(parameters)
  28. class NeuroneLauncher:
  29. def __init__(self):
  30. pass
  31. @classmethod
  32. def start_neurone(cls, neuron):
  33. """
  34. Start a neuron plugin
  35. :param neuron: neuron object
  36. :type neuron: Neurone
  37. :return:
  38. """
  39. plugin = neuron.name.capitalize()
  40. plugin = plugin.capitalize()
  41. _run_plugin(plugin, neuron.parameters)
  42. # if isinstance(neuron, dict):
  43. # for plugin, parameters in neuron.items():
  44. # # capitalizes the first letter (because classes have first letter upper case)
  45. # plugin = plugin.capitalize()
  46. # _run_plugin(plugin, parameters)
  47. # else:
  48. # plugin = neuron
  49. # # capitalizes the first letter (because classes have first letter upper case)
  50. # plugin = plugin.capitalize()
  51. # _run_plugin(plugin)