parts = [action_header]
# if there was help for the action, add lines of help text
- if action.help:
+ if action.help and action.help.strip():
help_text = self._expand_help(action)
- help_lines = self._split_lines(help_text, help_width)
- parts.append('%*s%s\n' % (indent_first, '', help_lines[0]))
- for line in help_lines[1:]:
- parts.append('%*s%s\n' % (help_position, '', line))
+ if help_text:
+ help_lines = self._split_lines(help_text, help_width)
+ parts.append('%*s%s\n' % (indent_first, '', help_lines[0]))
+ for line in help_lines[1:]:
+ parts.append('%*s%s\n' % (help_position, '', line))
# or add a newline if the description doesn't end with one
elif not action_header.endswith('\n'):
wrap\N{NO-BREAK SPACE}at non-breaking spaces
'''))
+ def test_help_blank(self):
+ # Issue 24444
+ parser = ErrorRaisingArgumentParser(
+ prog='PROG', description='main description')
+ parser.add_argument(
+ 'foo',
+ help=' ')
+ self.assertEqual(parser.format_help(), textwrap.dedent('''\
+ usage: PROG [-h] foo
+
+ main description
+
+ positional arguments:
+ foo
+
+ options:
+ -h, --help show this help message and exit
+ '''))
+
+ parser = ErrorRaisingArgumentParser(
+ prog='PROG', description='main description')
+ parser.add_argument(
+ 'foo', choices=[],
+ help='%(choices)s')
+ self.assertEqual(parser.format_help(), textwrap.dedent('''\
+ usage: PROG [-h] {}
+
+ main description
+
+ positional arguments:
+ {}
+
+ options:
+ -h, --help show this help message and exit
+ '''))
+
def test_help_alternate_prefix_chars(self):
parser = self._get_parser(prefix_chars='+:/')
self.assertEqual(parser.format_usage(),