add get_str_list() for config

Converts a config value written as a comma-sparated list into
a Python list of strings.
This commit is contained in:
Sarah Hoffmann
2022-05-29 13:53:50 +02:00
parent b593fe9c3e
commit 61d813bfef
5 changed files with 30 additions and 5 deletions

View File

@@ -128,7 +128,7 @@ class SetupAll:
drop=args.no_updates) drop=args.no_updates)
LOG.warning('Create search index for default country names.') LOG.warning('Create search index for default country names.')
country_info.create_country_names(conn, tokenizer, country_info.create_country_names(conn, tokenizer,
args.config.LANGUAGES) args.config.get_str_list('LANGUAGES'))
if args.no_updates: if args.no_updates:
freeze.drop_update_tables(conn) freeze.drop_update_tables(conn)
tokenizer.finalize_import(args.config) tokenizer.finalize_import(args.config)

View File

@@ -99,6 +99,17 @@ class Configuration:
raise UsageError("Configuration error.") from exp raise UsageError("Configuration error.") from exp
def get_str_list(self, name):
""" Return the given configuration parameter as a list of strings.
The values are assumed to be given as a comma-sparated list and
will be stripped before returning them. On empty values None
is returned.
"""
raw = self.__getattr__(name)
return [v.strip() for v in raw.split(',')] if raw else None
def get_path(self, name): def get_path(self, name):
""" Return the given configuration parameter as a Path. """ Return the given configuration parameter as a Path.
If a relative path is configured, then the function converts this If a relative path is configured, then the function converts this

View File

@@ -131,9 +131,6 @@ def create_country_names(conn, tokenizer, languages=None):
empty then only name translations for the given languages are added empty then only name translations for the given languages are added
to the index. to the index.
""" """
if languages:
languages = languages.split(',')
def _include_key(key): def _include_key(key):
return ':' not in key or not languages or \ return ':' not in key or not languages or \
key[key.index(':') + 1:] in languages key[key.index(':') + 1:] in languages

View File

@@ -173,6 +173,23 @@ def test_get_int_empty(make_config):
config.get_int('DATABASE_MODULE_PATH') config.get_int('DATABASE_MODULE_PATH')
@pytest.mark.parametrize("value,outlist", [('sd', ['sd']),
('dd,rr', ['dd', 'rr']),
(' a , b ', ['a', 'b'])])
def test_get_str_list_success(make_config, monkeypatch, value, outlist):
config = make_config()
monkeypatch.setenv('NOMINATIM_MYLIST', value)
assert config.get_str_list('MYLIST') == outlist
def test_get_str_list_empty(make_config):
config = make_config()
assert config.get_str_list('LANGUAGES') is None
def test_get_path_empty(make_config): def test_get_path_empty(make_config):
config = make_config() config = make_config()

View File

@@ -49,7 +49,7 @@ def test_setup_country_tables(src_dir, temp_db_with_extensions, dsn, temp_db_cur
assert temp_db_cursor.table_rows('country_osm_grid') > 100 assert temp_db_cursor.table_rows('country_osm_grid') > 100
@pytest.mark.parametrize("languages", (None, ' fr,en')) @pytest.mark.parametrize("languages", (None, ['fr', 'en']))
def test_create_country_names(temp_db_with_extensions, temp_db_conn, temp_db_cursor, def test_create_country_names(temp_db_with_extensions, temp_db_conn, temp_db_cursor,
table_factory, tokenizer_mock, languages, loaded_country): table_factory, tokenizer_mock, languages, loaded_country):