Jsonschema Draft7 несколько пользовательских типов в Python - PullRequest
1 голос
/ 06 марта 2019

Я пытаюсь добавить несколько пользовательских типов в мои валидаторы

, в настоящее время у меня есть тот, который проверяет типы дат.Я хочу добавить еще один, чтобы проверить положительные целые числа

from datetime import date

date_checker = Draft7Validator.TYPE_CHECKER.redefine("date", lambda _, instance: isinstance(instance, date))
custom_validator = validators.extend(Draft7Validator, type_checker=date_checker)
validator = custom_validator(schema={"type": "date"})
validator.validate(config, schema)

Как я могу добавить другой тип к тому же объекту проверки?

1 Ответ

0 голосов
/ 07 марта 2019

После игры с несколькими вариациями у меня получилось. Я не уверен на 100%, если это лучший способ сделать это .... но это работает

date_checker = Draft7Validator.TYPE_CHECKER.redefine_many({
    "date": lambda _, instance: isinstance(instance, date),
    "pos_int": lambda _, instance: isinstance(instance, int) and instance >= 0
})

custom_validator = validators.extend(Draft7Validator, type_checker=date_checker)
validator = custom_validator(schema)
validator.validate(config)
...