From 6d1ddd4e013fec282331536b6f50c7bf1cde12e1 Mon Sep 17 00:00:00 2001 From: tallzoologytortbatik <> Date: Fri, 23 Oct 2020 10:22:05 -0400 Subject: [PATCH 1/2] Coerce env var values to expected types by settings.json - Avoid values being written as the wrong type and then being misinterpreted by Transmission. --- transmission/updateSettings.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/transmission/updateSettings.py b/transmission/updateSettings.py index d5a30e48c..1e5bcd170 100644 --- a/transmission/updateSettings.py +++ b/transmission/updateSettings.py @@ -57,6 +57,24 @@ for setting in settings_dict: setting_env_name = setting_as_env(setting) if setting_env_name in os.environ: env_value = os.environ.get(setting_env_name) + + # Coerce env var values to the expected type in settings.json + if type(settings_dict[setting]) == bool: + env_value = env_value.lower() in ['True', 'true'] + else: + setting_type = type(settings_dict[setting]) + try: + env_value = setting_type(env_value) + except ValueError: + print( + 'Could not coerce {setting_env_name} value {env_value} to expected type {setting_type}'.format( + setting_env_name=setting_env_name, + env_value=env_value, + setting_type=setting_type, + ), + ) + raise + print( 'Overriding {setting} because {env_name} is set to {value}'.format( setting=setting, From 852d598b4433feef4ed4052a6050e7a0c72db7f3 Mon Sep 17 00:00:00 2001 From: tallzoologytortbatik <> Date: Fri, 23 Oct 2020 12:09:12 -0400 Subject: [PATCH 2/2] Remove pointless comparison to "True" - We lower the string so it would always be converted to "true" --- transmission/updateSettings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/transmission/updateSettings.py b/transmission/updateSettings.py index 1e5bcd170..9a638a3a2 100644 --- a/transmission/updateSettings.py +++ b/transmission/updateSettings.py @@ -60,7 +60,7 @@ for setting in settings_dict: # Coerce env var values to the expected type in settings.json if type(settings_dict[setting]) == bool: - env_value = env_value.lower() in ['True', 'true'] + env_value = env_value.lower() == 'true' else: setting_type = type(settings_dict[setting]) try: