diff --git a/src/transformers/hf_argparser.py b/src/transformers/hf_argparser.py index b9e6f99b041d..b65edd1a5d72 100644 --- a/src/transformers/hf_argparser.py +++ b/src/transformers/hf_argparser.py @@ -181,9 +181,10 @@ def _parse_dataclass_field(parser: ArgumentParser, field: dataclasses.Field): origin_type = getattr(field.type, "__origin__", field.type) elif bool not in field.type.__args__: # filter `NoneType` in Union (except for `Union[bool, NoneType]`) - field.type = ( - field.type.__args__[0] if isinstance(None, field.type.__args__[1]) else field.type.__args__[1] - ) + if str in field.type.__args__ and len(field.type.__args__) > 2: + field.type = str + else: + field.type = next(arg for arg in field.type.__args__ if arg is not type(None)) origin_type = getattr(field.type, "__origin__", field.type) # A variable to store kwargs for a boolean field, if needed