from nominatim.errors import UsageError
LOG = logging.getLogger()
-
+CONFIG_CACHE = {}
def flatten_config_list(content, section=''):
""" Flatten YAML configuration lists that contain include sections
style = self.__getattr__('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')
"""
configfile = self.find_config_file(filename, config)
- if configfile.suffix in ('.yaml', '.yml'):
- return self._load_from_yaml(configfile)
+ if str(configfile) in CONFIG_CACHE:
+ return CONFIG_CACHE[str(configfile)]
- if configfile.suffix == '.json':
- with configfile.open('r') as cfg:
- return json.load(cfg)
+ if configfile.suffix in ('.yaml', '.yml'):
+ result = self._load_from_yaml(configfile)
+ elif configfile.suffix == '.json':
+ with configfile.open('r', encoding='utf-8') as cfg:
+ result = json.load(cfg)
+ else:
+ raise UsageError(f"Config file '{configfile}' has unknown format.")
- raise UsageError(f"Config file '{configfile}' has unknown format.")
+ CONFIG_CACHE[str(configfile)] = result
+ return result
def find_config_file(self, filename, config=None):