def test_read_(self): actual = read_from_config_files( [scenario_path("config_files", "test_config_reader.cfg")] ) with config(actual): assert ( config.get("test_config_reader", "test_config_reader") == "test_value" )
def _on_enter(self): pm.hook.dbnd_on_pre_init_context(ctx=self) run_user_func(config.get("core", "user_pre_init")) # if we are deserialized - we don't need to run this code again. if not self.initialized_context: # noinspection PyTypeChecker if self._module: load_python_module(self._module, "--module") module_from_config = config.get("databand", "module") if self._autoload_modules and module_from_config: load_python_module(module_from_config, "config file (see [databand].module)") # will be called from singleton context manager # we want to be able to catch all "new" inline airflow operators self.system_settings = DatabandSystemConfig() if self.system_settings.conf: self.config.set_values(self.system_settings.conf, source="dbnd.conf") if self.system_settings.conf_file: conf_file = read_from_config_files( self.system_settings.conf_file) self.config.set_values(conf_file, source="dbnd__databand__conf") from dbnd._core.settings import DatabandSettings self.settings = DatabandSettings(databand_context=self) self.env = self.settings.get_env_config(self.system_settings.env) self.config.set_values( config_values={"task": { "task_env": self.system_settings.env }}, source="context", ) pm.hook.dbnd_on_new_context(ctx=self) # RUN USER SETUP FUNCTIONS _run_user_func( self.settings.core.__class__.user_driver_init, self.settings.core.user_driver_init, ) self.task_run_env = RunInfoConfig().build_task_run_info() self.initialized_context = True else: # we get here if we are running at sub process that recreates the Context pm.hook.dbnd_on_existing_context(ctx=self) # we do it every time we go into databand_config self.configure_targets() self.settings.log.configure_dbnd_logging() _run_user_func(self.settings.core.__class__.user_init, self.settings.core.user_init) pm.hook.dbnd_post_enter_context(ctx=self)
def set_from_config_file(self, config_path): # type: (Union[Target,str]) -> None """ Load Configuration from config file """ config_path = target(config_path) config_values = read_from_config_files([config_path]) self.set_values(config_values=config_values, source=os.path.basename(str(config_path)))
def load_system_configs(self, force=False): if self.initialized_with_env and not force: return # first, let read from files system_config_store = read_from_config_files(_default_configuration_paths()) # now we can merge with environment values system_config_store.update(read_environ_config()) # all configs will be added as one layer called 'system' self.set_values(system_config_store, source="system") self.initialized_with_env = True
def _on_enter(self): pm.hook.dbnd_on_pre_init_context(ctx=self) run_user_func(config.get("core", "user_pre_init")) # if we are deserialized - we don't need to run this code again. if not self._is_initialized: # will be called from singleton context manager self.system_settings = DatabandSystemConfig() if self.system_settings.conf: self.config.set_values(self.system_settings.conf, source="[databand]conf") if self.system_settings.conf_file: conf_file = read_from_config_files( self.system_settings.conf_file) self.config.set_values(conf_file, source="[databand]conf") from dbnd._core.settings import DatabandSettings self.settings = DatabandSettings(databand_context=self) self.env = self.settings.get_env_config(self.system_settings.env) self.config.set_values( config_values={"task": { "task_env": self.system_settings.env }}, source="context", ) pm.hook.dbnd_on_new_context(ctx=self) # RUN USER SETUP FUNCTIONS _run_user_func( self.settings.core.__class__.user_driver_init, self.settings.core.user_driver_init, ) self.task_run_env = RunInfoConfig().build_task_run_info() self._is_initialized = True else: # we get here if we are running at sub process that recreates the Context pm.hook.dbnd_on_existing_context(ctx=self) # we do it every time we go into databand_config self.configure_targets() self.settings.log.configure_dbnd_logging() _run_user_func(self.settings.core.__class__.user_init, self.settings.core.user_init) pm.hook.dbnd_post_enter_context(ctx=self)