From feda5b9c05d29d02c75a9d5de73cc7aaf69dc52b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sim=C3=A3o=20Afonso?= Date: Tue, 16 Nov 2021 19:24:22 +0000 Subject: [PATCH 1/2] Skip suppressed optional arguments on tcsh See #57 --- examples/customcomplete.py | 1 + shtab/__init__.py | 17 +++++++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/examples/customcomplete.py b/examples/customcomplete.py index 89e2285..6460a59 100755 --- a/examples/customcomplete.py +++ b/examples/customcomplete.py @@ -52,6 +52,7 @@ def get_main_parser(): main_parser.add_argument('suffix', choices=['json', 'csv'], default='json', help="Output format") + main_parser.add_argument('--skipped-argument', help=argparse.SUPPRESS) parser.set_defaults(func=process) return main_parser diff --git a/shtab/__init__.py b/shtab/__init__.py index 7a7240e..d63952c 100644 --- a/shtab/__init__.py +++ b/shtab/__init__.py @@ -624,14 +624,15 @@ def recurse_parser(cparser, positional_idx, requirements=None): for optional in cparser._get_optional_actions(): log.debug('%s| Optional: %s', log_prefix, optional.dest) - # Mingle all optional arguments for all subparsers - for optional_str in optional.option_strings: - log.debug('%s| | %s', log_prefix, optional_str) - if optional_str.startswith('--'): - optionals_double.add(optional_str[2:]) - elif optional_str.startswith('-'): - optionals_single.add(optional_str[1:]) - specials.extend(get_specials(optional, 'n', optional_str)) + if optional.help != SUPPRESS: + # Mingle all optional arguments for all subparsers + for optional_str in optional.option_strings: + log.debug('%s| | %s', log_prefix, optional_str) + if optional_str.startswith('--'): + optionals_double.add(optional_str[2:]) + elif optional_str.startswith('-'): + optionals_single.add(optional_str[1:]) + specials.extend(get_specials(optional, 'n', optional_str)) for positional in cparser._get_positional_actions(): if positional.help != SUPPRESS: From 5358dda86e8ea98bf801a43a24ad73cd9f820c63 Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Tue, 23 Nov 2021 13:33:48 +0000 Subject: [PATCH 2/2] fix customcomplete example --- examples/customcomplete.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/examples/customcomplete.py b/examples/customcomplete.py index 6460a59..1646845 100755 --- a/examples/customcomplete.py +++ b/examples/customcomplete.py @@ -23,8 +23,9 @@ def process(args): - print("received =%r --input-file=%r --output-name=%r" % - (args.input_txt, args.input_file, args.output_name)) + print( + "received =%r [=%r] --input-file=%r --output-name=%r --hidden-opt=%r" % + (args.input_txt, args.suffix, args.input_file, args.output_name, args.hidden_opt)) def get_main_parser(): @@ -39,7 +40,7 @@ def get_main_parser(): parser = subparsers.add_parser("process", help="parse files") # `*.txt` file tab completion - parser.add_argument("input_txt", nargs="?").complete = TXT_FILE + parser.add_argument("input_txt", nargs='?').complete = TXT_FILE # file tab completion builtin shortcut parser.add_argument("-i", "--input-file").complete = shtab.FILE parser.add_argument( @@ -50,9 +51,9 @@ def get_main_parser(): ).complete = shtab.DIRECTORY # directory tab completion builtin shortcut - main_parser.add_argument('suffix', choices=['json', 'csv'], default='json', - help="Output format") - main_parser.add_argument('--skipped-argument', help=argparse.SUPPRESS) + parser.add_argument("suffix", choices=['json', 'csv'], default='json', nargs='?', + help="Output format") + parser.add_argument("--hidden-opt", action='store_true', help=argparse.SUPPRESS) parser.set_defaults(func=process) return main_parser