From: Sarah Hoffmann Date: Sun, 29 May 2022 11:53:50 +0000 (+0200) Subject: add get_str_list() for config X-Git-Tag: v4.1.0~34^2~5 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/61d813bfef810fbc6f5a0ecd2c5d43aaa8bf5823 add get_str_list() for config Converts a config value written as a comma-sparated list into a Python list of strings. --- diff --git a/nominatim/clicmd/setup.py b/nominatim/clicmd/setup.py index 7b5f3797..f0ec358b 100644 --- a/nominatim/clicmd/setup.py +++ b/nominatim/clicmd/setup.py @@ -128,7 +128,7 @@ class SetupAll: drop=args.no_updates) LOG.warning('Create search index for default country names.') country_info.create_country_names(conn, tokenizer, - args.config.LANGUAGES) + args.config.get_str_list('LANGUAGES')) if args.no_updates: freeze.drop_update_tables(conn) tokenizer.finalize_import(args.config) diff --git a/nominatim/config.py b/nominatim/config.py index ef261079..700af328 100644 --- a/nominatim/config.py +++ b/nominatim/config.py @@ -99,6 +99,17 @@ class Configuration: 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): """ Return the given configuration parameter as a Path. If a relative path is configured, then the function converts this diff --git a/nominatim/tools/country_info.py b/nominatim/tools/country_info.py index ed04c2d5..0ad00171 100644 --- a/nominatim/tools/country_info.py +++ b/nominatim/tools/country_info.py @@ -131,9 +131,6 @@ def create_country_names(conn, tokenizer, languages=None): empty then only name translations for the given languages are added to the index. """ - if languages: - languages = languages.split(',') - def _include_key(key): return ':' not in key or not languages or \ key[key.index(':') + 1:] in languages diff --git a/test/python/config/test_config.py b/test/python/config/test_config.py index 9f9ca880..a9cbb48d 100644 --- a/test/python/config/test_config.py +++ b/test/python/config/test_config.py @@ -173,6 +173,23 @@ def test_get_int_empty(make_config): 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): config = make_config() diff --git a/test/python/tools/test_country_info.py b/test/python/tools/test_country_info.py index 3c20b3e0..3f00d54e 100644 --- a/test/python/tools/test_country_info.py +++ b/test/python/tools/test_country_info.py @@ -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 -@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, table_factory, tokenizer_mock, languages, loaded_country):