Open
Description
First Check
- I added a very descriptive title to this issue.
- I used the GitHub search to find a similar issue and didn't find it.
- I searched the Typer documentation, with the integrated search.
- I already searched in Google "How to X in Typer" and didn't find any information.
- I already read and followed all the tutorial in the docs and didn't find an answer.
- I already checked if it is not related to Typer but to Click.
Commit to Help
- I commit to help with one of those options 👆
Example Code
import typer
def main(names: list[str] = typer.Argument(["Peter", "Paul", "Mary"])):
for name in names:
typer.echo(f"Hi, {name}")
if __name__ == '__main__':
typer.run(main)
Description
The provided example raises the following error:
Traceback (most recent call last):
File "[...]\main.py", line 8, in <module>
typer.run(main)
TypeError: 'default' is not supported for nargs=-1.
Looking at the Click docs, my understanding is that nargs=-1
is used to denote Variadic arguments, i.e. multi-value arguments.
So if default
is not supported for nargs=-1
, is there any way to have default values for multi-value arguments in Typer?
Desired behaviour: the default values are used if no argument values are provided, with a help message that looks something like this:
Usage: main.py [OPTIONS] [NAMES]...
Arguments:
[NAMES]... [default: [Peter, Paul, Mary]]
Options:
--help Show this message and exit.
Operating System
Windows
Operating System Details
No response
Typer Version
0.7.0
Python Version
3.10.9
Additional Context
I believe this is related to #108, where the conclusion was to use None
as default to achieve an optional multi-value argument. However, it would be useful if other default values were supported as well. But this might just be a limitation of Click?
Love the project ❤️