Python jsonschema Подтвердить часовой пояс - PullRequest
0 голосов
/ 03 апреля 2020

Просто интересно, есть ли способ расширить FormatChecker, который передается в валидатор jsonschema? Кажется, я ничего не могу найти в документации. В основном я пытаюсь проверить, является ли строковое значение допустимым часовым поясом. Я использую Pytz для стороны часового пояса. Но мне нужно проверить, что указанное свойство json string содержится в этом списке. Единственный другой способ, который я могу придумать, - это извлечь список как поле перечисления в схеме. Но это огромный список и кажется довольно неуклюжим способом сделать это. В идеале я хотел бы что-то вроде этого:

from pytz import common_timezones
from jsonschema import validate, FormatChecker

timezone_checker = FormatChecker(formats=["timezone"])
timezone_checker.extend(check_timezone)

instance = { "timezone": "Australia/Sydney" }
schema = {
    "properties": {
        "timezone": {"type": "string", "format": "timezone"}
    }
}

validate(instance=instance, schema=schema, format_checker=timezone_checker)

...

def check_timezone(p):
    if not isinstance(p, str):
        return False
    return p in common_timezones

Заранее спасибо.

1 Ответ

0 голосов
/ 25 апреля 2020

Функция для этого называется FormatChecker.checks.

...