From 3163c5e5bcee608f4299e458880b9b839e955703 Mon Sep 17 00:00:00 2001 From: Ankita Katiyar Date: Mon, 31 Jul 2023 16:43:40 +0100 Subject: [PATCH] Add test for overwritten resolvers Signed-off-by: Ankita Katiyar --- kedro/config/omegaconf_config.py | 2 +- tests/config/test_omegaconf_config.py | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/kedro/config/omegaconf_config.py b/kedro/config/omegaconf_config.py index 6c08baad82..9091402ef9 100644 --- a/kedro/config/omegaconf_config.py +++ b/kedro/config/omegaconf_config.py @@ -312,7 +312,7 @@ def _is_valid_config_path(self, path): def _register_new_resolvers(resolvers: dict[str, Callable]): """Register custom resolvers""" for name, resolver in resolvers.items(): - OmegaConf.register_new_resolver(name, resolver, replace=True) + OmegaConf.register_new_resolver(name=name, resolver=resolver, replace=True) @staticmethod def _check_duplicates(seen_files_to_keys: dict[Path, set[Any]]): diff --git a/tests/config/test_omegaconf_config.py b/tests/config/test_omegaconf_config.py index df617ee161..9bed0298ca 100644 --- a/tests/config/test_omegaconf_config.py +++ b/tests/config/test_omegaconf_config.py @@ -667,3 +667,22 @@ def test_custom_resolvers(self, tmp_path): conf.default_run_env = "" assert conf["parameters"]["model_options"]["test_size"] == 7 assert conf["parameters"]["model_options"]["random_state"] == 3 + + def test_overwrite_resolvers(self, tmp_path): + base_params = tmp_path / _BASE_ENV / "parameters.yml" + # OmegaConf is a singleton, register a resolver to be overwritten + OmegaConf.register_new_resolver("custom", lambda x: x + 10) + + param_config = { + "model_options": { + "test_size": "${custom: 10}", + } + } + _write_yaml(base_params, param_config) + custom_resolvers = { + "custom": lambda x: x + 20, + } + conf = OmegaConfigLoader(str(tmp_path), custom_resolvers=custom_resolvers) + conf.default_run_env = "" + # test_size should be calculated using overwritten custom resolver (x + 20) + assert conf["parameters"]["model_options"]["test_size"] == 30