Я использую YAML в качестве формата файла конфигурации для проекта Python.
Недавно я обнаружил, что Rx - единственный валидатор схемы, доступный для Python и YAML.: - / Kwalify работает с YAML, но это только для Ruby и Java.: (
Я весь день читаю их недостающую документацию и просто не могу написать правильную схему для представления моей файловой структуры. Справка?
У меня есть следующий файл конфигурации YAML:
cmd:
exec: mycmd
aliases: [my, cmd]
filter:
sms: 'regex .*'
load:
exec: load
filter:
sms: 'load: .*$'
echo:
exec: echo %
Мне не удается представить вложенную структуру. Я хочу, чтобы самый внешний элемент (в данном случае cmd, load и echo) был произвольной строкой, которая в свою очередь содержитдругие элементы. 'exec' является фиксированной строкой и обязательным элементом; 'псевдонимы' и 'фильтр' также являются фиксированными, но должны быть необязательными. Фильтр, в свою очередь, имеет другой набор обязательных и дополнительных элементов. Как мне представить это с помощью Rx?
Пока у меня есть следующая схема (в YAML), которую Rx не может скомпилировать:
type: //rec
required:
type: //rec
required:
exec: //str
optional:
aliases:
type: //arr
contents: //str
length: {min: 1, max: 10}
filter:
type: //rec
optional:
sms: //str
email: //str
all: //str
Проверка этого в IPython дает мне следующее:
/Rx.py in make_schema(self, schema)
68 raise Error('invalid schema argument to make_schema')
69
---> 70 uri = self.expand_uri(schema["type"])
71
72 if not self.type_registry.get(uri): raise "unknown type %s" % uri
KeyError: 'type'
Что заставляет меня поверить, что я не указываю «тип» где-то.: -S
Есть идеи?
Я довольно устал бороться с этой штукой ... Есть ли какой-то другой способЯ могу написать схему и использовать ее для проверки моей конфигурацииФайлы *? 1026 *
Заранее спасибо,
Иван