Paths
The following snippet help with fallback config logic to pick the best config file from a set of options.
Code
import os
from pathlib import Path
def default_config_dir():
return Path("/etc")
def default_config_file():
return default_config_dir() / "myapp.conf"
def default_user_config_dir():
return Path(os.environ.get("XDG_CONFIG_HOME", "~/.config"))
def default_user_config_file():
return default_user_config_dir() / "myapp.conf"
def default_user_data_dir():
return Path(os.environ.get("XDG_DATA_HOME", "~/.local/share"))
def get_default_data_dir():
return default_user_data_dir() / "myapp"
def get_config_file():
env_config_file = os.environ.get("MYAPP_CONFIG", None)
if env_config_file:
return Path(env_config_file)
config_file = default_config_file()
if config_file.exists():
return config_file
user_config_file = default_user_config_file()
return user_config_file