Skip to content

Commit 7d2c397

Browse files
gh-91818: Use default program name in the CLI of many modules (GH-124867)
As argparse now detects by default when the code was run as a module. This leads to using the actual executable name instead of simply "python" to display in the usage message ("usage: python -m ...").
1 parent cbfd392 commit 7d2c397

File tree

10 files changed

+14
-12
lines changed

10 files changed

+14
-12
lines changed

Lib/ast.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1743,7 +1743,7 @@ def unparse(ast_obj):
17431743
def main():
17441744
import argparse
17451745

1746-
parser = argparse.ArgumentParser(prog='python -m ast')
1746+
parser = argparse.ArgumentParser()
17471747
parser.add_argument('infile', nargs='?', default='-',
17481748
help='the file to parse; defaults to stdin')
17491749
parser.add_argument('-m', '--mode', default='exec',

Lib/ensurepip/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ def _uninstall_helper(*, verbosity=0):
205205

206206
def _main(argv=None):
207207
import argparse
208-
parser = argparse.ArgumentParser(prog="python -m ensurepip")
208+
parser = argparse.ArgumentParser()
209209
parser.add_argument(
210210
"--version",
211211
action="version",

Lib/ensurepip/_uninstall.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77

88
def _main(argv=None):
9-
parser = argparse.ArgumentParser(prog="python -m ensurepip._uninstall")
9+
parser = argparse.ArgumentParser()
1010
parser.add_argument(
1111
"--version",
1212
action="version",

Lib/json/tool.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@
99

1010

1111
def main():
12-
prog = 'python -m json'
1312
description = ('A simple command line interface for json module '
1413
'to validate and pretty-print JSON objects.')
15-
parser = argparse.ArgumentParser(prog=prog, description=description)
14+
parser = argparse.ArgumentParser(description=description)
1615
parser.add_argument('infile', nargs='?',
1716
help='a JSON file to be validated or pretty-printed',
1817
default='-')

Lib/pdb.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -2423,8 +2423,7 @@ def help():
24232423
def main():
24242424
import argparse
24252425

2426-
parser = argparse.ArgumentParser(prog="pdb",
2427-
usage="%(prog)s [-h] [-c command] (-m module | pyfile) [args ...]",
2426+
parser = argparse.ArgumentParser(usage="%(prog)s [-h] [-c command] (-m module | pyfile) [args ...]",
24282427
description=_usage,
24292428
formatter_class=argparse.RawDescriptionHelpFormatter,
24302429
allow_abbrev=False)

Lib/sqlite3/__main__.py

-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ def runsource(self, source, filename="<input>", symbol="single"):
6565
def main(*args):
6666
parser = ArgumentParser(
6767
description="Python sqlite3 CLI",
68-
prog="python -m sqlite3",
6968
)
7069
parser.add_argument(
7170
"filename", type=str, default=":memory:", nargs="?",

Lib/test/test_sqlite3/test_cli.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ def expect_failure(self, *args):
3434

3535
def test_cli_help(self):
3636
out = self.expect_success("-h")
37-
self.assertIn("usage: python -m sqlite3", out)
37+
self.assertIn("usage: ", out)
38+
self.assertIn(" [-h] [-v] [filename] [sql]", out)
39+
self.assertIn("Python sqlite3 CLI", out)
3840

3941
def test_cli_version(self):
4042
out = self.expect_success("-v")

Lib/tokenize.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ def error(message, filename=None, location=None):
510510
sys.exit(1)
511511

512512
# Parse the arguments and options
513-
parser = argparse.ArgumentParser(prog='python -m tokenize')
513+
parser = argparse.ArgumentParser()
514514
parser.add_argument(dest='filename', nargs='?',
515515
metavar='filename.py',
516516
help='the file to tokenize; defaults to stdin')

Lib/venv/__init__.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -575,8 +575,7 @@ def create(env_dir, system_site_packages=False, clear=False,
575575
def main(args=None):
576576
import argparse
577577

578-
parser = argparse.ArgumentParser(prog=__name__,
579-
description='Creates virtual Python '
578+
parser = argparse.ArgumentParser(description='Creates virtual Python '
580579
'environments in one or '
581580
'more target '
582581
'directories.',
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
The CLI of many modules (:mod:`ast`, :mod:`ensurepip`, :mod:`json`,
2+
:mod:`pdb`, :mod:`sqlite3`, :mod:`tokenize`, :mod:`venv`) now uses the
3+
actual executable name instead of simply "python" to display in the usage
4+
message.

0 commit comments

Comments
 (0)