Explorar o código

[Feature] Singleton Brain

monf %!s(int64=8) %!d(string=hai) anos
pai
achega
c130e49c6d

+ 7 - 7
core/ConfigurationManager/BrainLoader.py

@@ -4,7 +4,6 @@ import os
 
 from YAMLLoader import YAMLLoader
 from core.ConfigurationManager.ConfigurationChecker import ConfigurationChecker
-from core.Models import Singleton
 from core.Models.Brain import Brain
 from core.Models.Event import Event
 from core.Models.Neuron import Neuron
@@ -14,14 +13,14 @@ from core.Models.Synapse import Synapse
 logging.basicConfig()
 logger = logging.getLogger("kalliope")
 
-@Singleton
+
 class BrainLoader(object):
 
     def __init__(self):
         pass
 
     @classmethod
-    def _get_yaml_config(cls, file_path=None):
+    def get_yaml_config(cls, file_path=None):
         if file_path is None:
             brain_file_path = cls._get_root_brain_path()
         else:
@@ -29,18 +28,19 @@ class BrainLoader(object):
         return YAMLLoader.get_config(brain_file_path)
 
     @classmethod
-    def _get_brain(cls, file_path=None):
+    def get_brain(cls, file_path=None):
         """
         return a brain object from YAML settings
         :return: Brain object
         :rtype: Brain
         """
-        # get the brain with dict
-        dict_brain = cls._get_yaml_config(file_path)
+
         # create a new brain
         brain = Brain.Instance()
-
+        logger.debug("Is brain already loaded ? %r" % brain.is_loaded)
         if brain.is_loaded is False:
+            # get the brain with dict
+            dict_brain = cls.get_yaml_config(file_path)
 
             brain.brain_yaml = dict_brain
             # create list of Synapse

+ 3 - 1
core/Models/__init__.py

@@ -1,5 +1,7 @@
+from Singleton import Singleton
 from Event import Event
 from Brain import Brain
 from Order import Order
 from Synapse import Synapse
-from Neuron import Neuron
+from Neuron import Neuron
+

+ 1 - 0
core/__init__.py

@@ -3,3 +3,4 @@ from core.OrderListener import OrderListener
 from core.ShellGui import ShellGui
 from core.FileManager import FileManager
 from core.Utils import Utils
+

+ 1 - 2
install/files/python_requirements.txt

@@ -1,7 +1,6 @@
 SpeechRecognition==3.4.6
 pyaudio==0.2.9
 ansible==2.1.1.0
-pygame
 python2-pythondialog==3.4.0
 jinja==1.2
 python-crontab==2.1.1
@@ -14,4 +13,4 @@ pyowm==2.5.0
 python-twitter==3.1
 flask==0.11.1
 Flask-Restful==0.3.5
-wikipedia==1.4.0
+wikipedia==1.4.0

+ 7 - 5
test.py

@@ -1,12 +1,7 @@
 # coding: utf8
 import logging
 
-from core import OrderAnalyser
-from core import Utils
-from core.ConfigurationManager import SettingLoader
 from core.ConfigurationManager.BrainLoader import BrainLoader
-from core.Players import Mplayer
-from core.RestAPI.FlaskAPI import FlaskAPI
 
 logging.basicConfig()
 logger = logging.getLogger("kalliope")
@@ -15,7 +10,14 @@ logger.setLevel(logging.DEBUG)
 
 brain = BrainLoader.get_brain()
 
+brain2 = BrainLoader.get_brain()
+brain3 = BrainLoader.get_brain()
+brain4 = BrainLoader.get_brain()
 
 
+print brain is brain2
+print brain is brain3
+print brain is brain4
+print brain4 is brain2