diff --git a/fiddle/_src/config.py b/fiddle/_src/config.py index a015767e..9d4a07b7 100644 --- a/fiddle/_src/config.py +++ b/fiddle/_src/config.py @@ -353,7 +353,11 @@ def __getattr__(self, name: str): ) if param is not None and param.default is not param.empty: return param.default - msg = f"No parameter '{name}' has been set on {self!r}." + msg = ( + f"No parameter '{name}' has been set on {self!r} " + f"(Buildable='{self.__fn_or_cls__.__qualname__}', missing " + f"parameter='{name}')." + ) # TODO(b/219988937): Implement an edit distance function and display valid # attributes that are close to `name`. if hasattr(self.__fn_or_cls__, name): diff --git a/fiddle/_src/config_test.py b/fiddle/_src/config_test.py index 7e123cbf..4510b97d 100644 --- a/fiddle/_src/config_test.py +++ b/fiddle/_src/config_test.py @@ -843,8 +843,11 @@ def test_repr_varkwargs(self): def test_nonexistent_attribute_error(self): class_config = fdl.Config(SampleClass, 1) - expected_msg = (r"No parameter 'nonexistent_arg' has been set on " - r'\.') + expected_msg = ( + r"No parameter 'nonexistent_arg' has been set on " + r' \(Buildable=' + r"'SampleClass', missing parameter='nonexistent_arg'\)." + ) with self.assertRaisesRegex(AttributeError, expected_msg): getattr(class_config, 'nonexistent_arg')