Linter для формата файла конфигурации на основе YAML - PullRequest
0 голосов
/ 10 января 2020

У меня есть файл в YAML (я назвал его default.yaml), который описывает набор параметров и то, как эти параметры могут быть установлены (например, тип: bool). У пользователя есть другой файл *.yaml, в котором он может настроить эти параметры. Я написал Python framework, чтобы убедиться, что пользователь не настраивает ничего, что не описано в моем default.yaml. Мне было интересно, если уже есть какая-то библиотека или фреймворк, который делает это для меня. Может быть, я могу определить эти зависимости и правила для записей, а затем использовать платформу для проверки правильности ввода пользователя.

Моя главная проблема заключается в том, что у меня есть некоторые "сложные" зависимости, что делает проверку в целом достаточно больно, и код не очень читабелен.

Например, мой default.yaml выглядит примерно так:

parameter1: { default: null, 
              requires: [["parameter2", True], ["parameter3-len", [2-4]],
              type: int,
              values: { !!python/tuple [True, True] : 1,
                        !!python/tuple [True, False] : 2,
                        !!python/tuple [False, True] : 3,
                        !!python/tuple [False, False] : 4 }
            }

parameter2: { ... }

parameter1: { default: null, 
              requires: null,
              type: list,
              list-type: int,
              list-allow-dups: True,
              ...
            }

Итак, у меня есть параметры, которые могут быть списками, int, bool или строками, а также некоторые из моих списков могут иметь повторяющиеся значения, другие списки не должны содержать дубликаты, и т. д. c.

...