diff --git a/mmengine/config/config.py b/mmengine/config/config.py index 05012fe82cfe09850ea1ca951a7831e02d2505ff..0e06580261a3a61a7e934b5390d46a7c8848fc8b 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 0000000000000000000000000000000000000000..f2dbbf03b1f2ab564d363eeeb8667e33dda1e6f4 --- /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 aed3e81772d16e546bc70e0de0b23ff7a8604846..671bdc1283e6d5fb22abc9db851ef343e6417129 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')