Unverified Commit a3ae7817 authored by Jerry Jiarui XU's avatar Jerry Jiarui XU Committed by GitHub
Browse files

add reserved key in config (#315)

parent 35ba1528
...@@ -14,6 +14,7 @@ from .path import check_file_exist ...@@ -14,6 +14,7 @@ from .path import check_file_exist
BASE_KEY = '_base_' BASE_KEY = '_base_'
DELETE_KEY = '_delete_' DELETE_KEY = '_delete_'
RESERVED_KEYS = ['filename', 'text', 'pretty_text']
class ConfigDict(Dict): class ConfigDict(Dict):
...@@ -184,6 +185,9 @@ class Config(object): ...@@ -184,6 +185,9 @@ class Config(object):
elif not isinstance(cfg_dict, dict): elif not isinstance(cfg_dict, dict):
raise TypeError('cfg_dict must be a dict, but ' raise TypeError('cfg_dict must be a dict, but '
f'got {type(cfg_dict)}') f'got {type(cfg_dict)}')
for key in cfg_dict:
if key in RESERVED_KEYS:
raise KeyError(f'{key} is reserved for config file')
super(Config, self).__setattr__('_cfg_dict', ConfigDict(cfg_dict)) super(Config, self).__setattr__('_cfg_dict', ConfigDict(cfg_dict))
super(Config, self).__setattr__('_filename', filename) super(Config, self).__setattr__('_filename', filename)
......
filename = 'reserved.py'
...@@ -266,3 +266,9 @@ def test_dump_mapping(): ...@@ -266,3 +266,9 @@ def test_dump_mapping():
text_cfg = Config.fromfile(text_cfg_filename) text_cfg = Config.fromfile(text_cfg_filename)
assert text_cfg._cfg_dict == cfg._cfg_dict assert text_cfg._cfg_dict == cfg._cfg_dict
def test_reserved_key():
cfg_file = osp.join(osp.dirname(__file__), 'data/config/g.py')
with pytest.raises(KeyError):
Config.fromfile(cfg_file)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment