mirror of
https://github.com/osm-search/Nominatim.git
synced 2024-12-01 14:31:42 +03:00
39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
|
"""
|
||
|
Nominatim configuration accessor.
|
||
|
"""
|
||
|
import os
|
||
|
|
||
|
from dotenv import dotenv_values
|
||
|
|
||
|
class Configuration:
|
||
|
""" Load and manage the project configuration.
|
||
|
|
||
|
Nominatim uses dotenv to configure the software. Configuration options
|
||
|
are resolved in the following order:
|
||
|
|
||
|
* from the OS environment
|
||
|
* from the .env file in the project directory of the installation
|
||
|
* from the default installation in the configuration directory
|
||
|
|
||
|
All Nominatim configuration options are prefixed with 'NOMINATIM_' to
|
||
|
avoid conflicts with other environment variables.
|
||
|
"""
|
||
|
|
||
|
def __init__(self, project_dir, config_dir):
|
||
|
self._config = dotenv_values(str((config_dir / 'env.defaults').resolve()))
|
||
|
self._config.update(dotenv_values(str((project_dir / '.env').resolve())))
|
||
|
|
||
|
def __getattr__(self, name):
|
||
|
name = 'NOMINATIM_' + name
|
||
|
|
||
|
return os.environ.get(name) or self._config[name]
|
||
|
|
||
|
def get_os_env(self):
|
||
|
""" Return a copy of the OS environment with the Nominatim configuration
|
||
|
merged in.
|
||
|
"""
|
||
|
env = dict(os.environ)
|
||
|
env.update(self._config)
|
||
|
|
||
|
return env
|