Использование настраиваемой проверки для встроенных типов

Я хочу проверить тип 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."}
}
Другие вопросы по тегам