Spaces:
Sleeping
Sleeping
import pytest | |
import os | |
import copy | |
from easydict import EasyDict | |
from ding.config import read_config_directly, save_config | |
from ding.utils.default_helper import deep_merge_dicts, flatten_dict, deep_update | |
class TestConfigHelper(): | |
def test_flatten_dict(self): | |
dict1 = {'a': {'aa': {'aaa': 'data - aaa'}, 'ab': 'data - ab'}} | |
dict2 = {'a/ab': 'data - ab', 'a/aa/aaa': 'data - aaa'} | |
assert flatten_dict(dict1) == dict2 | |
def test_deep_merge_dicts(self): | |
dict1 = {'a': {'aa': 'aa1', 'ab': 'ab2'}, 'b': {'bb': 'bb2'}} | |
dict2 = {'a': {'aa': 'aa2', 'ac': 'ab1'}, 'b': {'ba': 'ba2'}, 'c': {}} | |
merged = {'a': {'aa': 'aa2', 'ab': 'ab2', 'ac': 'ab1'}, 'b': {'bb': 'bb2', 'ba': 'ba2'}, 'c': {}} | |
assert deep_merge_dicts(dict1, dict2) == merged | |
with pytest.raises(RuntimeError): | |
deep_update(dict1, dict2, new_keys_allowed=False) | |
def test_config(self): | |
import tempfile | |
# Test whether save and read is reversible. | |
old_config = EasyDict( | |
{ | |
"aa": 1, | |
"bb": 0.0001, | |
"cc": None, | |
"dd": "string", | |
"ee": ["11", "22"], | |
"ff": { | |
"correct": 11 | |
} | |
} | |
) | |
cfg_path = tempfile.mktemp(suffix=".py") | |
save_config(old_config, cfg_path) | |
assert os.path.exists(cfg_path) | |
config = read_config_directly(cfg_path)["exp_config"] | |
def assert_equal(item1, iterm2): | |
if isinstance(item1, list): | |
for item11, iterm22 in zip(item1, iterm2): | |
assert_equal(item11, iterm22) | |
elif isinstance(item1, dict): | |
for item11, item22 in zip(item1.values(), iterm2.values()): | |
assert_equal(item11, item22) | |
else: | |
assert item1 == iterm2 | |
assert_equal(config, old_config) | |