Reputation: 17282
According to examples, this is the correct way to create a validation Schema:
import voluptuous as vol
PORT1 = vol.Schema(vol.All(int, vol.Range(min=0, max=65535)))
However, I noticed, that the Schema
call is missing in some of my validators, e.g.:
PORT2 = vol.All(int, vol.Range(min=0, max=65535))
I checked that PORT1
and PORT2
are not of the same type. The catch is that PORT2
works fine for me and gives the same results as the correct PORT1
.
I don't know if I made a mistake. Could somebode please clearly state if it is an error to omit the Schema(...)
? Why it works so well without the Schema(...)
that I did not notice any problems?
Upvotes: 3
Views: 199
Reputation: 146520
Every validator has a __call__
defined for in the validators
. You can see the source code below
https://github.com/alecthomas/voluptuous/blob/master/voluptuous/validators.py#L279
So even if you have
PORT3 = vol.Range(min=0, max=65535)
PORT3(100)
This will also work. As you said, PORT1
and PORT2
are different objects but the __call__
method is defined on all validators
as well ones derived from _WithSubValidators
The Schema
object is wrapper around these validators to check an object as such.
In your case since you are only validating individual fields or combining them together with other validators, they will work perfectly fine
Upvotes: 2