[New-bugs-announce] [issue16360] argparse: comma in metavar causes assertion failure when formatting long usage message

Ben Gamari report at bugs.python.org
Mon Oct 29 17:49:08 CET 2012


New submission from Ben Gamari:

argparse suffers from a failing assertion when formatting a long usage message with an option whose metavar contains a comma. This can be seen in the attached testcase, which fails with,

Traceback (most recent call last):
  File "/home/ben/hi.py", line 24, in <module>
    args = parser.parse_args()
  File "/usr/lib/python2.7/argparse.py", line 1688, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "/usr/lib/python2.7/argparse.py", line 1720, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
  File "/usr/lib/python2.7/argparse.py", line 1937, in _parse_known_args
    self.error(_('too few arguments'))
  File "/usr/lib/python2.7/argparse.py", line 2360, in error
    self.print_usage(_sys.stderr)
  File "/usr/lib/python2.7/argparse.py", line 2322, in print_usage
    self._print_message(self.format_usage(), file)
  File "/usr/lib/python2.7/argparse.py", line 2278, in format_usage
    return formatter.format_help()
  File "/usr/lib/python2.7/argparse.py", line 279, in format_help
    help = self._root_section.format_help()
  File "/usr/lib/python2.7/argparse.py", line 209, in format_help
    func(*args)
  File "/usr/lib/python2.7/argparse.py", line 330, in _format_usage
    assert ' '.join(opt_parts) == opt_usage
AssertionError

This failure is apparently due to a regular expression used to wrap  the usage message. The solution to this is unclear, but it seems to me using a regular expression here is a hack at best.

----------
components: Library (Lib)
files: hi.py
messages: 174130
nosy: bgamari
priority: normal
severity: normal
status: open
title: argparse: comma in metavar causes assertion failure when formatting long usage message
type: crash
versions: Python 2.7
Added file: http://bugs.python.org/file27778/hi.py

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue16360>
_______________________________________


More information about the New-bugs-announce mailing list