>>> print(t)
{'key': {'const': 'value'}}
"""
+ self._validators: Dict[str, jsonschema.Draft7Validator] = {}
if init is not None:
self.update(init)
except jsonschema.exceptions.SchemaError:
raise TypeError(f"'{value}' is not a valid value in"
" MessageTemplate (not a valid JSON schema).")
+ self._validators[key] = jsonschema.Draft7Validator(value)
super().__setitem__(key, value)
def update(self, *args, **kwargs) -> None:
if key not in message:
return False
else:
- validator = jsonschema.Draft7Validator(self[key])
+ validator = self._validators[key]
for error in validator.iter_errors(message[key]):
return False
return True
>>> r = MessageTemplateRegistry()
"""
+ self._validators: Dict[str, jsonschema.Draft7Validator] = {}
self._clients: List[str] = []
self._children: Dict[str, Dict[str, MessageTemplateRegistry]] = {}
for key in self._children:
if key in message:
for schema_string in self._children[key]:
- schema = json.loads(schema_string)
- validator = jsonschema.Draft7Validator(schema)
+ if schema_string not in self._validators:
+ schema = json.loads(schema_string)
+ self._validators[schema_string] = \
+ jsonschema.Draft7Validator(schema)
+ validator = self._validators[schema_string]
validated = True
for error in validator.iter_errors(message[key]):
validated = False
for key in self._children:
if key in message:
for schema_string in self._children[key]:
- schema = json.loads(schema_string)
- validator = jsonschema.Draft7Validator(schema)
+ if schema_string not in self._validators:
+ schema = json.loads(schema_string)
+ self._validators[schema_string] = \
+ jsonschema.Draft7Validator(schema)
+ validator = self._validators[schema_string]
validated = True
for error in validator.iter_errors(message[key]):
validated = False