From ffc9683e83c392433a6569c06a7eefd510a36ae9 Mon Sep 17 00:00:00 2001 From: JarbasAi Date: Mon, 23 Oct 2023 21:24:09 +0100 Subject: [PATCH 1/3] rm/valid_langs_session valid languages are defined by core in mycroft.conf , these can not come from Session core is the authority about what languages it natively supports, session can only assign the current language if session claims to support a language that core did not load / register intent for that will cause issues, adding this was an oversight --- ovos_bus_client/session.py | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/ovos_bus_client/session.py b/ovos_bus_client/session.py index bdbeb37..26b76e8 100644 --- a/ovos_bus_client/session.py +++ b/ovos_bus_client/session.py @@ -1,12 +1,11 @@ import enum import time -from threading import Lock -from typing import Optional, List, Tuple, Union, Iterable -from uuid import uuid4 - from ovos_config.config import Configuration from ovos_config.locale import get_default_lang from ovos_utils.log import LOG +from threading import Lock +from typing import Optional, List, Tuple, Union, Iterable +from uuid import uuid4 from ovos_bus_client.message import dig_for_message, Message @@ -16,11 +15,6 @@ class UtteranceState(str, enum.Enum): RESPONSE = "response" -def _get_valid_langs() -> List[str]: - return list(set([get_default_lang()] + - Configuration().get("secondary_langs", []))) - - class IntentContextManagerFrame: def __init__(self, entities: List[dict] = None, metadata: dict = None): """ @@ -271,7 +265,6 @@ def __init__(self, session_id: str = None, expiration_seconds: int = None, history=None, max_time=None, max_messages=None, utterance_states: dict = None, lang: str = None, context: IntentContextManager = None, - valid_langs: List[str] = None, site_id: str = "unknown", pipeline: List[str] = None): """ @@ -285,13 +278,11 @@ def __init__(self, session_id: str = None, expiration_seconds: int = None, @param utterance_states: dict of skill_id to UtteranceState @param lang: language associated with this Session @param context: IntentContextManager for this Session - @param valid_langs: list of configured valid languages """ self.session_id = session_id or str(uuid4()) self.lang = lang or get_default_lang() self.site_id = site_id or "unknown" # indoors placement info - self.valid_languages = valid_langs or _get_valid_langs() self.active_skills = active_skills or [] # [skill_id , timestamp]# (Message , timestamp) self.utterance_states = utterance_states or {} # {skill_id: UtteranceState} @@ -409,7 +400,6 @@ def serialize(self) -> dict: "utterance_states": self.utterance_states, "session_id": self.session_id, "lang": self.lang, - "valid_languages": self.valid_languages, "context": self.context.serialize(), "site_id": self.site_id, "pipeline": self.pipeline @@ -434,7 +424,6 @@ def deserialize(data: dict): active = data.get("active_skills") or [] states = data.get("utterance_states") or {} lang = data.get("lang") - valid_langs = data.get("valid_languages") or _get_valid_langs() context = IntentContextManager.deserialize(data.get("context", {})) site_id = data.get("site_id", "unknown") pipeline = data.get("pipeline", []) @@ -442,7 +431,6 @@ def deserialize(data: dict): active_skills=active, utterance_states=states, lang=lang, - valid_langs=valid_langs, context=context, pipeline=pipeline, site_id=site_id) @@ -556,9 +544,7 @@ def get(message: Optional[Message] = None) -> Session: if message: msg_sess = Session.from_message(message) if msg_sess: - if msg_sess.session_id == "default": # reserved namespace for ovos-core - LOG.debug(f"message is using default session") - else: + if msg_sess.session_id != "default": # reserved namespace for ovos-core SessionManager.sessions[msg_sess.session_id] = msg_sess return msg_sess else: From 1c9b038a99ec5b28e24db3f020682d67c441c64c Mon Sep 17 00:00:00 2001 From: JarbasAi Date: Mon, 23 Oct 2023 22:21:42 +0100 Subject: [PATCH 2/3] fix/valid langs list --- test/unittests/test_session.py | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/test/unittests/test_session.py b/test/unittests/test_session.py index 29f25c8..76f8190 100644 --- a/test/unittests/test_session.py +++ b/test/unittests/test_session.py @@ -10,37 +10,6 @@ def test_utterance_state(self): self.assertIsInstance(state, UtteranceState) self.assertIsInstance(state, str) - @patch("ovos_bus_client.session.get_default_lang") - @patch("ovos_bus_client.session.Configuration") - def test_get_valid_langs(self, config, default_lang): - config.return_value = { - "secondary_langs": ["en-us", "es-mx", "fr-ca"] - } - default_lang.return_value = "en-us" - from ovos_bus_client.session import _get_valid_langs - # Test default in secondary - langs = _get_valid_langs() - self.assertIsInstance(langs, list) - self.assertEqual(len(langs), len(set(langs))) - self.assertEqual(set(langs), {"en-us", "es-mx", "fr-ca"}) - - # Test default not in secondary - default_lang.return_value = "pt-pt" - langs = _get_valid_langs() - self.assertIsInstance(langs, list) - self.assertEqual(len(langs), len(set(langs))) - self.assertEqual(set(langs), {"en-us", "es-mx", "fr-ca", "pt-pt"}) - - # Test no secondary - config.return_value = {} - langs = _get_valid_langs() - self.assertEqual(langs, [default_lang.return_value]) - - # Test invalid secondary lang config - config.return_value = {"secondary_langs": None} - with self.assertRaises(TypeError): - _get_valid_langs() - class TestIntentContextManagerFrame(unittest.TestCase): def test_serialize_deserialize(self): @@ -138,7 +107,6 @@ def test_init(self): session = Session() self.assertIsInstance(session.session_id, str) self.assertIsInstance(session.lang, str) - self.assertIsInstance(session.valid_languages, list) self.assertEqual(session.active_skills, list()) self.assertEqual(session.utterance_states, dict()) self.assertIsInstance(session.touch_time, int) @@ -216,7 +184,6 @@ def test_serialize_deserialize(self): self.assertIsInstance(test_session, Session) self.assertIsInstance(test_session.session_id, str) self.assertIsInstance(test_session.lang, str) - self.assertIsInstance(test_session.valid_languages, list) self.assertIsInstance(test_session.active_skills, list) self.assertIsInstance(test_session.utterance_states, dict) self.assertIsInstance(test_session.touch_time, int) From 067cec498c299536cf36b1010922c97d3e9314fb Mon Sep 17 00:00:00 2001 From: JarbasAi Date: Mon, 23 Oct 2023 22:27:35 +0100 Subject: [PATCH 3/3] deprecation --- ovos_bus_client/session.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ovos_bus_client/session.py b/ovos_bus_client/session.py index 26b76e8..7a8fb94 100644 --- a/ovos_bus_client/session.py +++ b/ovos_bus_client/session.py @@ -1,12 +1,13 @@ import enum import time -from ovos_config.config import Configuration -from ovos_config.locale import get_default_lang -from ovos_utils.log import LOG from threading import Lock from typing import Optional, List, Tuple, Union, Iterable from uuid import uuid4 +from ovos_config.config import Configuration +from ovos_config.locale import get_default_lang +from ovos_utils.log import LOG + from ovos_bus_client.message import dig_for_message, Message @@ -265,6 +266,7 @@ def __init__(self, session_id: str = None, expiration_seconds: int = None, history=None, max_time=None, max_messages=None, utterance_states: dict = None, lang: str = None, context: IntentContextManager = None, + valid_langs: List[str] = None, site_id: str = "unknown", pipeline: List[str] = None): """ @@ -278,6 +280,7 @@ def __init__(self, session_id: str = None, expiration_seconds: int = None, @param utterance_states: dict of skill_id to UtteranceState @param lang: language associated with this Session @param context: IntentContextManager for this Session + @param valid_langs: DEPRECATED """ self.session_id = session_id or str(uuid4()) self.lang = lang or get_default_lang() @@ -304,10 +307,12 @@ def __init__(self, session_id: str = None, expiration_seconds: int = None, # deprecated - TODO remove 0.0.8 if history is not None or max_time is not None or max_messages is not None: - LOG.warning("history, max_time and max_messages have been deprecated") + LOG.warning("valid_langs , history, max_time and max_messages have been deprecated") self.history = [] # (Message , timestamp) self.max_time = 5 # minutes self.max_messages = 5 + self.valid_languages = list(set([get_default_lang()] + + Configuration().get("secondary_langs", []))) @property def active(self) -> bool: