diff --git a/mmengine/config/config.py b/mmengine/config/config.py index 05012fe8..0e065802 100644 --- a/mmengine/config/config.py +++ b/mmengine/config/config.py @@ -481,6 +481,7 @@ class Config: def is_base_line(c): return (isinstance(c, ast.Assign) + and isinstance(c.targets[0], ast.Name) and c.targets[0].id == BASE_KEY) base_code = next((c for c in codes if is_base_line(c)), None) diff --git a/tests/data/config/py_config/test_py_modify_key.py b/tests/data/config/py_config/test_py_modify_key.py new file mode 100644 index 00000000..f2dbbf03 --- /dev/null +++ b/tests/data/config/py_config/test_py_modify_key.py @@ -0,0 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. +# Support modify value in config. +item1 = dict() +item1['a'] = 1 diff --git a/tests/test_config/test_config.py b/tests/test_config/test_config.py index aed3e817..671bdc12 100644 --- a/tests/test_config/test_config.py +++ b/tests/test_config/test_config.py @@ -658,6 +658,13 @@ class TestConfig: assert cfg['item1'] == 1 assert cfg['item2'] == 2 + # Test support modifying the value of dict without defining base + # config. + cfg_file = osp.join(self.data_path, + 'config/py_config/test_py_modify_key.py') + cfg = Config._file2dict(cfg_file)[0] + assert cfg == dict(item1=dict(a=1)) + def _merge_recursive_bases(self): cfg_file = osp.join(self.data_path, 'config/py_config/test_merge_recursive_bases.py')