Спецификация YAML не поддерживает каких-либо отношений между документами. Более того, она
явно постулирует, что каждый документ независим. Но
есть библиотеки это игнорирующие.
import sys
from ruamel.std.pathlib import Path
from ruamel.yaml import YAML, version_info
yaml = YAML(typ='safe', pure=True)
yaml.default_flow_style = False
def my_compose_document(self):
self.parser.get_event()
node = self.compose_node(None, None)
self.parser.get_event()
return node
yaml.Composer.compose_document = my_compose_document
def yaml_include(loader, node):
y = loader.loader
yaml = YAML(typ=y.typ, pure=y.pure)
yaml.composer.anchors = loader.composer.anchors
return yaml.load(Path(node.value))
yaml.Constructor.add_constructor("!include", yaml_include)
data = yaml.load(Path('warehouse.yaml'))
yaml.dump(data, sys.stdout)
specific.yamlspecific:
spec1:
<<: *obj1
spec2:
<<: *obj1
key1: 10
warehouse.yamlwarehouse:
obj1: &obj1
key1: 1
key2: 2
specific: !include specific.yaml