pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/python/cpython/commit/456d3258d64f4c60a7787dd59f5c68bafb81584c

48faa60c69660fa.css" /> Fix support for the "prog" keyword to the OptionParser constructor, a… · python/cpython@456d325 · GitHub
Skip to content

Commit 456d325

Browse files
committed
Fix support for the "prog" keyword to the OptionParser constructor, as well
as directly setting the .prog attribute (which should be supported based on the class docstring). Closes SF bug #850964.
1 parent 8effa01 commit 456d325

2 files changed

Lines changed: 24 additions & 3 deletions

File tree

Lib/optparse.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1025,6 +1025,11 @@ def _init_parsing_state (self):
10251025
self.largs = None
10261026
self.values = None
10271027

1028+
def _get_prog_name(self):
1029+
if self.prog:
1030+
return self.prog
1031+
else:
1032+
return get_prog_name()
10281033

10291034
# -- Simple modifier methods ---------------------------------------
10301035

@@ -1288,12 +1293,12 @@ def error (self, msg):
12881293
should either exit or raise an exception.
12891294
"""
12901295
self.print_usage(sys.stderr)
1291-
sys.exit("%s: error: %s" % (get_prog_name(), msg))
1296+
sys.exit("%s: error: %s" % (self._get_prog_name(), msg))
12921297

12931298
def get_usage (self):
12941299
if self.usage:
12951300
return self.formatter.format_usage(
1296-
self.usage.replace("%prog", get_prog_name()))
1301+
self.usage.replace("%prog", self._get_prog_name()))
12971302
else:
12981303
return ""
12991304

@@ -1311,7 +1316,7 @@ def print_usage (self, file=None):
13111316

13121317
def get_version (self):
13131318
if self.version:
1314-
return self.version.replace("%prog", get_prog_name())
1319+
return self.version.replace("%prog", self._get_prog_name())
13151320
else:
13161321
return ""
13171322

Lib/test/test_optparse.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -612,6 +612,22 @@ def test_version(self):
612612
self.assertStdoutEquals(["--version"], "bar 0.1\n")
613613
sys.argv[0] = oldargv
614614

615+
def test_version_with_prog_keyword(self):
616+
oldargv = sys.argv[0]
617+
sys.argv[0] = "./foo/bar"
618+
self.parser = OptionParser(usage=SUPPRESS_USAGE, version="%prog 0.1",
619+
prog="splat")
620+
self.assertStdoutEquals(["--version"], "splat 0.1\n")
621+
sys.argv[0] = oldargv
622+
623+
def test_version_with_prog_attribute(self):
624+
oldargv = sys.argv[0]
625+
sys.argv[0] = "./foo/bar"
626+
self.parser = OptionParser(usage=SUPPRESS_USAGE, version="%prog 0.1")
627+
self.parser.prog = "splat"
628+
self.assertStdoutEquals(["--version"], "splat 0.1\n")
629+
sys.argv[0] = oldargv
630+
615631
def test_no_version(self):
616632
self.parser = OptionParser(usage=SUPPRESS_USAGE)
617633
self.assertParseFail(["--version"],

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy