Рассмотрим следующую схему
schema = {
"value_type":{
"type": "string", "required": True
},
"units": {
"type": "string",
"dependencies": {"value_type": ["float", "integer"]},
"required": True
}
}
Я хочу, чтобы поле units
было обязательным только , если значение поля value_type
равно либо float
, либо integer
.
Вот поведение, к которому я стремлюсь
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
Приведенная выше схема возвращает ожидаемый результат только для первых 3 случаев.
Если я изменю определение units
(опуская "required": True
) до
"units": {"type": "string", "dependencies": {"value_type": ["float", "integer"]}}
, тогда проверка
v.validate({"value_type": "float"}) # 3.
True
возвращает True
, что не то, что я хочу.
Я взглянул на oneof
правила в документации , но не смог найти способ применить это только к свойству required
.
Я хочу, чтобы значение требуемого былоTrue
только при достижении зависимости.
Как мне изменить мою схему для достижения этой цели?