@@ -178,7 +178,8 @@ def _generate_new_signature_for_iteration(self, job_func: Callable) -> None:
178178 else :
179179 output_dataset_param = Parameter (
180180 name = self ._output_dataset_param ,
181- kind = Parameter .POSITIONAL_OR_KEYWORD ,
181+ kind = Parameter .KEYWORD_ONLY ,
182+ default = None ,
182183 annotation = output_dataset_cls ,
183184 )
184185 rest_params = rest_params + [output_dataset_param ]
@@ -200,19 +201,28 @@ def _extract_output_dataset(
200201 self_as_signature_func_job_base_mixin = cast (SignatureFuncJobBaseMixin , self )
201202
202203 if self ._output_dataset_param :
204+ if self ._output_dataset_param_in_func and self ._output_dataset_param not in kwargs :
205+ kwargs = kwargs .copy ()
206+ kwargs [self ._output_dataset_param ] = cast (
207+ Dataset , self_as_signature_func_job_base_mixin .return_type ())
208+
203209 bound_args = self_as_signature_func_job_base_mixin .get_bound_args (
204210 dataset , * args , ** kwargs )
205- output_dataset : Dataset = bound_args .arguments [self ._output_dataset_param ]
206-
207- if self ._output_dataset_param_in_func :
208- return_args = bound_args .args [1 :]
209- else :
210- return_args = bound_args .args [1 :- 1 ]
211+ output_dataset : Dataset | None = bound_args .arguments [self ._output_dataset_param ]
211212
212- return output_dataset , return_args , bound_args .kwargs
213+ return_args = bound_args .args [1 :]
214+ return_kwargs = bound_args .kwargs
215+ if not self ._output_dataset_param_in_func :
216+ return_kwargs .pop (self ._output_dataset_param )
213217 else :
218+ output_dataset = None
219+ return_args = args
220+ return_kwargs = kwargs
221+
222+ if output_dataset is None :
214223 output_dataset = cast (Dataset , self_as_signature_func_job_base_mixin .return_type ())
215- return output_dataset , args , kwargs
224+
225+ return output_dataset , return_args , return_kwargs
216226
217227 def _prepare_data_arg (self , data_file ):
218228 return data_file if is_model_subclass (self ._input_dataset_type ) else data_file .contents
0 commit comments