99from collections import OrderedDict
1010from datetime import datetime , timezone
1111import time
12+ import argparse # do not change to jsonargparse, shall not require 3rd party pkgs
1213
1314
1415def format_metavar (option ):
@@ -100,17 +101,18 @@ def generate_level(self, prefix, parser, Archiver, extra_choices=None):
100101 return is_subcommand
101102
102103 def write_usage (self , parser , fp ):
103- if any (len (o .option_strings ) for o in parser ._actions ):
104+ actions = [o for o in parser ._actions if getattr (o , "help" , None ) != argparse .SUPPRESS ]
105+ if any (len (o .option_strings ) for o in actions ):
104106 fp .write (" [options]" )
105- for option in parser . _actions :
107+ for option in actions :
106108 if option .option_strings :
107109 continue
108110 fp .write (" " + format_metavar (option ))
109111 fp .write ("\n \n " )
110112
111113 def write_options (self , parser , fp ):
112- def is_positional_group (group ):
113- return any (not o .option_strings for o in group . _group_actions )
114+ def is_positional_group (actions ):
115+ return any (not o .option_strings for o in actions )
114116
115117 # HTML output:
116118 # A table using some column-spans
@@ -121,17 +123,18 @@ def is_positional_group(group):
121123 # (no of columns used, columns, ...)
122124 rows .append ((1 , ".. class:: borg-common-opt-ref\n \n :ref:`common_options`" ))
123125 else :
124- if not group ._group_actions :
126+ actions = [o for o in group ._group_actions if getattr (o , "help" , None ) != argparse .SUPPRESS ]
127+ if not actions :
125128 continue
126129 group_header = "**%s**" % group .title
127130 if group .description :
128131 group_header += " — " + group .description
129132 rows .append ((1 , group_header ))
130- if is_positional_group (group ):
131- for option in group . _group_actions :
133+ if is_positional_group (actions ):
134+ for option in actions :
132135 rows .append ((3 , "" , "``%s``" % option .metavar , option .help or "" ))
133136 else :
134- for option in group . _group_actions :
137+ for option in actions :
135138 if option .metavar :
136139 option_fmt = "``%s " + option .metavar + "``"
137140 else :
@@ -218,18 +221,19 @@ def write_row_separator():
218221 )
219222
220223 def write_options_group (self , group , fp , with_title = True , base_indent = 4 ):
221- def is_positional_group (group ):
222- return any (not o .option_strings for o in group . _group_actions )
224+ def is_positional_group (actions ):
225+ return any (not o .option_strings for o in actions )
223226
224227 indent = " " * base_indent
228+ actions = [o for o in group ._group_actions if getattr (o , "help" , None ) != argparse .SUPPRESS ]
225229
226- if is_positional_group (group ):
227- for option in group . _group_actions :
230+ if is_positional_group (actions ):
231+ for option in actions :
228232 fp .write (option .metavar + "\n " )
229233 fp .write (textwrap .indent (option .help or "" , " " * base_indent ) + "\n " )
230234 return
231235
232- if not group . _group_actions :
236+ if not actions :
233237 return
234238
235239 if with_title :
@@ -238,7 +242,7 @@ def is_positional_group(group):
238242
239243 opts = OrderedDict ()
240244
241- for option in group . _group_actions :
245+ for option in actions :
242246 if option .metavar :
243247 option_fmt = "%s " + option .metavar
244248 else :
@@ -503,34 +507,38 @@ def ref_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
503507 fd .write (man_page )
504508
505509 def write_usage (self , write , parser ):
506- if any (len (o .option_strings ) for o in parser ._actions ):
510+ actions = [o for o in parser ._actions if getattr (o , "help" , None ) != argparse .SUPPRESS ]
511+ if any (len (o .option_strings ) for o in actions ):
507512 write (" [options] " , end = "" )
508- for option in parser . _actions :
513+ for option in actions :
509514 if option .option_strings :
510515 continue
511516 write (format_metavar (option ), end = " " )
512517
513518 def write_options (self , write , parser ):
514519 for group in parser ._action_groups :
515- if group .title == "Common options" or not group ._group_actions :
520+ actions = [o for o in group ._group_actions if getattr (o , "help" , None ) != argparse .SUPPRESS ]
521+ if group .title == "Common options" or not actions :
516522 continue
517523 title = "arguments" if group .title == "positional arguments" else group .title
518524 self .write_heading (write , title , "+" )
519525 self .write_options_group (write , group )
520526
521527 def write_options_group (self , write , group ):
522- def is_positional_group (group ):
523- return any (not o .option_strings for o in group . _group_actions )
528+ def is_positional_group (actions ):
529+ return any (not o .option_strings for o in actions )
524530
525- if is_positional_group (group ):
526- for option in group ._group_actions :
531+ actions = [o for o in group ._group_actions if getattr (o , "help" , None ) != argparse .SUPPRESS ]
532+
533+ if is_positional_group (actions ):
534+ for option in actions :
527535 write (option .metavar )
528536 write (textwrap .indent (option .help or "" , " " * 4 ))
529537 return
530538
531539 opts = OrderedDict ()
532540
533- for option in group . _group_actions :
541+ for option in actions :
534542 if option .metavar :
535543 option_fmt = "%s " + option .metavar
536544 else :
0 commit comments