@@ -450,6 +450,7 @@ def collect_additional_outputs(self, inputs, output_dir, outputs):
450
450
File ,
451
451
MultiOutputFile ,
452
452
Directory ,
453
+ Path ,
453
454
int ,
454
455
float ,
455
456
bool ,
@@ -458,23 +459,29 @@ def collect_additional_outputs(self, inputs, output_dir, outputs):
458
459
]:
459
460
raise Exception ("not implemented (collect_additional_output)" )
460
461
# assuming that field should have either default or metadata, but not both
461
- if (
462
- fld .default is None or fld .default == attr .NOTHING
463
- ) and not fld .metadata : # TODO: is it right?
464
- raise AttributeError ("File has to have default value or metadata" )
465
- elif fld .default != attr .NOTHING :
466
- additional_out [fld .name ] = self ._field_defaultvalue (fld , output_dir )
467
- elif fld .metadata :
462
+ try :
463
+ additional_out [fld .name ] = getattr (inputs , fld .name )
464
+ except AttributeError :
468
465
if (
469
- fld .type in [int , float , bool , str , list ]
470
- and "callable" not in fld .metadata
471
- ):
472
- raise AttributeError (
473
- f"{ fld .type } has to have a callable in metadata"
466
+ fld .default is None or fld .default == attr .NOTHING
467
+ ) and not fld .metadata : # TODO: is it right?
468
+ raise AttributeError ("File has to have default value or metadata" )
469
+ elif fld .default != attr .NOTHING :
470
+ additional_out [fld .name ] = self ._field_defaultvalue (fld , output_dir )
471
+ elif fld .metadata :
472
+ if (
473
+ fld .type in [int , float , bool , str , list ]
474
+ and "callable" not in fld .metadata
475
+ ):
476
+ raise AttributeError (
477
+ f"{ fld .type } has to have a callable in metadata"
478
+ )
479
+ additional_out [fld .name ] = self ._field_metadata (
480
+ fld , inputs , output_dir , outputs
474
481
)
475
- additional_out [ fld . name ] = self . _field_metadata (
476
- fld , inputs , output_dir , outputs
477
- )
482
+ else :
483
+ if fld . type in ( File , MultiOutputFile , Directory , Path ):
484
+ additional_out [ fld . name ] = Path ( additional_out [ fld . name ]). absolute ( )
478
485
return additional_out
479
486
480
487
def generated_output_names (self , inputs , output_dir ):
0 commit comments