Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit cdac551

Browse files
committed
Issue #18920: argparse's default version action (for -v, --version) should
output to stdout, matching the 'python -v' Reported by Wolfgang Maier
1 parent 309836c commit cdac551

3 files changed

Lines changed: 7 additions & 3 deletions

File tree

Lib/argparse.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1037,7 +1037,8 @@ def __call__(self, parser, namespace, values, option_string=None):
10371037
version = parser.version
10381038
formatter = parser._get_formatter()
10391039
formatter.add_text(version)
1040-
parser.exit(message=formatter.format_help())
1040+
parser._print_message(formatter.format_help(), _sys.stdout)
1041+
parser.exit()
10411042

10421043

10431044
class _SubParsersAction(Action):

Lib/test/test_argparse.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4359,7 +4359,7 @@ def test_version(self):
43594359
def test_version_format(self):
43604360
parser = ErrorRaisingArgumentParser(prog='PPP')
43614361
parser.add_argument('-v', '--version', action='version', version='%(prog)s 3.5')
4362-
msg = self._get_error(parser.parse_args, ['-v']).stderr
4362+
msg = self._get_error(parser.parse_args, ['-v']).stdout
43634363
self.assertEqual('PPP 3.5\n', msg)
43644364

43654365
def test_version_no_help(self):
@@ -4372,7 +4372,7 @@ def test_version_no_help(self):
43724372
def test_version_action(self):
43734373
parser = ErrorRaisingArgumentParser(prog='XXX')
43744374
parser.add_argument('-V', action='version', version='%(prog)s 3.7')
4375-
msg = self._get_error(parser.parse_args, ['-V']).stderr
4375+
msg = self._get_error(parser.parse_args, ['-V']).stdout
43764376
self.assertEqual('XXX 3.7\n', msg)
43774377

43784378
def test_no_help(self):

Misc/NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,9 @@ Library
193193
existing directory caused mkstemp and related APIs to fail instead of
194194
retrying. Report and fix by Vlad Shcherbina.
195195

196+
- Issue #18920: argparse's default destination for the version action (-v,
197+
--version) has also been changed to stdout, to match the Python executable.
198+
196199
Tests
197200
-----
198201

0 commit comments

Comments
 (0)