comparison sat/plugins/plugin_exp_lang_detect.py @ 2624:56f94936df1e

code style reformatting using black
author Goffi <goffi@goffi.org>
date Wed, 27 Jun 2018 20:14:46 +0200
parents 26edcf3a30eb
children 003b8b4b56a7
comparison
equal deleted inserted replaced
2623:49533de4540b 2624:56f94936df1e
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. 18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 19
20 from sat.core.i18n import _, D_ 20 from sat.core.i18n import _, D_
21 from sat.core.constants import Const as C 21 from sat.core.constants import Const as C
22 from sat.core.log import getLogger 22 from sat.core.log import getLogger
23
23 log = getLogger(__name__) 24 log = getLogger(__name__)
24 from sat.core import exceptions 25 from sat.core import exceptions
25 26
26 try: 27 try:
27 from langid.langid import LanguageIdentifier, model 28 from langid.langid import LanguageIdentifier, model
28 except ImportError: 29 except ImportError:
29 raise exceptions.MissingModule(u'Missing module langid, please download/install it with "pip install langid")') 30 raise exceptions.MissingModule(
31 u'Missing module langid, please download/install it with "pip install langid")'
32 )
30 33
31 identifier = LanguageIdentifier.from_modelstring(model, norm_probs=False) 34 identifier = LanguageIdentifier.from_modelstring(model, norm_probs=False)
32 35
33 36
34 PLUGIN_INFO = { 37 PLUGIN_INFO = {
37 C.PI_TYPE: "EXP", 40 C.PI_TYPE: "EXP",
38 C.PI_PROTOCOLS: [], 41 C.PI_PROTOCOLS: [],
39 C.PI_DEPENDENCIES: [], 42 C.PI_DEPENDENCIES: [],
40 C.PI_MAIN: "LangDetect", 43 C.PI_MAIN: "LangDetect",
41 C.PI_HANDLER: "no", 44 C.PI_HANDLER: "no",
42 C.PI_DESCRIPTION: _("""Detect and set message language when unknown""") 45 C.PI_DESCRIPTION: _("""Detect and set message language when unknown"""),
43 } 46 }
44 47
45 CATEGORY = D_(u"Misc") 48 CATEGORY = D_(u"Misc")
46 NAME = u"lang_detect" 49 NAME = u"lang_detect"
47 LABEL = D_(u"language detection") 50 LABEL = D_(u"language detection")
51 <category name="{category_name}"> 54 <category name="{category_name}">
52 <param name="{name}" label="{label}" type="bool" value="true" /> 55 <param name="{name}" label="{label}" type="bool" value="true" />
53 </category> 56 </category>
54 </individual> 57 </individual>
55 </params> 58 </params>
56 """.format(category_name=CATEGORY, 59 """.format(
57 name=NAME, 60 category_name=CATEGORY, name=NAME, label=_(LABEL)
58 label=_(LABEL), 61 )
59 )
60 62
61 63
62 class LangDetect(object): 64 class LangDetect(object):
63
64 def __init__(self, host): 65 def __init__(self, host):
65 log.info(_(u"Language detection plugin initialization")) 66 log.info(_(u"Language detection plugin initialization"))
66 self.host = host 67 self.host = host
67 host.memory.updateParams(PARAMS) 68 host.memory.updateParams(PARAMS)
68 host.trigger.add("MessageReceived", self.MessageReceivedTrigger) 69 host.trigger.add("MessageReceived", self.MessageReceivedTrigger)
69 host.trigger.add("sendMessage", self.MessageSendTrigger) 70 host.trigger.add("sendMessage", self.MessageSendTrigger)
70 71
71 def addLanguage(self, mess_data): 72 def addLanguage(self, mess_data):
72 message = mess_data['message'] 73 message = mess_data["message"]
73 if len(message) == 1 and message.keys()[0] == '': 74 if len(message) == 1 and message.keys()[0] == "":
74 msg = message.values()[0] 75 msg = message.values()[0]
75 lang = identifier.classify(msg)[0] 76 lang = identifier.classify(msg)[0]
76 mess_data["message"] = {lang: msg} 77 mess_data["message"] = {lang: msg}
77 return mess_data 78 return mess_data
78 79
79 def MessageReceivedTrigger(self, client, message_elt, post_treat): 80 def MessageReceivedTrigger(self, client, message_elt, post_treat):
80 """ Check if source is linked and repeat message, else do nothing """ 81 """ Check if source is linked and repeat message, else do nothing """
81 82
82 lang_detect = self.host.memory.getParamA(NAME, CATEGORY, profile_key=client.profile) 83 lang_detect = self.host.memory.getParamA(
84 NAME, CATEGORY, profile_key=client.profile
85 )
83 if lang_detect: 86 if lang_detect:
84 post_treat.addCallback(self.addLanguage) 87 post_treat.addCallback(self.addLanguage)
85 return True 88 return True
86 89
87 def MessageSendTrigger(self, client, data, pre_xml_treatments, post_xml_treatments): 90 def MessageSendTrigger(self, client, data, pre_xml_treatments, post_xml_treatments):
88 lang_detect = self.host.memory.getParamA(NAME, CATEGORY, profile_key=client.profile) 91 lang_detect = self.host.memory.getParamA(
92 NAME, CATEGORY, profile_key=client.profile
93 )
89 if lang_detect: 94 if lang_detect:
90 self.addLanguage(data) 95 self.addLanguage(data)
91 return True 96 return True