]> git.openstreetmap.org Git - nominatim.git/blobdiff - nominatim/tools/country_info.py
Merge pull request #2450 from mtmail/tiger-data-2021
[nominatim.git] / nominatim / tools / country_info.py
index 1f7b799610743926f513f67fe3e40b20e76e6397..635d15840a84b8197efb9f5cb358344a78a0c2b9 100644 (file)
@@ -2,7 +2,6 @@
 Functions for importing and managing static country information.
 """
 import psycopg2.extras
-import yaml
 
 from nominatim.db import utils as db_utils
 from nominatim.db.connection import connect
@@ -14,23 +13,42 @@ class _CountryInfo:
     def __init__(self):
         self._info = {}
 
-    def load(self, configfile):
+
+    def load(self, config):
+        """ Load the country properties from the configuration files,
+            if they are not loaded yet.
+        """
         if not self._info:
-            self._info = yaml.safe_load(configfile.read_text())
+            self._info = config.load_sub_configuration('country_settings.yaml')
+            # Convert languages into a list for simpler handling.
+            for prop in self._info.values():
+                if 'languages' not in prop:
+                    prop['languages'] = []
+                elif not isinstance(prop['languages'], list):
+                    prop['languages'] = [x.strip()
+                                         for x in prop['languages'].split(',')]
+
 
     def items(self):
+        """ Return tuples of (country_code, property dict) as iterable.
+        """
         return self._info.items()
 
 
 _COUNTRY_INFO = _CountryInfo()
 
-def setup_country_config(configfile):
+def setup_country_config(config):
     """ Load country properties from the configuration file.
         Needs to be called before using any other functions in this
         file.
     """
-    _COUNTRY_INFO.load(configfile)
-    print(_COUNTRY_INFO._info)
+    _COUNTRY_INFO.load(config)
+
+
+def iterate():
+    """ Iterate over country code and properties.
+    """
+    return _COUNTRY_INFO.items()
 
 
 def setup_country_tables(dsn, sql_dir, ignore_partitions=False):
@@ -47,10 +65,7 @@ def setup_country_tables(dsn, sql_dir, ignore_partitions=False):
                 partition = 0
             else:
                 partition = props.get('partition')
-            if ',' in (props.get('languages', ',') or ','):
-                lang = None
-            else:
-                lang = props['languages']
+            lang = props['languages'][0] if len(props['languages']) == 1 else None
             params.append((ccode, partition, lang))
 
     with connect(dsn) as conn: