Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Inconsistent error due to ordering of Any() arguments #413

Open
e-ari opened this issue Nov 22, 2019 · 0 comments
Open

Inconsistent error due to ordering of Any() arguments #413

e-ari opened this issue Nov 22, 2019 · 0 comments

Comments

@e-ari
Copy link

e-ari commented Nov 22, 2019

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
  2. voluptuous.error.MultipleInvalid: length of value must be at least 2
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant