alecthomas / alecthomas/voluptuous

Inconsistent error due to ordering of Any() arguments

オープン
#413 コメント 0 件 リアクション 1 件 担当者 0 名 GitHub で見る
主要言語
Python
スター
1.9k
フォーク
237
PR マージ指標
30日以内にマージされた PR はありません

説明

Any chance for more comprehensive error returns for Any() failures?

I wanted to make a Schema where a string or list of strings (with a defined list length) was possible.

I wrote it as such:
`b = Schema(Any(str, All([str], Length(min=2))))`
And tested it with the following lines:
1) `b(3)`
2) `b('3')`
3) `b(['3'])`
4) `b(['3', '4'])`

These lines fail as expected - but the returned error message is either:

1. Not correct (Line 3) - `voluptuous.error.MultipleInvalid: expected str`
-- This being the error for not fulfilling the 1st arg of the Any, yet as a list the 2nd arg failing would be more pertinent.

2. Not comprehensive (Line 1) - `voluptuous.error.MultipleInvalid: expected str`
-- By failing all of the Any conditions, surely something more general / comprehensive should be thrown?

By swapping the arg order, the correct error is thrown on line 3 - although forcefully & and not by way of IDing the closest culprit in failure. Line 1 (expectedly) is still specific.

`b = Schema(Any(All([str], Length(min=2)), str))`
1) `voluptuous.error.MultipleInvalid: expected a list`
3) `voluptuous.error.MultipleInvalid: length of value must be at least 2`

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。