Source code for watershed_workflow.config
"""Configuration and global defaults."""
import os
import subprocess
import configparser
import getpass
def getHome() -> str:
return os.path.expanduser('~')
[docs]
def getDefaultConfig() -> configparser.ConfigParser:
"""Dictionary of all config option defaults.
Returns
-------
rcParams : configparser.ConfigParser
A dict-like object containing parameters.
"""
rcParams = configparser.ConfigParser()
rcParams['DEFAULT']['data_directory'] = ""
rcParams['DEFAULT']['ssl_cert'] = "True" # note this can be True,
# False (bad
# idea/permissive) or a
# path to ssl certs,
# e.g. /etc/ssl/cert.perm
# or similar
rcParams['DEFAULT']['proj_network'] = "False"
rcParams.add_section('AppEEARS')
rcParams['AppEEARS']['username'] = 'NOT_PROVIDED'
rcParams['AppEEARS']['password'] = 'NOT_PROVIDED'
return rcParams
def getConfig() -> configparser.ConfigParser:
try:
data_directory = os.path.join(os.environ['WATERSHED_WORKFLOW_DATA_DIR'])
except KeyError:
data_directory = os.path.join(os.getcwd(), 'data')
rc = getDefaultConfig()
rc['DEFAULT']['data_directory'] = data_directory
# paths to search for rc files
rc_paths = [
os.path.join(getHome(), '.watershed_workflowrc'),
os.path.join(os.getcwd(), '.watershed_workflowrc'),
os.path.join(os.getcwd(), 'watershed_workflowrc'),
]
# this is a bit fragile -- it checks if the user is the docker user
if getpass.getuser() == 'jovyan':
rc_paths.append('/home/jovyan/workdir/.docker_watershed_workflowrc')
# read the rc files
rc.read(rc_paths)
return rc
[docs]
def setDataDirectory(path : str) -> None:
"""Sets the directory in which all data is stored."""
rcParams['DEFAULT']['data_directory'] = path
# global config
rcParams = getConfig()