Coverage for src / answers / schema.py: 100%
11 statements
« prev ^ index » next coverage.py v7.12.0, created at 2025-11-21 16:36 +0000
« prev ^ index » next coverage.py v7.12.0, created at 2025-11-21 16:36 +0000
1# vim: foldmarker=[[,]] foldmethod=marker
2import cerberus
4# https://docs.python-cerberus.org/en/stable/validation-rules.html
5SCHEMA = r"""
6---
7answers: # [[
8 type: dict
9 default: {}
10 nullable: true
11 check_with: answers
12 keysrules:
13 type: string
14 regex: '[a-zA-Z0-9_]+'
15# ]]
16"""
19class LocalValidator(cerberus.Validator):
20 def _check_with_answers(self, _field, value):
21 if value is None:
22 return
24 # Check that all dict values are string, ints or booleans
25 for k, v in value.items():
26 if type(v) in [str, int, bool]:
27 continue
28 self._error(k, "Value must be string, integer or boolean")
29 return