@@ -230,8 +230,9 @@ def _check_fk_source_fields(
230230) -> list [Issue ]:
231231 """Check that foreign key source fields exist and have the correct number."""
232232 issues = []
233- source_fields = _key_fields_as_str_list (resolve ("/fields" , foreign_key ))
234- unknown_fields = _get_unknown_key_fields (source_fields , resource .value )
233+ source_fields = resolve ("/fields" , foreign_key )
234+ source_field_list = _key_fields_as_str_list (source_fields )
235+ unknown_fields = _get_unknown_key_fields (source_field_list , resource .value )
235236 if unknown_fields :
236237 issues .append (
237238 Issue (
@@ -241,11 +242,12 @@ def _check_fk_source_fields(
241242 "No fields found in resource for foreign key source fields: "
242243 f"{ unknown_fields } ."
243244 ),
245+ instance = source_fields ,
244246 )
245247 )
246248
247249 dest_fields = _key_fields_as_str_list (resolve ("/reference/fields" , foreign_key ))
248- if len (source_fields ) != len (dest_fields ):
250+ if len (source_field_list ) != len (dest_fields ):
249251 issues .append (
250252 Issue (
251253 jsonpath = f"{ resource .jsonpath } .schema.foreignKeys.fields" ,
@@ -254,6 +256,7 @@ def _check_fk_source_fields(
254256 "The number of foreign key source fields must be the same as "
255257 "the number of foreign key destination fields."
256258 ),
259+ instance = source_fields ,
257260 )
258261 )
259262 return issues
@@ -264,8 +267,9 @@ def _check_fk_dest_fields_same_resource(
264267 resource : PropertyField ,
265268) -> list [Issue ]:
266269 """Check that foreign key destination fields exist on the same resource."""
267- dest_fields = _key_fields_as_str_list (resolve ("/reference/fields" , foreign_key ))
268- unknown_fields = _get_unknown_key_fields (dest_fields , resource .value )
270+ dest_fields = resolve ("/reference/fields" , foreign_key )
271+ dest_field_list = _key_fields_as_str_list (dest_fields )
272+ unknown_fields = _get_unknown_key_fields (dest_field_list , resource .value )
269273 if not unknown_fields :
270274 return []
271275
@@ -277,6 +281,7 @@ def _check_fk_dest_fields_same_resource(
277281 "No fields found in resource for foreign key "
278282 f"destination fields: { unknown_fields } ."
279283 ),
284+ instance = dest_fields ,
280285 )
281286 ]
282287
@@ -285,7 +290,8 @@ def _check_fk_dest_fields_diff_resource(
285290 foreign_key : dict [str , Any ], resource : PropertyField , properties : dict [str , Any ]
286291) -> list [Issue ]:
287292 """Check that foreign key destination fields exist on the destination resource."""
288- dest_fields = _key_fields_as_str_list (resolve ("/reference/fields" , foreign_key ))
293+ dest_fields = resolve ("/reference/fields" , foreign_key )
294+ dest_field_list = _key_fields_as_str_list (dest_fields )
289295 # Safe, as only keys of the correct type here
290296 dest_resource_name = cast (str , resolve ("/reference/resource" , foreign_key ))
291297
@@ -299,11 +305,12 @@ def _check_fk_dest_fields_diff_resource(
299305 f"The destination resource { dest_resource_name !r} of this foreign "
300306 "key doesn't exist in the package."
301307 ),
308+ instance = dest_resource_name ,
302309 )
303310 ]
304311
305312 unknown_fields = _get_unknown_key_fields (
306- dest_fields , properties , f"{ dest_resource_path } ."
313+ dest_field_list , properties , f"{ dest_resource_path } ."
307314 )
308315 if not unknown_fields :
309316 return []
@@ -316,6 +323,7 @@ def _check_fk_dest_fields_diff_resource(
316323 f"No fields found in destination resource { dest_resource_name !r} "
317324 f"for foreign key destination fields: { unknown_fields } ."
318325 ),
326+ instance = dest_fields ,
319327 )
320328 ]
321329
0 commit comments