Yaml объединяется в Python

Поэтому я собираюсь с идеей заставить себя (и любого, кто хочет использовать его, конечно) небольшую библиотеку шаблонов в Python для Pygame. Я бы хотел, чтобы система, в которой параметры приложения были снабжены файлом yaml.

Поэтому я думал, что было бы полезно, если бы библиотека предоставила дерево yaml по умолчанию и объединила его с предоставленным пользователем. Для удобства использования я задаюсь вопросом, возможно ли, есть ли там люди, которые могут учить рутину, где:

В любом случае в дереве, в котором пользователь, предоставивший yaml, перекрывает значение по умолчанию, пользовательские ветки заменяют предоставленные библиотеки.

В любом случае, когда пользователь, предоставленный yaml, не перекрывает дерево по умолчанию, дерево по умолчанию сохраняется.

Будут добавлены любые сверхъестественные ветви в дереве, предоставленные пользователем yaml.

Я знаю, что это объяснение было многословным, поскольку, вероятно, я понимаю, о чем я прошу. Интересно, можно ли немного получить бесплатно.

Вы можете использовать PyYAML для разбора файлов, а затем следующую функцию для объединения двух деревьев:

def merge(user, default): if isinstance(user,dict) and isinstance(default,dict): for k,v in default.iteritems(): if k not in user: user[k] = v else: user[k] = merge(user[k],v) return user 

При желании вы можете сделать глубокую копию дерева пользователя перед вызовом этой функции.