私はYAMLをPythonプロジェクトの設定ファイル形式として使用しています。これはRxにとって有効なスキーマではないのはなぜですか?
最近、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)が任意の文字列で、 'aliases'と 'filter'も固定されていますが、オプションである必要があります。また、フィルタには必須項目とオプション項目があります。これをRxで表しますか?私を信じて私をリード
/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'
:IPythonで、これは私にこれを与え
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
テスト:
は、これまでのところ私は、Rxはコンパイルに失敗し、次のスキーマを(YAMLで)、持っています"タイプ"をどこかに指定していません。 :-S
アイデア?
私はこのことでかなり疲れています...スキーマを作成して設定ファイルの検証に使用できる他の方法はありますか? RECは唯一「必要」に指定されたキーを含めることができるのに対し、マップは、キーとして任意の文字列を含めることができます
type: //map
values:
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
:事前に
おかげで、
イワン
うん、それはうまくいく!私はこの方法で//マップを使用することは考えていませんでした。 // rec型にあまりにも集中していました。 Rxの作者、Ricardo Signesは、私に親切にも、私が将来同じような問題を抱えているかもしれない人と一緒に仲間を共有すると思っていた役に立つ回答を送ってくれました:http://pastebin.com/ f13421133。私は彼が私にそう気にしないことを願っています。 あなたの答えをありがとう、Daniel!あなたは私の一日を救った! :D – imiric
私は私のプロジェクトでこのモジュールを使用しようとしていますが、@imiricが言ったように、ドキュメンテーションは親切ではありません。あなたはこれを使用していくつかの例のPythonコードを共有できますか? – NI6