Использование настраиваемой проверки для встроенных типов
Я хочу проверить тип datetime с помощью настраиваемого валидатора, а не встроенного.
Код выглядит так:
schema_text = """
run_date:
type: datetime
required: true
"""
s.schema = yaml.load(schema_text)
s.validate(yaml.load("run_date: 2017-01-01T00:00+00:00:00"))
Я мог бы сделать это используяchecks_with: my_custom_validator
, что было бы хорошо, но я надеюсь сделать эти схемы доступными для общественности, поэтому просить их всех внести свой вклад в них будет затруднительно. Я думаю, что это также можно сделать с помощью нормализатора, но, опять же, я бы предпочел не вмешиваться в ввод.
Есть предложения? Вdateutil
парсер - это именно то, что я хочу использовать.
1 ответ
Поскольку ваши входные данные - это строка, представляющая datetime
в формате ISO 8601 вы можете использовать два подхода без какой-либо настройки.
Либо (попробуйте) преобразовать строку в datetime.datetime
объект:
from datetime import datetime
schema = {
"run_date": {"coerce": datetime.fromisoformat}
}
Это необходимо проверить с помощью нормализации и либо вызвать ошибку, либо привести run_date
значение поля в datetime.datetime
объект.
Если вы хотите использовать строку в качестве типа данных, используйте regex
правило:
schema = {
"run_date": {"type": "string", "regex": r"\d{4}-\d\d-\d\d-etc.pp."}
}