Pythonプロジェクトの構成ファイル形式としてYAMLを使用しています。
最近、 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'は固定文字列であり、必須項目です。'aliases'と'filter'も修正されていますが、オプションである必要があります。フィルタには、必須アイテムとオプションアイテムの別のセットがあります。これをRxでどのように表現する必要がありますか?
これまでのところ、Rxがコンパイルに失敗する次のスキーマ(YAML)があります。
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
何か案は?
私はこのことと戦うのにかなり疲れています...スキーマを記述し、それを使用して構成ファイルを検証する他の方法はありますか?
前もって感謝します、
イワン