]> git.openstreetmap.org Git - nominatim.git/blobdiff - nominatim/config.py
Merge pull request #2735 from lonvia/geocodejson-type-reverse
[nominatim.git] / nominatim / config.py
index 13d9cd8a0d502e4b1f1b5ab58ca7e0761772cfaf..b3934b491fa9a36a690526d1b1c55be4b524804d 100644 (file)
@@ -86,26 +86,37 @@ class Configuration:
             Values of '1', 'yes' and 'true' are accepted as truthy values,
             everything else is interpreted as false.
         """
-        return self.__getattr__(name).lower() in ('1', 'yes', 'true')
+        return getattr(self, name).lower() in ('1', 'yes', 'true')
 
 
     def get_int(self, name):
         """ Return the given configuration parameter as an int.
         """
         try:
-            return int(self.__getattr__(name))
+            return int(getattr(self, name))
         except ValueError as exp:
             LOG.fatal("Invalid setting NOMINATIM_%s. Needs to be a number.", name)
             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 = getattr(self, 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
             into an absolute path with the project directory as root path.
             If the configuration is unset, a falsy value is returned.
         """
-        value = self.__getattr__(name)
+        value = getattr(self, name)
         if value:
             value = Path(value)
 
@@ -141,10 +152,10 @@ class Configuration:
             name of the standard styles automatically into a file in the
             config style.
         """
-        style = self.__getattr__('IMPORT_STYLE')
+        style = getattr(self, 'IMPORT_STYLE')
 
         if style in ('admin', 'street', 'address', 'full', 'extratags'):
-            return self.config_dir / 'import-{}.style'.format(style)
+            return self.config_dir / f'import-{style}.style'
 
         return self.find_config_file('', 'IMPORT_STYLE')
 
@@ -187,7 +198,7 @@ class Configuration:
         if configfile.suffix in ('.yaml', '.yml'):
             result = self._load_from_yaml(configfile)
         elif configfile.suffix == '.json':
-            with configfile.open('r') as cfg:
+            with configfile.open('r', encoding='utf-8') as cfg:
                 result = json.load(cfg)
         else:
             raise UsageError(f"Config file '{configfile}' has unknown format.")
@@ -203,7 +214,7 @@ class Configuration:
             a regular file.
         """
         if config is not None:
-            cfg_filename = self.__getattr__(config)
+            cfg_filename = getattr(self, config)
             if cfg_filename:
                 cfg_filename = Path(cfg_filename)