mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-11 13:24:07 +00:00
move flatten_config_list into config module
For general usage by other modules.
This commit is contained in:
@@ -12,6 +12,27 @@ from nominatim.errors import UsageError
|
|||||||
|
|
||||||
LOG = logging.getLogger()
|
LOG = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
|
def flatten_config_list(content, section=''):
|
||||||
|
""" Flatten YAML configuration lists that contain include sections
|
||||||
|
which are lists themselves.
|
||||||
|
"""
|
||||||
|
if not content:
|
||||||
|
return []
|
||||||
|
|
||||||
|
if not isinstance(content, list):
|
||||||
|
raise UsageError(f"List expected in section '{section}'.")
|
||||||
|
|
||||||
|
output = []
|
||||||
|
for ele in content:
|
||||||
|
if isinstance(ele, list):
|
||||||
|
output.extend(flatten_config_list(ele, section))
|
||||||
|
else:
|
||||||
|
output.append(ele)
|
||||||
|
|
||||||
|
return output
|
||||||
|
|
||||||
|
|
||||||
class Configuration:
|
class Configuration:
|
||||||
""" Load and manage the project configuration.
|
""" Load and manage the project configuration.
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import re
|
|||||||
|
|
||||||
from icu import Transliterator
|
from icu import Transliterator
|
||||||
|
|
||||||
|
from nominatim.config import flatten_config_list
|
||||||
from nominatim.db.properties import set_property, get_property
|
from nominatim.db.properties import set_property, get_property
|
||||||
from nominatim.errors import UsageError
|
from nominatim.errors import UsageError
|
||||||
from nominatim.tokenizer.icu_name_processor import ICUNameProcessor
|
from nominatim.tokenizer.icu_name_processor import ICUNameProcessor
|
||||||
@@ -22,23 +23,6 @@ DBCFG_IMPORT_TRANS_RULES = "tokenizer_import_transliteration"
|
|||||||
DBCFG_IMPORT_ANALYSIS_RULES = "tokenizer_import_analysis_rules"
|
DBCFG_IMPORT_ANALYSIS_RULES = "tokenizer_import_analysis_rules"
|
||||||
|
|
||||||
|
|
||||||
def _flatten_config_list(content):
|
|
||||||
if not content:
|
|
||||||
return []
|
|
||||||
|
|
||||||
if not isinstance(content, list):
|
|
||||||
raise UsageError("List expected in ICU configuration.")
|
|
||||||
|
|
||||||
output = []
|
|
||||||
for ele in content:
|
|
||||||
if isinstance(ele, list):
|
|
||||||
output.extend(_flatten_config_list(ele))
|
|
||||||
else:
|
|
||||||
output.append(ele)
|
|
||||||
|
|
||||||
return output
|
|
||||||
|
|
||||||
|
|
||||||
class VariantRule:
|
class VariantRule:
|
||||||
""" Saves a single variant expansion.
|
""" Saves a single variant expansion.
|
||||||
|
|
||||||
@@ -158,7 +142,7 @@ class ICURuleLoader:
|
|||||||
if content is None:
|
if content is None:
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
return ';'.join(_flatten_config_list(content)) + ';'
|
return ';'.join(flatten_config_list(content, section)) + ';'
|
||||||
|
|
||||||
|
|
||||||
def _parse_variant_list(self):
|
def _parse_variant_list(self):
|
||||||
@@ -169,7 +153,7 @@ class ICURuleLoader:
|
|||||||
if not rules:
|
if not rules:
|
||||||
return
|
return
|
||||||
|
|
||||||
rules = _flatten_config_list(rules)
|
rules = flatten_config_list(rules, 'variants')
|
||||||
|
|
||||||
vmaker = _VariantMaker(self.normalization_rules)
|
vmaker = _VariantMaker(self.normalization_rules)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user