Exemplo n.º 1
0
def load_yaml(yaml_data, filename):
    """
    Load YAML data extending it with line number information, nodes get a __line__ attribute
    """
    if yaml_data is None:
        with open(filename, 'r') as data_file:
            yaml_data = data_file.read()

    loader = Loader(yaml_data)

    def compose_node(parent, index):
        # the line number where the previous token has ended (plus empty lines)
        line = loader.line
        node = Composer.compose_node(loader, parent, index)
        node.__line__ = line + 1
        return node

    def construct_mapping(node, deep=False):
        mapping = Constructor.construct_mapping(loader, node, deep=deep)
        mapping['__line__'] = node.__line__
        return mapping

    loader.compose_node = compose_node
    loader.construct_mapping = construct_mapping
    try:
        python_data = loader.get_single_data()
    except ParserError as error:
        print("YAML syntax error parsing file {} :".format(filename),
              file=sys.stderr)
        print(error, file=sys.stderr)
        exit(1)
    return python_data
Exemplo n.º 2
0
def load_yaml(data):
    """
    Load YAML data extending it with line number information, nodes get a __line__ attribute
    """
    loader = Loader(data)

    def compose_node(parent, index):
        # the line number where the previous token has ended (plus empty lines)
        line = loader.line
        node = Composer.compose_node(loader, parent, index)
        node.__line__ = line + 1
        return node

    def construct_mapping(node, deep=False):
        mapping = Constructor.construct_mapping(loader, node, deep=deep)
        mapping['__line__'] = node.__line__
        return mapping
    loader.compose_node = compose_node
    loader.construct_mapping = construct_mapping
    data = loader.get_single_data()
    return data