@@ -245,8 +245,27 @@ def exc(self, msg, *args, rule=None):
245
245
Short-cut for creating raising exception in the code.
246
246
"""
247
247
msg = 'raise JsonSchemaValueException("' + msg + '", value={variable}, name="{name}", definition={definition}, rule={rule})'
248
- definition_rule = self .e (self ._definition .get (rule ) if isinstance (self ._definition , dict ) else None )
249
- self .l (msg , * args , definition = repr (self ._definition ), rule = repr (rule ), definition_rule = definition_rule )
248
+ definition = self ._expand_refs (self ._definition )
249
+ definition_rule = self .e (definition .get (rule ) if isinstance (definition , dict ) else None )
250
+ self .l (msg , * args , definition = repr (definition ), rule = repr (rule ), definition_rule = definition_rule )
251
+
252
+ def _expand_refs (self , definition ):
253
+ if isinstance (definition , list ):
254
+ return [self ._expand_refs (v ) for v in definition ]
255
+ if not isinstance (definition , dict ):
256
+ return definition
257
+ if "$ref" in definition :
258
+ with self ._resolver .resolving (definition ["$ref" ]) as schema :
259
+ return schema
260
+ if "properties" in definition :
261
+ return {
262
+ ** definition ,
263
+ "properties" : {
264
+ k : self ._expand_refs (v )
265
+ for k , v in definition ["properties" ].items ()
266
+ }
267
+ }
268
+ return {k : self ._expand_refs (v ) for k , v in definition .items ()}
250
269
251
270
def create_variable_with_length (self ):
252
271
"""
0 commit comments