Grzegorz Brzęczyszczykiewicz rašė:
> Man reikia lokaliai pakeisti reikšmes ir nieko kol kas nesugalvojau > geriau nei įdėti 'override' bloką. Idėjiškai teisinga: ontologijos > dirba, kiekvienam elementui galima sudėti reikiamas reikšmes (nes dabar > daužau sau rankas už juokingas reikšmes kai kuriuose duomenyse).
O taip (nested mappings override) jau per didelė pornografija?
# test.yml
ref1: &ref1
prop1: "Base Property 1"
prop2: "Base Property 2"
name: "Base Name"
nested: &nested
l1:
l1_prop1: "l1 prop1"
l1_prop2: "l1 prop2"
l2: &nested_l2
l2_prop1: "l2 prop1"
l2_prop2: "l2 prop2"
l21: &nested_l21
l21_prop1: "l2.1 prop1"
l21_prop2: "l2.1 prop2"
obj1:
<<: *ref1
obj1_prop: "obj1 property"
obj2:
<<: *ref1
obj2_prop: "obj2 property"
name: "obj2 name OVERRIDE"
nested:
<<: *nested
l2:
<<: *nested_l2
l21:
<<: *nested_l21
l21_prop2: "OVERRIDE"
#EOF test.yml
with open('test.yml', 'r') as f:
data = yaml.safe_load(f)
data:
{'ref1': {'prop1': 'Base Property 1',
'prop2': 'Base Property 2',
'name': 'Base Name',
'nested': {'l1': {'l1_prop1': 'l1 prop1', 'l1_prop2': 'l1 prop2'},
'l2': {'l2_prop1': 'l2 prop1',
'l2_prop2': 'l2 prop2',
'l21': {'l21_prop1': 'l2.1 prop1', 'l21_prop2': 'l2.1 prop2'}}}},
'obj1': {'prop1': 'Base Property 1',
'prop2': 'Base Property 2',
'name': 'Base Name',
'nested': {'l1': {'l1_prop1': 'l1 prop1', 'l1_prop2': 'l1 prop2'},
'l2': {'l2_prop1': 'l2 prop1',
'l2_prop2': 'l2 prop2',
'l21': {'l21_prop1': 'l2.1 prop1', 'l21_prop2': 'l2.1 prop2'}}},
'obj1_prop': 'obj1 property'},
'obj2': {'prop1': 'Base Property 1',
'prop2': 'Base Property 2',
'name': 'obj2 name OVERRIDE',
'nested': {'l1': {'l1_prop1': 'l1 prop1', 'l1_prop2': 'l1 prop2'},
'l2': {'l2_prop1': 'l2 prop1',
'l2_prop2': 'l2 prop2',
'l21': {'l21_prop1': 'l2.1 prop1', 'l21_prop2': 'l2.1 prop2 OVERRIDE'}}},
'obj2_prop': 'obj2 property'}}
