You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.
Traceback (most recent call last):
File "./test_click.py", line 12, in <module>
cli()
File "/home/user/anaconda3/envs/pybids-pre/lib/python3.8/site-packages/click/core.py", line 1025, in __call__returnself.main(*args, **kwargs)
File "/home/user/anaconda3/envs/pybids-pre/lib/python3.8/site-packages/click/core.py", line 954, in mainwithself.make_context(prog_name, args, **extra) as ctx:
File "/home/user/anaconda3/envs/pybids-pre/lib/python3.8/site-packages/click/core.py", line 852, in make_contextself.parse_args(ctx, args)
File "/home/user/anaconda3/envs/pybids-pre/lib/python3.8/site-packages/click/core.py", line 1261, in parse_args
value, args = param.handle_parse_result(ctx, opts, args)
File "/home/user/anaconda3/envs/pybids-pre/lib/python3.8/site-packages/click/core.py", line 2078, in handle_parse_result
value, source =self.consume_value(ctx, opts)
File "/home/user/anaconda3/envs/pybids-pre/lib/python3.8/site-packages/click/core.py", line 2509, in consume_value
value, source =super().consume_value(ctx, opts)
File "/home/user/anaconda3/envs/pybids-pre/lib/python3.8/site-packages/click/core.py", line 1975, in consume_value
value =self.get_default(ctx)
File "/home/user/anaconda3/envs/pybids-pre/lib/python3.8/site-packages/click/core.py", line 2453, in get_defaultreturnsuper().get_default(ctx, call=call)
File "/home/user/anaconda3/envs/pybids-pre/lib/python3.8/site-packages/click/core.py", line 1957, in get_defaultreturnself.type_cast_value(ctx, value)
File "/home/user/anaconda3/envs/pybids-pre/lib/python3.8/site-packages/click/core.py", line 2007, in type_cast_valuereturn _convert(value, (self.nargs !=1) +bool(self.multiple))
File "/home/user/anaconda3/envs/pybids-pre/lib/python3.8/site-packages/click/core.py", line 2005, in _convertreturntuple(_convert(x, level -1) for x in value)
TypeError: 'bool' object is not iterable
I discovered this while running tests on pre-released dependencies, picking up click 8.0.0a1, which no longer accepts the above. The offending case was in a subcommand with many options, so it was not as obvious as it would be with a good error message.
Environment
Python version: 3.8
Click version: 8.0.0a1
The text was updated successfully, but these errors were encountered:
I'm from MLH and I'm thinking of working on this issue, however I'm unsure of what type does default take when multiple is True or when nargs is set. Does it expect list/tuple or basically any iterable? Also will just putting the return statement causing the TypeError inside a try block suffice or do I add checks before returning?
multiple or nargs expect a list/tuple. multipleandnargs together expect a list/tuple of lists/tuples, although that's not particularly important here. For now any iterable should be allowed, that code is checking all value sources, not only the default. A try block sounds fine, but I would isolate checking that it's iterable from doing the conversion, since the ParamType might raise TypeError for its own reasons:
Expected Behavior
In the following command, I add an option
--multiple
with the metadatamultiple=True
, but the defaultFalse
instead of[False]
.Ideally, the traceback should indicate that the
--multiple
option has a bad default.Actual Behavior
Tell us what happens instead.
I discovered this while running tests on pre-released dependencies, picking up click 8.0.0a1, which no longer accepts the above. The offending case was in a subcommand with many options, so it was not as obvious as it would be with a good error message.
Environment
The text was updated successfully, but these errors were encountered: