forked from Tencent/NeuralNLP-NeuralClassifier
-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.py
57 lines (44 loc) · 1.71 KB
/
config.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!usr/bin/env python
# coding:utf-8
"""
Tencent is pleased to support the open source community by making NeuralClassifier available.
Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
Licensed under the MIT License (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://opensource.org/licenses/MIT
Unless required by applicable law or agreed to in writing, software distributed under the License
is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or implied. See the License for thespecific language governing permissions and limitations under
the License.
"""
import json
class Config(object):
"""Config load from json file
"""
def __init__(self, config=None, config_file=None):
if config_file:
with open(config_file, 'r') as fin:
config = json.load(fin)
self.dict = config
if config:
self._update(config)
def __getitem__(self, key):
return self.dict[key]
def __contains__(self, item):
return item in self.dict
def items(self):
return self.dict.items()
def add(self, key, value):
"""Add key value pair
"""
self.__dict__[key] = value
def _update(self, config):
if not isinstance(config, dict):
return
for key in config:
if isinstance(config[key], dict):
config[key] = Config(config[key])
if isinstance(config[key], list):
config[key] = [Config(x) if isinstance(x, dict) else x for x in
config[key]]
self.__dict__.update(config)