Более сложное наследование в YAML?

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" и переопределяет весь старый объект "server".

Как мне получить наследство, которого я хочу достичь?

Ответы на вопрос(2)

Ваш ответ на вопрос