Esempio n. 1
0
 def setUpClass(cls) -> None:
     reader_table = [
         (re.compile(r'^.+\.(([yY][mM][lL])|([Yy][aA][mM][lL]))$'), YamlReader),
         (re.compile(r'^.+\.([j][2])$'), YamlReader),
     ]
     constructor = YamlIncludeConstructor(reader_map=reader_table)
     yaml.FullLoader.add_constructor('!inc', constructor)
Esempio n. 2
0
    def __init__(self, *args, **kwargs):
        super(cls, self).__init__(*args, **kwargs)

        def yaml_join(loader, node):
            seq = loader.construct_sequence(node)
            return ' '.join([str(i) for i in seq])

        def yaml_remove_arg(loader, node):
            orig, remove = node.value
            args = loader.construct_scalar(orig)
            return " ".join(a for a in args.split() if a != remove.value)

        def folder_constructor(loader, node):
            return Folder(node.value)

        def union_constructor(loader, node):
            return Union(node.value)

        self.add_constructor(u'tag:yaml.org,2002:map', from_yaml)
        self.add_constructor(u'tag:yaml.org,2002:omap', from_yaml)
        self.add_constructor('!join', yaml_join)
        self.add_constructor('!remove_arg', yaml_remove_arg)
        self.add_constructor("!folder", folder_constructor)
        self.add_constructor("!union", union_constructor)
        self.add_constructor('!include',
                             YamlIncludeConstructor(base_dir=base_dir))
Esempio n. 3
0
 def _add_constructors(self, base_path: str) -> None:
     _ = self  # Fake usage
     yaml.SafeLoader.add_constructor(  # type: ignore
         "!engine", partial(_custom_yaml_constructor, clstype=RealEngine))
     yaml.SafeLoader.add_constructor(  # type: ignore
         "!retry", partial(_custom_yaml_constructor, clstype=RetryHandler))
     yaml.SafeLoader.add_constructor(  # type: ignore
         "!include", YamlIncludeConstructor(base_dir=base_path))
     yaml.SafeLoader.add_constructor(  # type: ignore
         "!env", _custom_env_tag)
Esempio n. 4
0
class MultiLoaderTestCase(unittest.TestCase):

    constructor = YamlIncludeConstructor()

    def setUp(self):
        yaml.add_constructor('!include', self.constructor)

    def test_full_load_all_yaml(self):
        txt = dedent('''
        ---
        file1: !include tests/data/include.d/1.yaml

        ---
        file2: !include tests/data/include.d/2.yaml
        ''').strip()
        iterable = yaml.full_load_all(txt)
        for i, data in enumerate(iterable):
            if i == 0:
                self.assertEqual(data, {'file1': YAML1})
            elif i == 1:
                self.assertEqual(data, {'file2': YAML2})
            else:
                raise RuntimeError()