diff --git a/garak/configurable.py b/garak/configurable.py index efb9f566..5868be9a 100644 --- a/garak/configurable.py +++ b/garak/configurable.py @@ -33,6 +33,7 @@ def _load_config(self, config_root=_config): spec_type = namespace_parts[-2] namespace = namespace_parts[-1] classname = self.__class__.__name__ + namespaced_klass = f"{namespace}.{classname}" plugins_config = {} if isinstance(local_root, dict) and spec_type in local_root: plugins_config = local_root[spec_type] @@ -43,16 +44,12 @@ def _load_config(self, config_root=_config): # generators: `nim`/`openai`/`huggingface` # probes: `dan`/`gcg`/`xss`/`tap`/`promptinject` attributes = plugins_config[namespace] - namespaced_klass = f"{namespace}.{classname}" self._apply_config(attributes) if classname in attributes: self._apply_config(attributes[classname]) - elif namespaced_klass in plugins_config: - # for compatibility remove after - logging.warning( - f"Deprecated configuration key found: {namespaced_klass}" - ) - self._apply_config(plugins_config[namespaced_klass]) + elif namespaced_klass in plugins_config: + # maintain support for this as consistent with cli options at this time + self._apply_config(plugins_config[namespaced_klass]) self._apply_missing_instance_defaults() if hasattr(self, "ENV_VAR"): if not hasattr(self, "key_env_var"): diff --git a/tests/test_configurable.py b/tests/test_configurable.py index 7847f65b..768e4818 100644 --- a/tests/test_configurable.py +++ b/tests/test_configurable.py @@ -50,6 +50,15 @@ def test_config_root_only(generator_sub_config): assert getattr(m, k) == v +# when a parameter is provided in config_root by `module.classname` set on the resulting object +def test_config_root_module_classname(generator_sub_config): + module_config = generator_sub_config.generators.pop("mock") + generator_sub_config.generators["mock.mockConfigurable"] = module_config + m = mockConfigurable(config_root=generator_sub_config) + for k, v in generator_sub_config.generators["mock.mockConfigurable"].items(): + assert getattr(m, k) == v + + # when a parameter is provided in config_root as a dict set on the resulting object def test_config_root_as_dict(generator_sub_config): config = {"generators": generator_sub_config.generators}