123
123
)
124
124
125
125
126
- def validate (definition , data , handlers = {}, formats = {}, use_default = True ):
126
+ def validate (definition , data , handlers = {}, formats = {}, use_default = True , use_formats = True ):
127
127
"""
128
128
Validation function for lazy programmers or for use cases when you need
129
129
to call validation only once, so you do not have to compile it first.
@@ -139,12 +139,12 @@ def validate(definition, data, handlers={}, formats={}, use_default=True):
139
139
140
140
Preferred is to use :any:`compile` function.
141
141
"""
142
- return compile (definition , handlers , formats , use_default )(data )
142
+ return compile (definition , handlers , formats , use_default , use_formats )(data )
143
143
144
144
145
145
#TODO: Change use_default to False when upgrading to version 3.
146
146
# pylint: disable=redefined-builtin,dangerous-default-value,exec-used
147
- def compile (definition , handlers = {}, formats = {}, use_default = True ):
147
+ def compile (definition , handlers = {}, formats = {}, use_default = True , use_formats = True ):
148
148
"""
149
149
Generates validation function for validating JSON schema passed in ``definition``.
150
150
Example:
@@ -196,13 +196,17 @@ def compile(definition, handlers={}, formats={}, use_default=True):
196
196
'bar': lambda value: value in ('foo', 'bar'),
197
197
})
198
198
199
+ Note that formats are automatically used as assertions. It can be turned
200
+ off by passing `use_formats=False`. When disabled, custom formats are
201
+ disabled as well. (Added in 2.19.0.)
202
+
199
203
Exception :any:`JsonSchemaDefinitionException` is raised when generating the
200
204
code fails (bad definition).
201
205
202
206
Exception :any:`JsonSchemaValueException` is raised from generated function when
203
207
validation fails (data do not follow the definition).
204
208
"""
205
- resolver , code_generator = _factory (definition , handlers , formats , use_default )
209
+ resolver , code_generator = _factory (definition , handlers , formats , use_default , use_formats )
206
210
global_state = code_generator .global_state
207
211
# Do not pass local state so it can recursively call itself.
208
212
exec (code_generator .func_code , global_state )
@@ -213,7 +217,7 @@ def compile(definition, handlers={}, formats={}, use_default=True):
213
217
214
218
215
219
# pylint: disable=dangerous-default-value
216
- def compile_to_code (definition , handlers = {}, formats = {}, use_default = True ):
220
+ def compile_to_code (definition , handlers = {}, formats = {}, use_default = True , use_formats = True ):
217
221
"""
218
222
Generates validation code for validating JSON schema passed in ``definition``.
219
223
Example:
@@ -236,21 +240,22 @@ def compile_to_code(definition, handlers={}, formats={}, use_default=True):
236
240
Exception :any:`JsonSchemaDefinitionException` is raised when generating the
237
241
code fails (bad definition).
238
242
"""
239
- _ , code_generator = _factory (definition , handlers , formats , use_default )
243
+ _ , code_generator = _factory (definition , handlers , formats , use_default , use_formats )
240
244
return (
241
245
'VERSION = "' + VERSION + '"\n ' +
242
246
code_generator .global_state_code + '\n ' +
243
247
code_generator .func_code
244
248
)
245
249
246
250
247
- def _factory (definition , handlers , formats = {}, use_default = True ):
251
+ def _factory (definition , handlers , formats = {}, use_default = True , use_formats = True ):
248
252
resolver = RefResolver .from_schema (definition , handlers = handlers , store = {})
249
253
code_generator = _get_code_generator_class (definition )(
250
254
definition ,
251
255
resolver = resolver ,
252
256
formats = formats ,
253
257
use_default = use_default ,
258
+ use_formats = use_formats ,
254
259
)
255
260
return resolver , code_generator
256
261
0 commit comments