config.py 文件源码

python
阅读 28 收藏 0 点赞 0 评论 0

项目:sd2 作者: gae123 项目源码 文件源码
def process_inheritance(config_dct, keys):
    def get_processed_dct(tlkey, host, hostsdict):
        rr = {}
        extends = host.get('extends', [])
        if isinstance(extends, six.string_types):
            extends = [extends]
        for extend in extends + [host['name']]:
            extend_host = hostsdict[extend]
            for key in six.viewkeys(extend_host):
                if key in six.viewkeys(rr) and isinstance(rr[key], list):
                    ehlst = (extend_host[key]
                        if isinstance(extend_host[key], (list,tuple))
                        else [extend_host[key]])
                    for val in ehlst:
                        if not val in rr[key]:
                            rr[key].append(val)
                else:
                    rr[key] = copy.deepcopy(extend_host[key])
        return rr

    for tlkey in keys:
        hostsdict = {x['name']: x for x in config_dct.get(tlkey, [])}
        dfsnodes = _dfs(config_dct.get(tlkey, []))
        #print [x['name'] for x in dfsnodes]
        rr = []
        for dct in dfsnodes:
            isabstract = dct.get('abstract')
            #disabled = dct.get('disabled')
            dct = get_processed_dct(tlkey, dct, hostsdict)
            for key in ['abstract', 'extends']:
                if dct.get(key) is not None:
                    del dct[key]
            #if not isabstract:
            #    process_expansions(dct)
            hostsdict[dct['name']] = dct
            if not isabstract:
                rr.append(dct)

        config_dct[tlkey] = rr
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号