@@ -545,7 +545,12 @@ def declare_file(self, value):
545545 # Check for secondaries
546546 for sec in value .get ("secondaryFiles" , ()):
547547 # TODO: Record these in a specializationOf entity with UUID?
548- (sec_entity , _ , _ ) = self .declare_file (sec )
548+ if sec ['class' ] == "File" :
549+ (sec_entity , _ , _ ) = self .declare_file (sec )
550+ elif sec ['class' ] == "Directory" :
551+ sec_entity = self .declare_directory (sec )
552+ else :
553+ raise ValueError ("Got unexpected secondaryFiles value: {}" .format (sec ))
549554 # We don't know how/when/where the secondary file was generated,
550555 # but CWL convention is a kind of summary/index derived
551556 # from the original file. As its generally in a different format
@@ -796,10 +801,13 @@ def used_artefacts(self,
796801 base += "/" + name
797802 for key , value in job_order .items ():
798803 prov_role = self .wf_ns ["%s/%s" % (base , key )]
799- entity = self .declare_artefact (value )
800- self .document .used (
801- process_run_id , entity , datetime .datetime .now (), None ,
802- {"prov:role" : prov_role })
804+ try :
805+ entity = self .declare_artefact (value )
806+ self .document .used (
807+ process_run_id , entity , datetime .datetime .now (), None ,
808+ {"prov:role" : prov_role })
809+ except OSError :
810+ pass
803811
804812 def generate_output_prov (self ,
805813 final_output , # type: Union[Dict[Text, Any], List[Dict[Text, Any]]]
@@ -1572,7 +1580,10 @@ def _relativise_files(self, structure):
15721580 del structure ["location" ]
15731581
15741582 for val in structure .values ():
1575- self ._relativise_files (val )
1583+ try :
1584+ self ._relativise_files (val )
1585+ except OSError :
1586+ pass
15761587 return
15771588
15781589 if isinstance (structure , (str , Text )):
0 commit comments