[Python-checkins] r86093 - in python/branches/release27-maint: Lib/argparse.py Lib/test/test_argparse.py

steven.bethard python-checkins at python.org
Mon Nov 1 17:30:24 CET 2010


Author: steven.bethard
Date: Mon Nov 1 17:30:24 2010
New Revision: 86093
Log:
Merged revisions 86092 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
 r86092 | steven.bethard | 2010年11月01日 17:29:26 +0100 (2010年11月01日) | 1 line
 
 Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
........
Modified:
 python/branches/release27-maint/ (props changed)
 python/branches/release27-maint/Lib/argparse.py
 python/branches/release27-maint/Lib/test/test_argparse.py
Modified: python/branches/release27-maint/Lib/argparse.py
==============================================================================
--- python/branches/release27-maint/Lib/argparse.py	(original)
+++ python/branches/release27-maint/Lib/argparse.py	Mon Nov 1 17:30:24 2010
@@ -392,10 +392,16 @@
 for action in group._group_actions:
 group_actions.add(action)
 if not group.required:
- inserts[start] = '['
+ if start in inserts:
+ inserts[start] += ' ['
+ else:
+ inserts[start] = '['
 inserts[end] = ']'
 else:
- inserts[start] = '('
+ if start in inserts:
+ inserts[start] += ' ('
+ else:
+ inserts[start] = '('
 inserts[end] = ')'
 for i in range(start + 1, end):
 inserts[i] = '|'
Modified: python/branches/release27-maint/Lib/test/test_argparse.py
==============================================================================
--- python/branches/release27-maint/Lib/test/test_argparse.py	(original)
+++ python/branches/release27-maint/Lib/test/test_argparse.py	Mon Nov 1 17:30:24 2010
@@ -2174,6 +2174,25 @@
 raises(ValueError, add_argument, 'bar', nargs=1)
 raises(ValueError, add_argument, 'bar', nargs=argparse.PARSER)
 
+ def test_help(self):
+ parser = ErrorRaisingArgumentParser(prog='PROG')
+ group1 = parser.add_mutually_exclusive_group()
+ group1.add_argument('--foo', action='store_true')
+ group1.add_argument('--bar', action='store_false')
+ group2 = parser.add_mutually_exclusive_group()
+ group2.add_argument('--soup', action='store_true')
+ group2.add_argument('--nuts', action='store_false')
+ expected = '''\
+ usage: PROG [-h] [--foo | --bar] [--soup | --nuts]
+
+ optional arguments:
+ -h, --help show this help message and exit
+ --foo
+ --bar
+ --soup
+ --nuts
+ '''
+ self.assertEqual(parser.format_help(), textwrap.dedent(expected))
 
 class MEMixin(object):
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /