Эх сурвалжийг харах

add signal to settings loader. resource object can be null

nico 7 жил өмнө
parent
commit
a24c8e52cf

+ 2 - 1
Tests/test_models.py

@@ -201,7 +201,8 @@ class TestModels(unittest.TestCase):
             'tts_folder': '/path/tts',
             'neuron_folder': '/path/neuron',
             'stt_folder': '/path/stt',
-            'trigger_folder': '/path/trigger'
+            'trigger_folder': '/path/trigger',
+            'signal_folder': None
         }
 
         self.assertDictEqual(expected_result_serialize, resource1.serialize())

+ 2 - 2
kalliope/core/ConfigurationManager/ConfigurationChecker.py

@@ -136,7 +136,7 @@ class ConfigurationChecker:
             sl = SettingLoader()
             settings = sl.settings
             package_name = "kalliope.neurons" + "." + neuron_module_name.lower() + "." + neuron_module_name.lower()
-            if settings.resources is not None:
+            if settings.resources.neuron_folder is not None:
                 neuron_resource_path = settings.resources.neuron_folder + \
                                        os.sep + neuron_module_name.lower() + os.sep + \
                                        neuron_module_name.lower()+".py"
@@ -175,7 +175,7 @@ class ConfigurationChecker:
             sl = SettingLoader()
             settings = sl.settings
             package_name = "kalliope.signals" + "." + signal_name.lower() + "." + signal_name.lower()
-            if settings.resources is not None:
+            if settings.resources.signal_folder is not None:
                 neuron_resource_path = settings.resources.neuron_folder + \
                                        os.sep + signal_name.lower() + os.sep + \
                                        signal_name.lower() + ".py"

+ 33 - 11
kalliope/core/ConfigurationManager/SettingLoader.py

@@ -615,6 +615,8 @@ class SettingLoader(with_metaclass(Singleton, object)):
         .. raises:: SettingNotFound, NullSettingException, SettingInvalidException
         .. warnings:: Class Method and Private
         """
+        # return an empty resource object anyway
+        resource_object = Resources()
         try:
             resource_dir = settings["resource_directory"]
             logger.debug("Resource directory synapse: %s" % resource_dir)
@@ -623,40 +625,60 @@ class SettingLoader(with_metaclass(Singleton, object)):
             stt_folder = None
             tts_folder = None
             trigger_folder = None
+            signal_folder = None
+
             if "neuron" in resource_dir:
                 neuron_folder = resource_dir["neuron"]
-                if not os.path.exists(neuron_folder):
+                if os.path.exists(neuron_folder):
+                    logger.debug("[SettingLoader] Neuron resource folder path loaded: %s" % neuron_folder)
+                    resource_object.neuron_folder = neuron_folder
+                else:
                     raise SettingInvalidException("The path %s does not exist on the system" % neuron_folder)
 
             if "stt" in resource_dir:
                 stt_folder = resource_dir["stt"]
-                if not os.path.exists(stt_folder):
+                if os.path.exists(stt_folder):
+                    logger.debug("[SettingLoader] STT resource folder path loaded: %s" % stt_folder)
+                    resource_object.stt_folder = stt_folder
+                else:
                     raise SettingInvalidException("The path %s does not exist on the system" % stt_folder)
 
             if "tts" in resource_dir:
                 tts_folder = resource_dir["tts"]
-                if not os.path.exists(tts_folder):
+                if os.path.exists(tts_folder):
+                    logger.debug("[SettingLoader] TTS resource folder path loaded: %s" % tts_folder)
+                    resource_object.tts_folder = tts_folder
+                else:
                     raise SettingInvalidException("The path %s does not exist on the system" % tts_folder)
 
             if "trigger" in resource_dir:
                 trigger_folder = resource_dir["trigger"]
-                if not os.path.exists(trigger_folder):
+                if os.path.exists(trigger_folder):
+                    logger.debug("[SettingLoader] Trigger resource folder path loaded: %s" % trigger_folder)
+                    resource_object.trigger_folder = trigger_folder
+                else:
                     raise SettingInvalidException("The path %s does not exist on the system" % trigger_folder)
 
+            if "signal" in resource_dir:
+                signal_folder = resource_dir["signal"]
+                if os.path.exists(signal_folder):
+                    logger.debug("[SettingLoader] Signal resource folder path loaded: %s" % signal_folder)
+                    resource_object.signal_folder = signal_folder
+                else:
+                    raise SettingInvalidException("The path %s does not exist on the system" % signal_folder)
+
             if neuron_folder is None \
                     and stt_folder is None \
                     and tts_folder is None \
-                    and trigger_folder is None:
+                    and trigger_folder is None \
+                    and signal_folder is None:
                 raise SettingInvalidException("No required folder has been provided in the setting resource_directory. "
-                                              "Define : \'neuron\' or/and \'stt\' or/and \'tts\' or/and \'trigger\'")
+                                              "Define : \'neuron\' or/and \'stt\' or/and \'tts\' or/and \'trigger\' "
+                                              "or/and \'signal\'")
 
-            resource_object = Resources(neuron_folder=neuron_folder,
-                                        stt_folder=stt_folder,
-                                        tts_folder=tts_folder,
-                                        trigger_folder=trigger_folder)
         except KeyError:
             logger.debug("Resource directory not found in settings")
-            resource_object = None
+            return resource_object
 
         return resource_object
 

+ 4 - 2
kalliope/core/Models/Resources.py

@@ -4,11 +4,12 @@ class Resources(object):
     """
 
     """
-    def __init__(self, neuron_folder=None, stt_folder=None, tts_folder=None, trigger_folder=None):
+    def __init__(self, neuron_folder=None, stt_folder=None, tts_folder=None, trigger_folder=None, signal_folder=None):
         self.neuron_folder = neuron_folder
         self.stt_folder = stt_folder
         self.tts_folder = tts_folder
         self.trigger_folder = trigger_folder
+        self.signal_folder = signal_folder
 
     def __str__(self):
         return str(self.serialize())
@@ -25,7 +26,8 @@ class Resources(object):
             'neuron_folder': self.neuron_folder,
             'stt_folder': self.stt_folder,
             'tts_folder': self.tts_folder,
-            'trigger_folder': self.trigger_folder
+            'trigger_folder': self.trigger_folder,
+            'signal_folder': self.signal_folder
         }
 
     def __eq__(self, other):

+ 5 - 0
kalliope/core/ResourcesManager.py

@@ -173,6 +173,11 @@ class ResourcesManager(object):
                 logger.debug(message)
                 Utils.print_danger(message)
                 settings_ok = False
+            if dna.module_type == "signal" and resources.signal is None:
+                message = "Resources folder for signal installation not set in settings, cannot install."
+                logger.debug(message)
+                Utils.print_danger(message)
+                settings_ok = False
 
         return settings_ok
 

+ 2 - 1
kalliope/settings.yml

@@ -172,13 +172,14 @@ default_synapse: "default-synapse"
 #   - stt
 #   - tts
 #   - trigger  /!\ we do not manage trigger properly yet...
+#   - signal
 # ---------------------------
 #resource_directory:
 #  neuron: "/var/tmp/resources/neurons"
 #  stt: "resources/stt"
 #  tts: "resources/tts"
 #  trigger: "resources/trigger"
-
+#  signal: "resources/signal"
 
 # ---------------------------
 # Global files variables