YAML имеет наследование. Самый ясный пример, который я когда-либо видел, здесь: http://blog.101ideas.cz/posts/dry-your-yaml-files.html
Мне нужно что-то более сложное: мне нужно переопределить свойство объекта объекта. Вот пример:
database: &default
server:
ip: 192.168.1.5
port: 2000
db_name: test
user:
name: root
password: root
# database foo differs from default by only its port and user password
foo_database:
<<: *default
server:
port: 2001
db_name: foo
user:
password: foo_root
Я хочу получить этот результат:
foo_database.server.ip -> 192.168.1.5
foo_database.server.port -> 2001
foo_database.db_name -> foo
foo_database.user.name -> root
foo_database.user.password -> foo_root
Но если вы так заявляете, вы получите эти свойства некорректными (в соответствии с ожидаемыми значениями):
foo_database.server.ip -> will be None
foo_database.user.name -> will be None
потому что новый объект "server" имеет только свойство "port" и переопределяет весь старый "серверный" объект.
Как мне получить наследование, которое я хочу достичь?