Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions ovos_plugin_manager/utils/config.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import Optional, Union
from ovos_config.config import Configuration
from ovos_spec_tools import standardize_lang, lang_distance
from ovos_spec_tools import standardize_lang, lang_matches
from ovos_utils.log import LOG
from ovos_plugin_manager.utils import load_plugin, find_plugins, PluginTypes, PluginConfigTypes

Expand Down Expand Up @@ -68,7 +68,7 @@ def get_valid_plugin_configs(configs: dict, lang: str,
# Check other dialects of the requested language
base_lang = standardize_lang(lang)
for language, confs in configs.items():
if lang_distance(base_lang, language) < 10:
if lang_matches(base_lang, language):
for config in confs:
try:
if language != lang:
Expand Down Expand Up @@ -182,7 +182,7 @@ def get_plugin_language_configs(plug_type: PluginTypes, lang: str,
if include_dialects:
macro = standardize_lang(lang)
for language, configs in plug_configs.items():
if lang_distance(macro, language) < 10:
if lang_matches(macro, language):
plugin_configs[plug] += configs
elif lang in plug_configs:
plugin_configs[plug] += plug_configs[lang]
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ dependencies = [
"combo_lock~=0.3",
"requests~=2.32",
"quebra_frases",
"ovos-spec-tools[langcodes]>=0.0.1a2",
"ovos-spec-tools[langcodes]>=1.6.1a1",
"importlib_metadata",
"setuptools; python_version>='3.12'",
"standard-aifc; python_version>='3.13'",
Expand Down
37 changes: 37 additions & 0 deletions test/unittests/test_lang_distance_boundary.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
"""The language-distance boundary used to select dialect plugin configs."""
import unittest

from ovos_plugin_manager.utils.config import get_valid_plugin_configs

MACROLANGUAGE_PAIRS = [("arz", "ar"), ("wuu", "zh")]
REGIONAL_PAIRS = [("ar-SA", "ar"), ("en-AU", "en-GB"), ("pt-BR", "pt-PT")]
UNRELATED_PAIRS = [("en", "zh"), ("es", "fr"), ("fr-CH", "de-CH"), ("af", "nl")]


def _selected(requested: str, available: str) -> bool:
"""True when the config filed under `available` is offered for `requested`."""
configs = {available: [{"module": "test", "priority": 50}]}
return bool(get_valid_plugin_configs(configs, requested,
include_dialects=True))


class TestValidPluginConfigLangBoundary(unittest.TestCase):

def test_macrolanguage_config_is_offered(self):
for member, macro in MACROLANGUAGE_PAIRS:
with self.subTest(member=member):
self.assertTrue(_selected(member, macro))

def test_regional_config_is_offered(self):
for requested, available in REGIONAL_PAIRS:
with self.subTest(requested=requested):
self.assertTrue(_selected(requested, available))

def test_unrelated_config_is_not_offered(self):
for requested, available in UNRELATED_PAIRS:
with self.subTest(requested=requested):
self.assertFalse(_selected(requested, available))


if __name__ == "__main__":
unittest.main()
Loading