From cdac5516750e3b80b846e0e156e496dd92be9b56 Mon Sep 17 00:00:00 2001 From: Eli Bendersky Date: Fri, 6 Sep 2013 06:49:15 -0700 Subject: [PATCH] Issue #18920: argparse's default version action (for -v, --version) should output to stdout, matching the 'python -v' Reported by Wolfgang Maier --- Lib/argparse.py | 3 ++- Lib/test/test_argparse.py | 4 ++-- Misc/NEWS | 3 +++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Lib/argparse.py b/Lib/argparse.py index 5ff755c84a..9520e0ea7c 100644 --- a/Lib/argparse.py +++ b/Lib/argparse.py @@ -1037,7 +1037,8 @@ class _VersionAction(Action): version = parser.version formatter = parser._get_formatter() formatter.add_text(version) - parser.exit(message=formatter.format_help()) + parser._print_message(formatter.format_help(), _sys.stdout) + parser.exit() class _SubParsersAction(Action): diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py index 00cde2ed5c..c10c5909bf 100644 --- a/Lib/test/test_argparse.py +++ b/Lib/test/test_argparse.py @@ -4359,7 +4359,7 @@ class TestOptionalsHelpVersionActions(TestCase): def test_version_format(self): parser = ErrorRaisingArgumentParser(prog='PPP') parser.add_argument('-v', '--version', action='version', version='%(prog)s 3.5') - msg = self._get_error(parser.parse_args, ['-v']).stderr + msg = self._get_error(parser.parse_args, ['-v']).stdout self.assertEqual('PPP 3.5\n', msg) def test_version_no_help(self): @@ -4372,7 +4372,7 @@ class TestOptionalsHelpVersionActions(TestCase): def test_version_action(self): parser = ErrorRaisingArgumentParser(prog='XXX') parser.add_argument('-V', action='version', version='%(prog)s 3.7') - msg = self._get_error(parser.parse_args, ['-V']).stderr + msg = self._get_error(parser.parse_args, ['-V']).stdout self.assertEqual('XXX 3.7\n', msg) def test_no_help(self): diff --git a/Misc/NEWS b/Misc/NEWS index c69110f1f8..67788c911e 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -193,6 +193,9 @@ Library existing directory caused mkstemp and related APIs to fail instead of retrying. Report and fix by Vlad Shcherbina. +- Issue #18920: argparse's default destination for the version action (-v, + --version) has also been changed to stdout, to match the Python executable. + Tests ----- -- 2.40.0