File tree Expand file tree Collapse file tree 1 file changed +10
-3
lines changed Expand file tree Collapse file tree 1 file changed +10
-3
lines changed Original file line number Diff line number Diff line change @@ -233,18 +233,25 @@ def __open_lookup(self):
233233 # Prepare source
234234 source_name = fk ["reference" ]["resource" ]
235235 source_key = tuple (fk ["reference" ]["fields" ])
236- if source_name and source_name != self .name :
236+ if source_name == self .name or not source_name :
237+ # Self reference
238+ # A copy is needed as the resource is closed after the lookup
239+ source_res = self .to_copy ()
240+ else :
237241 if not self .package :
238242 note = (
239243 'package is required for foreign keys to other resources: "{fk}"'
240244 )
241245 raise FrictionlessException (errors .ResourceError (note = note ))
246+
242247 if not self .package .has_resource (source_name ):
243248 note = f'failed to handle a foreign key for resource "{ self .name } " as resource "{ source_name } " does not exist'
244249 raise FrictionlessException (errors .ResourceError (note = note ))
250+
251+ # A copy is needed as the resource is closed after the lookup.
252+ # Otherwise, this would cause issues in case of circular references.
245253 source_res = self .package .get_resource (source_name ).to_copy ()
246- else :
247- source_res = self .to_copy ()
254+
248255 if source_res .schema :
249256 source_res .schema .foreign_keys = []
250257
You can’t perform that action at this time.
0 commit comments