@@ -324,41 +324,34 @@ def _build_output_type_by_subresource_selector(subresource_selector):
324324
325325
326326def handle_duplicated_options (arguments , has_subresource , operation_id ):
327- def _replace_arg (arg1 , arg2 ):
328- left_arg1 = True
329- # check whether you need to replace argument
330- if _can_replace_argument (arg2 , arg1 , has_subresource ):
331- arg1 .ref_schema .arg = arg2 .var
332- dropped_args .add (arg1 .var )
333- left_arg1 = False
334- elif _can_replace_argument (arg1 , arg2 , has_subresource ):
335- arg2 .ref_schema .arg = arg1 .var
336- dropped_args .add (arg2 .var )
337- left_arg1 = True
338- else :
339- # warning developer handle duplicated options
340- logger .warning (
341- f"Duplicated Option Value: { set (arg1 .options ).intersection (arg2 .options )} : "
342- f"{ arg1 .var } with { arg2 .var } : { operation_id } "
343- )
344-
345- return left_arg1
346-
347327 # check argument with duplicated option names
348328 dropped_args = set ()
349329 used_args = set ()
350330 for arg in arguments .values ():
351331 used_args .add (arg .var )
352332 if arg .var in dropped_args or not arg .options :
353333 continue
354-
334+ r_arg = None
355335 for v in arguments .values ():
356336 if v .var in used_args or v .var in dropped_args or arg .var == v .var or not v .options :
357337 continue
358338 if not set (arg .options ).isdisjoint (v .options ):
359- left_arg = _replace_arg (arg , v )
360- if not left_arg :
361- break
339+ r_arg = v
340+ break
341+ if r_arg :
342+ # check whether you need to replace argument
343+ if _can_replace_argument (r_arg , arg , has_subresource ):
344+ arg .ref_schema .arg = r_arg .var
345+ dropped_args .add (arg .var )
346+ elif _can_replace_argument (arg , r_arg , has_subresource ):
347+ r_arg .ref_schema .arg = arg .var
348+ dropped_args .add (r_arg .var )
349+ else :
350+ # warning developer handle duplicated options
351+ logger .warning (
352+ f"Duplicated Option Value: { set (arg .options ).intersection (r_arg .options )} : "
353+ f"{ arg .var } with { r_arg .var } : { operation_id } "
354+ )
362355
363356 return [arg for var , arg in arguments .items () if var not in dropped_args ]
364357
0 commit comments