Skip to content

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

@e-ari

Description

@e-ari

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions