From 6ebb7ed481614b8ef08aabe27f6d88f750eb65dd Mon Sep 17 00:00:00 2001 From: Mashiro <57566630+HAOCHENYE@users.noreply.github.com> Date: Mon, 8 Aug 2022 17:07:47 +0800 Subject: [PATCH] [Fix] Fix config cannot change(assign) the value of the dict in config(without base config) (#378) * Support changing value of dict in config(without base config) * minor refine --- mmengine/config/config.py | 1 + tests/data/config/py_config/test_py_modify_key.py | 4 ++++ tests/test_config/test_config.py | 7 +++++++ 3 files changed, 12 insertions(+) create mode 100644 tests/data/config/py_config/test_py_modify_key.py 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') -- GitLab