sanitize.py
This module contains helper stuff to sanitize the config file in case it was edited by hand. Basically we just ensure bools are True/False and numbers are clamped to a sensible range. We also use a default dictionary to fix missing keys.
do_sanitize(dict_cfg)
Sanitize the dictionary in place
:param dict_cfg: The dictionary to sanitize :type dict_cfg: dict
This method takes a dictionary and clamps its values to sensible values.
Source code in src/sanitize.py
def do_sanitize(dict_cfg: dict):
"""
Sanitize the dictionary in place
:param dict_cfg: The dictionary to sanitize
:type dict_cfg: dict
This method takes a dictionary and clamps its values to sensible values.
"""
# --------------------------------------------------------------------------
# these are in the cron dict
dict_cron = dict_cfg[K.S_KEY_CRON]
dict_cron[K.S_KEY_CRON_ENABLED] = F.bool(dict_cron[K.S_KEY_CRON_ENABLED])
dict_cron[K.S_KEY_CRON_INTERVAL] = _do_clamp(
dict_cron[K.S_KEY_CRON_INTERVAL], R_INTERVAL
)
# --------------------------------------------------------------------------
dict_cap = dict_cfg[K.S_KEY_CAPTION]
dict_cap[K.S_KEY_CAPTION_SHOW] = F.bool(dict_cap[K.S_KEY_CAPTION_SHOW])
dict_cap[K.S_KEY_CAPTION_POS] = _do_clamp(
dict_cap[K.S_KEY_CAPTION_POS], R_POS
)
dict_cap[K.S_KEY_CAPTION_WRAP] = _do_clamp(
dict_cap[K.S_KEY_CAPTION_WRAP], R_WRAP
)
# --------------------------------------------------------------------------
dict_info = dict_cfg[K.S_KEY_INFO]
dict_info[K.S_KEY_APOD_TITLE] = F.bool(dict_info[K.S_KEY_APOD_TITLE])
dict_info[K.S_KEY_APOD_DATE] = F.bool(dict_info[K.S_KEY_APOD_DATE])
dict_info[K.S_KEY_APOD_COPY] = F.bool(dict_info[K.S_KEY_APOD_COPY])
dict_info[K.S_KEY_APOD_EXP] = F.bool(dict_info[K.S_KEY_APOD_EXP])
# --------------------------------------------------------------------------
dict_font = dict_cfg[K.S_KEY_FONT]
dict_font[K.S_KEY_FONT_NAME] = str(dict_font[K.S_KEY_FONT_NAME])
dict_font[K.S_KEY_FONT_SIZE] = _do_clamp(
dict_font[K.S_KEY_FONT_SIZE], R_FONT_SIZE
)
dict_font[K.S_KEY_FONT_COLOR] = _clamp_list(
dict_font[K.S_KEY_FONT_COLOR], R_COLOR
)
dict_font[K.S_KEY_FONT_TRANS] = _do_clamp(
dict_font[K.S_KEY_FONT_TRANS], R_COLOR
)
# --------------------------------------------------------------------------
dict_box = dict_cfg[K.S_KEY_BOX]
dict_box[K.S_KEY_BOX_COLOR] = _clamp_list(
dict_box[K.S_KEY_BOX_COLOR], R_COLOR
)
dict_box[K.S_KEY_BOX_TRANS] = _do_clamp(
dict_box[K.S_KEY_BOX_TRANS], R_COLOR
)
dict_box[K.S_KEY_BOX_RAD] = _do_clamp(dict_box[K.S_KEY_BOX_RAD], R_BOX_RAD)
dict_box[K.S_KEY_BOX_PAD] = _do_clamp(dict_box[K.S_KEY_BOX_PAD], R_BOX_PAD)
# --------------------------------------------------------------------------
dict_pad = dict_cfg[K.S_KEY_PAD]
dict_pad[K.S_KEY_PAD_L] = _do_clamp(dict_pad[K.S_KEY_PAD_L], R_EXT_PAD)
dict_pad[K.S_KEY_PAD_T] = _do_clamp(dict_pad[K.S_KEY_PAD_T], R_EXT_PAD)
dict_pad[K.S_KEY_PAD_R] = _do_clamp(dict_pad[K.S_KEY_PAD_R], R_EXT_PAD)
dict_pad[K.S_KEY_PAD_B] = _do_clamp(dict_pad[K.S_KEY_PAD_B], R_EXT_PAD)