-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Description
There are two problems:
- The
flag_valueshadowsdefaultinclick.option() - The default type is omitted, the option converts to
stranyway.
About 2., The click docs says in the option section: "If no type is provided, the type of the default value is used."
But it is not True. I have to use type=frozenset to make the option's value not be "frozenset()", which breaks my function iterating it.
And the 1. is the big deal.
I provide my option code below and a minimal reproducer script.
I'm making a venv for Mojo language, and looking at new venv code on cpython.
If click can not fix this, it can not do things like Brett Cannon does in venv cli design. That's not good.
I want scm_ignore_files to be frozenset() if the flag is provided, else it is default to frozenset(["git"]).
Why is default not useful and the flag_value is always used?
@click.option(
"--without-scm-ignore-files",
"scm_ignore_files",
is_flag=True,
type=frozenset,
flag_value=frozenset(),
default=frozenset(["git"]),
help="Skips adding SCM ignore files to the environment "
"directory (Git is supported by default).",
)
Thanks for watching!
Environment:
- Python version: Python 3.10.12
- Click version: 8.1.7