__init__.py 文件源码

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

项目:knowit 作者: ratoaq2 项目源码 文件源码
def parameters_from_yaml(name, input_key=None, expected_key=None):
    package_name, resource_name = name.split('.', 1)

    resources = []
    if resource_isdir(package_name, resource_name):
        resources.extend([resource_name + '/' + r
                          for r in resource_listdir(package_name, resource_name) if r.endswith(('.yml', '.yaml'))])
    elif resource_exists(package_name, resource_name + '.yml'):
        resources.append(resource_name + '.yml')
    elif resource_exists(package_name, resource_name + '.yaml'):
        resources.append(resource_name + '.yaml')

    if not resources:
        raise RuntimeError('Not able to load any yaml file for {0}'.format(name))

    parameters = []
    for resource_name in resources:
        with resource_stream(package_name, resource_name) as stream:
            data = yaml.load(stream, Loader=serializer.YAMLLoader)

        if input_key and expected_key:
            parameters.append((data[expected_key], data[input_key]))
            continue

        for root_key, root_value in data.items():
            if isinstance(root_value, Mapping):
                for expected, data_input in root_value.items():
                    for properties in data_input if isinstance(data_input, (tuple, list)) else [data_input]:
                        parameters.append((root_key, expected, properties))
            else:
                for properties in root_value if isinstance(root_value, (tuple, list)) else [root_value]:
                    parameters.append((root_key, properties))

    return parameters
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号