Skip to content

Commit 3232e13

Browse files
committed
Fix subtle edge case bug where booleans were accepted as integer literals
1 parent f05bc31 commit 3232e13

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

cmd2/annotated.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,10 @@ def _convert(value: str) -> Any:
303303
else:
304304
bool_value = None
305305

306-
if bool_value is not None and bool_value in literal_values:
307-
return bool_value
306+
if bool_value is not None:
307+
for v in literal_values:
308+
if type(v) is bool and v == bool_value:
309+
return bool_value
308310

309311
valid = ", ".join(str(v) for v in literal_values)
310312
raise argparse.ArgumentTypeError(f"invalid choice: {value!r} (choose from {valid})")

0 commit comments

Comments
 (0)