@@ -81,32 +81,33 @@ def __init__(self):
8181 'exec_to_id' : { 'type' : int , 'preserve' : False , 'env' : None , 'value' : None , 'default' : None },
8282
8383 # Preservable runtime params
84- 'app_version' : { 'type' : str , 'preserve' : True , 'env' : 'APP_VERSION' , 'value' : None , 'default' : '0.0.0' },
85- 'app_name' : { 'type' : str , 'preserve' : True , 'env' : 'APP_NAME' , 'value' : None , 'default' : "PyrunnerApp_{}" .format (uuid .uuid4 ()) },
86- 'app_start_time' : { 'type' : str , 'preserve' : True , 'env' : None , 'value' : None , 'default' : None },
87- 'app_root_dir' : { 'type' : str , 'preserve' : True , 'env' : 'APP_ROOT_DIR' , 'value' : None , 'default' : None },
88- 'config_dir' : { 'type' : str , 'preserve' : True , 'env' : 'APP_CONFIG_DIR' , 'value' : None , 'default' : None },
89- 'temp_dir' : { 'type' : str , 'preserve' : True , 'env' : 'APP_TEMP_DIR' , 'value' : None , 'default' : None },
90- 'log_dir' : { 'type' : str , 'preserve' : True , 'env' : 'APP_LOG_DIR' , 'value' : None , 'default' : None },
91- 'root_log_dir' : { 'type' : str , 'preserve' : True , 'env' : 'APP_ROOT_LOG_DIR' , 'value' : None , 'default' : None },
92- 'worker_dir' : { 'type' : str , 'preserve' : True , 'env' : 'APP_WORKER_DIR' , 'value' : None , 'default' : None },
93- 'nozip' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_NOZIP' , 'value' : None , 'default' : False },
94- 'dump_logs' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_DUMP_LOGS' , 'value' : None , 'default' : False },
95- 'email' : { 'type' : str , 'preserve' : False , 'env' : 'APP_EMAIL' , 'value' : None , 'default' : None },
96- 'silent' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_SILENT' , 'value' : None , 'default' : False },
97- 'debug' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_DEBUG' , 'value' : None , 'default' : False },
98- 'tickrate' : { 'type' : int , 'preserve' : False , 'env' : 'APP_TICKRATE' , 'value' : None , 'default' : 1 },
99- 'time_between_tasks' : { 'type' : int , 'preserve' : True , 'env' : 'APP_TIME_BETWEEN_TASKS' , 'value' : None , 'default' : 0 },
100- 'save_interval' : { 'type' : int , 'preserve' : False , 'env' : 'APP_SAVE_INTERVAL' , 'value' : None , 'default' : 10 },
101- 'max_procs' : { 'type' : int , 'preserve' : False , 'env' : 'APP_MAX_PROCS' , 'value' : None , 'default' : - 1 },
102- 'log_retention' : { 'type' : int , 'preserve' : True , 'env' : 'APP_LOG_RETENTION' , 'value' : None , 'default' : 30 },
103- 'dryrun' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_DRYRUN' , 'value' : None , 'default' : False },
104- 'email_on_fail' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_EMAIL_ON_FAIL' , 'value' : None , 'default' : True },
105- 'email_on_success' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_EMAIL_ON_SUCCESS' , 'value' : None , 'default' : True },
106- 'notify_on_fail' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_NOTIFY_ON_FAIL' , 'value' : None , 'default' : True },
107- 'notify_on_success' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_NOTIFY_ON_SUCCESS' , 'value' : None , 'default' : True },
108- 'as_service' : { 'type' : bool , 'preserve' : True , 'env' : 'APP_AS_SERVICE' , 'value' : None , 'default' : False },
109- 'test_mode' : { 'type' : bool , 'preserve' : True , 'env' : 'APP_TEST_MODE' , 'value' : None , 'default' : False }
84+ 'app_version' : { 'type' : str , 'preserve' : True , 'env' : 'APP_VERSION' , 'value' : None , 'default' : '0.0.0' },
85+ 'app_name' : { 'type' : str , 'preserve' : True , 'env' : 'APP_NAME' , 'value' : None , 'default' : "PyrunnerApp_{}" .format (uuid .uuid4 ()) },
86+ 'app_start_time' : { 'type' : str , 'preserve' : True , 'env' : None , 'value' : None , 'default' : None },
87+ 'app_root_dir' : { 'type' : str , 'preserve' : True , 'env' : 'APP_ROOT_DIR' , 'value' : None , 'default' : None },
88+ 'config_dir' : { 'type' : str , 'preserve' : True , 'env' : 'APP_CONFIG_DIR' , 'value' : None , 'default' : None },
89+ 'temp_dir' : { 'type' : str , 'preserve' : True , 'env' : 'APP_TEMP_DIR' , 'value' : None , 'default' : None },
90+ 'log_dir' : { 'type' : str , 'preserve' : True , 'env' : 'APP_LOG_DIR' , 'value' : None , 'default' : None },
91+ 'root_log_dir' : { 'type' : str , 'preserve' : True , 'env' : 'APP_ROOT_LOG_DIR' , 'value' : None , 'default' : None },
92+ 'worker_dir' : { 'type' : str , 'preserve' : True , 'env' : 'APP_WORKER_DIR' , 'value' : None , 'default' : None },
93+ 'nozip' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_NOZIP' , 'value' : None , 'default' : False },
94+ 'dump_logs' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_DUMP_LOGS' , 'value' : None , 'default' : False },
95+ 'email' : { 'type' : str , 'preserve' : False , 'env' : 'APP_EMAIL' , 'value' : None , 'default' : None },
96+ 'silent' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_SILENT' , 'value' : None , 'default' : False },
97+ 'debug' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_DEBUG' , 'value' : None , 'default' : False },
98+ 'tickrate' : { 'type' : int , 'preserve' : False , 'env' : 'APP_TICKRATE' , 'value' : None , 'default' : 1 },
99+ 'time_between_tasks' : { 'type' : int , 'preserve' : True , 'env' : 'APP_TIME_BETWEEN_TASKS' , 'value' : None , 'default' : 0 },
100+ 'save_interval' : { 'type' : int , 'preserve' : False , 'env' : 'APP_SAVE_INTERVAL' , 'value' : None , 'default' : 10 },
101+ 'max_procs' : { 'type' : int , 'preserve' : False , 'env' : 'APP_MAX_PROCS' , 'value' : None , 'default' : - 1 },
102+ 'log_retention' : { 'type' : int , 'preserve' : True , 'env' : 'APP_LOG_RETENTION' , 'value' : None , 'default' : 30 },
103+ 'dryrun' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_DRYRUN' , 'value' : None , 'default' : False },
104+ 'email_on_fail' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_EMAIL_ON_FAIL' , 'value' : None , 'default' : True },
105+ 'email_on_success' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_EMAIL_ON_SUCCESS' , 'value' : None , 'default' : True },
106+ 'notify_on_fail' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_NOTIFY_ON_FAIL' , 'value' : None , 'default' : True },
107+ 'notify_on_success' : { 'type' : bool , 'preserve' : False , 'env' : 'APP_NOTIFY_ON_SUCCESS' , 'value' : None , 'default' : True },
108+ 'as_service' : { 'type' : bool , 'preserve' : True , 'env' : 'APP_AS_SERVICE' , 'value' : None , 'default' : False },
109+ 'service_exec_interval' : { 'type' : int , 'preserve' : False , 'env' : 'APP_SERVICE_EXEC_INTERVAL' , 'value' : None , 'default' : 1 },
110+ 'test_mode' : { 'type' : bool , 'preserve' : True , 'env' : 'APP_TEST_MODE' , 'value' : None , 'default' : False }
110111 }
111112 self ._iter_keys = None
112113
@@ -214,6 +215,26 @@ def __contains__(self, key):
214215 """
215216 return key in self ._attr
216217
218+ def is_set (self , key ):
219+ """
220+ Determines if key is set either by env var or manually set variable.
221+
222+ Args:
223+ key (str): the key name for which to check if is set
224+
225+ Returns:
226+ Boolean indicating whether or not key is set. False if relying on default value, True otherwise.
227+ """
228+
229+ detl = self ._attr .get (key )
230+ if not detl :
231+ raise KeyError ('Config object does not store key: {}' .format (key ))
232+
233+ if detl ['value' ] is None and detl ['env' ] is None :
234+ return False
235+ else :
236+ return True
237+
217238 def items (self , only_preserve = True ):
218239 """
219240 Converts the Config object into a simple dictionary containing only simple key:value pairs.
0 commit comments