Why HFArgumentParser.parse_dict(TrainerArguments) return tuple instead of dict?
I guess it is not certainly bug however I could not almost understand why` HfArgumentParser.parsedict() `return `(*outputs,)`. As can be seen in [docs](https://huggingface.co/transformers/_modules/transformers/hf_argparser.html#HfArgumentParser
)
I am trying to fine-tune BERT for Token Classification using Trainer class and my aim is to turn argparse object to TrainingArguments. I converted  ArgumentParser object to dictionary then using HfArgumentParser.parsedict() turn it to TrainingArguments object. However I realized that ` HfArgumentParser.parsedict() ` returns `(TrainingArguments, )` tuple  which cause following error in Trainer initializer.

```console
Traceback (most recent call last):
  File "transformers_ner.py", line 344, in <module>
    finetune_model(args)
  File "transformers_ner.py", line 308, in finetune_model
    args=train_args
  File "/home/akali/.local/lib/python3.6/site-packages/transformers/trainer.py", line 237, in __init__
    set_seed(self.args.seed)
AttributeError: 'tuple' object has no attribute 'seed'

```

I get train_args by:

```python
    # ArgParser --> Training Arguments
    HFParser = HfArgumentParser(TrainingArguments)
    train_args = HFParser.parse_dict(args)
```

I know I can get TrainingArguments object by doing` train_args[0] `however, isn't it meaningless that `HfArgumentParser.parsedict()` return tuple instead of directly TrainingArguments.

Thanks.







hi @akalieren 

the `parse_dict` or `parse_args_into_dataclasses` methods always return a `tuple` of parsed arguments for each `dataclass` that was used to initialize `HfArgumentParser`. Here you're initializing it with just `TrainingArguments`  so `parse_dict` returns a `tuple` of length 1.

Hope this helps.<|||||>Thanks for quick response @patil-suraj,

I am understanding it returns `tuple` of initializing given data classes; however, my question is that is there a reason why it returns `tuple` instead of just  `*outputs`. 

I hope this is not kind of misunderstanding, and grateful about your time.
Thanks.

<|||||>`return *outputs` is not a valid python statement. Also `outputs` here is a list and it's just a good python practice to return return `tuple`  instead of `list` when returning multiple values.<|||||>I tried it and realized that you are right. Thanks a lot for your interest and kind responses.

I am closing this issue. Wish healthy days.