Consider the following schema
schema = {
"value_type":{
"type": "string", "required": True
},
"units": {
"type": "string",
"dependencies": {"value_type": ["float", "integer"]},
"required": True
}
}
I want the units
field to be required only when the value of value_type
field is either float
or integer
.
Here's the behaviour I aim to achieve
v = Validator(schema)
v.validate({"value_type": "float", "units": "mm"}) # 1.
True
v.validate({"value_type": "boolean", "units": "mm"}) # 2.
False
v.validate({"value_type": "float"}) # 3.
False
v.validate({"value_type": "boolean"}) # 4.
True
The above Schema returns the expected result only for the first 3 cases.
If I change the definition of units
(by omitting the "required": True
) to
"units": {"type": "string", "dependencies": {"value_type": ["float", "integer"]}}
then the validation of
v.validate({"value_type": "float"}) # 3.
True
returns True
which is not what I want.
I took a look at oneof
rules in the documentation but couldn't find a way to apply this only to the required
property.
I want the value of required to be True
only when the dependency is met.
How should I modify my schema to achieve this?