2016-10-22 3 views
1

私はvoluptuous 0.9.2を使用しており、Exclusiveクラスに問題があります。キーがない場合はエラーが出るはずです。しかし、これは大変です。これは気味悪いバグですか?そうでない場合、私はそのスクリプトをどのように書くことができますか?Voluptuous Exclusive Class

私の問題を明確にするために、我々はそのようなスキーマを構築して想定しています

schema = Schema({Exclusive('a', 'z'): int, Exclusive('b', 'z'): int, 'c': int}, required=True) 

を私は1つだけ与えられる排他グループ内のいずれかのキーを必要としています。 しかし、{'c': 5}でテストすると、aまたはbのいずれかを指定しなくても有効と思われます。 私はそれをこのような状況のために特に動作させる方法を知らない。 ab自分のスキーマにオプションであることを意味OptionalからdocumentationExclusive継承による

+1

を、この機能を求め未解決の問題が依然として存在します115 – VPfB

答えて

1

、。そのため、{'c': 5}は有効な入力です。この問題を回避するには、必要に応じて明示的に指定する必要があります。https://github.com/alecthomas/voluptuous/issues/:今日のよう

from voluptuous import Schema, Exclusive, Required 
schema = Schema({Required(Exclusive('a', 'z')): int, Required(Exclusive('b', 'z')): int, 'c': int}, required=True) 
+0

あなたの解はaとbを含んでいます。これは逆に、私たちがaを与えるなら、bも必要であることを意味します。私はその反対が欲しい。私はaとbを一緒に与えるのではなく、そのうちの一つだけを与える。 –

+0

その場合、aとbを同じグループに入れることはできません。つまり、Exclusive( 'a'、 'b')を使用しますか? –

+0

排他的( 'a'、 'b')は、aがグループbのメンバーであることを意味します。私はすでにaとbをzという同じグループに入れています。 –