import fnmatch from typing import Dict, List import lxml.cssselect import lxml.etree from lxml.etree import _Element as Element _libconf_namespaces = [("oor", "http://openoffice.org/2001/registry")] _libconf_ns_mapping = dict(_libconf_namespaces) _setup_locale_selector = lxml.cssselect.CSSSelector('item[oor|path$=L10N]>prop[oor|name=ooSetupSystemLocale]>value', namespaces=_libconf_ns_mapping) _locale_selector = lxml.cssselect.CSSSelector('item[oor|path$=L10N]>prop[oor|name=ooLocale]>value', namespaces=_libconf_ns_mapping) def check_libre_locale(config_file: str, rules: Dict[str, List[str]]) -> float: config: Element = lxml.etree.parse(config_file).getroot() setup_locale_setting: List[Element] = _setup_locale_selector(config) locale_setting: List[Element] = _locale_selector(config) setup_locale_setting: str = setup_locale_setting[0].text \ if len(setup_locale_setting) > 0 \ else locale_setting[0].text return float(any(fnmatch.fnmatchcase(setup_locale_setting, ptn) \ for ptn in rules["locale_set"] ) )