Просто интересно, есть ли способ расширить 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
Заранее спасибо.