@@ -576,7 +576,23 @@ def DEFINE_multi_enum(
576576@overload
577577def DEFINE_multi_enum_class (
578578 name : Text ,
579- default : Union [None , Iterable [_ET ], _ET , Text ],
579+ # This is separate from `Union[None, _ET, Text]` to avoid a Pytype issue
580+ # inferring the return value to FlagHolder[List[Union[_ET, enum.Enum]]]
581+ # when an iterable of concrete enum subclasses are used.
582+ default : Iterable [_ET ],
583+ enum_class : Type [_ET ],
584+ help : Text ,
585+ flag_values : _flagvalues .FlagValues = ...,
586+ module_name : Optional [Text ] = ...,
587+ * ,
588+ required : Literal [True ],
589+ ** args : Any ) -> _flagvalues .FlagHolder [List [_ET ]]:
590+ ...
591+
592+ @overload
593+ def DEFINE_multi_enum_class (
594+ name : Text ,
595+ default : Union [None , _ET , Text ],
580596 enum_class : Type [_ET ],
581597 help : Text ,
582598 flag_values : _flagvalues .FlagValues = ...,
@@ -601,7 +617,10 @@ def DEFINE_multi_enum_class(
601617@overload
602618def DEFINE_multi_enum_class (
603619 name : Text ,
604- default : Union [Iterable [_ET ], _ET , Text ],
620+ # This is separate from `Union[None, _ET, Text]` to avoid a Pytype issue
621+ # inferring the return value to FlagHolder[List[Union[_ET, enum.Enum]]]
622+ # when an iterable of concrete enum subclasses are used.
623+ default : Iterable [_ET ],
605624 enum_class : Type [_ET ],
606625 help : Text ,
607626 flag_values : _flagvalues .FlagValues = ...,
@@ -610,6 +629,17 @@ def DEFINE_multi_enum_class(
610629 ** args : Any ) -> _flagvalues .FlagHolder [List [_ET ]]:
611630 ...
612631
632+ @overload
633+ def DEFINE_multi_enum_class (
634+ name : Text ,
635+ default : Union [_ET , Text ],
636+ enum_class : Type [_ET ],
637+ help : Text ,
638+ flag_values : _flagvalues .FlagValues = ...,
639+ module_name : Optional [Text ] = ...,
640+ required : bool = ...,
641+ ** args : Any ) -> _flagvalues .FlagHolder [List [_ET ]]:
642+ ...
613643
614644
615645def DEFINE_alias (
0 commit comments