https://github.com/python/cpython/commit/7d2c39752fa6f685f15ad9c585d83a62553477c2
commit: 7d2c39752fa6f685f15ad9c585d83a62553477c2
branch: main
author: Serhiy Storchaka <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2024-10-10T00:20:53+03:00
summary:
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 ...").
files:
A Misc/NEWS.d/next/Library/2024-10-01-23-29-09.gh-issue-91818.Kz8cPI.rst
M Lib/ast.py
M Lib/ensurepip/__init__.py
M Lib/ensurepip/_uninstall.py
M Lib/json/tool.py
M Lib/pdb.py
M Lib/sqlite3/__main__.py
M Lib/test/test_sqlite3/test_cli.py
M Lib/tokenize.py
M Lib/venv/__init__.py
diff --git a/Lib/ast.py b/Lib/ast.py
index a954d4a97d3c22..154d2c8c1f9ebb 100644
--- a/Lib/ast.py
+++ b/Lib/ast.py
@@ -1743,7 +1743,7 @@ def unparse(ast_obj):
def main():
import argparse
- parser = argparse.ArgumentParser(prog='python -m ast')
+ parser = argparse.ArgumentParser()
parser.add_argument('infile', nargs='?', default='-',
help='the file to parse; defaults to stdin')
parser.add_argument('-m', '--mode', default='exec',
diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py
index c5350df270487a..585afc85836c06 100644
--- a/Lib/ensurepip/__init__.py
+++ b/Lib/ensurepip/__init__.py
@@ -205,7 +205,7 @@ def _uninstall_helper(*, verbosity=0):
def _main(argv=None):
import argparse
- parser = argparse.ArgumentParser(prog="python -m ensurepip")
+ parser = argparse.ArgumentParser()
parser.add_argument(
"--version",
action="version",
diff --git a/Lib/ensurepip/_uninstall.py b/Lib/ensurepip/_uninstall.py
index b257904328d2f5..4183c28a809008 100644
--- a/Lib/ensurepip/_uninstall.py
+++ b/Lib/ensurepip/_uninstall.py
@@ -6,7 +6,7 @@
def _main(argv=None):
- parser = argparse.ArgumentParser(prog="python -m ensurepip._uninstall")
+ parser = argparse.ArgumentParser()
parser.add_argument(
"--version",
action="version",
diff --git a/Lib/json/tool.py b/Lib/json/tool.py
index 9028e517fb9f7d..1ba91384c81f27 100644
--- a/Lib/json/tool.py
+++ b/Lib/json/tool.py
@@ -9,10 +9,9 @@
def main():
- prog = 'python -m json'
description = ('A simple command line interface for json module '
'to validate and pretty-print JSON objects.')
- parser = argparse.ArgumentParser(prog=prog, description=description)
+ parser = argparse.ArgumentParser(description=description)
parser.add_argument('infile', nargs='?',
help='a JSON file to be validated or pretty-printed',
default='-')
diff --git a/Lib/pdb.py b/Lib/pdb.py
index aea6fb70ae3106..d9aed24bfcd8e7 100644
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -2423,8 +2423,7 @@ def help():
def main():
import argparse
- parser = argparse.ArgumentParser(prog="pdb",
- usage="%(prog)s [-h] [-c command] (-m
module | pyfile) [args ...]",
+ parser = argparse.ArgumentParser(usage="%(prog)s [-h] [-c command] (-m
module | pyfile) [args ...]",
description=_usage,
formatter_class=argparse.RawDescriptionHelpFormatter,
allow_abbrev=False)
diff --git a/Lib/sqlite3/__main__.py b/Lib/sqlite3/__main__.py
index d9423c25e34135..cfdee61403d1fa 100644
--- a/Lib/sqlite3/__main__.py
+++ b/Lib/sqlite3/__main__.py
@@ -65,7 +65,6 @@ def runsource(self, source, filename="<input>",
symbol="single"):
def main(*args):
parser = ArgumentParser(
description="Python sqlite3 CLI",
- prog="python -m sqlite3",
)
parser.add_argument(
"filename", type=str, default=":memory:", nargs="?",
diff --git a/Lib/test/test_sqlite3/test_cli.py
b/Lib/test/test_sqlite3/test_cli.py
index 303f9e03b5383f..d014a9ce841607 100644
--- a/Lib/test/test_sqlite3/test_cli.py
+++ b/Lib/test/test_sqlite3/test_cli.py
@@ -34,7 +34,9 @@ def expect_failure(self, *args):
def test_cli_help(self):
out = self.expect_success("-h")
- self.assertIn("usage: python -m sqlite3", out)
+ self.assertIn("usage: ", out)
+ self.assertIn(" [-h] [-v] [filename] [sql]", out)
+ self.assertIn("Python sqlite3 CLI", out)
def test_cli_version(self):
out = self.expect_success("-v")
diff --git a/Lib/tokenize.py b/Lib/tokenize.py
index 4b4c3cfe16999b..7ece4e9b70d31b 100644
--- a/Lib/tokenize.py
+++ b/Lib/tokenize.py
@@ -510,7 +510,7 @@ def error(message, filename=None, location=None):
sys.exit(1)
# Parse the arguments and options
- parser = argparse.ArgumentParser(prog='python -m tokenize')
+ parser = argparse.ArgumentParser()
parser.add_argument(dest='filename', nargs='?',
metavar='filename.py',
help='the file to tokenize; defaults to stdin')
diff --git a/Lib/venv/__init__.py b/Lib/venv/__init__.py
index a5cb2bdb064692..a00fa690fa0b88 100644
--- a/Lib/venv/__init__.py
+++ b/Lib/venv/__init__.py
@@ -575,8 +575,7 @@ def create(env_dir, system_site_packages=False, clear=False,
def main(args=None):
import argparse
- parser = argparse.ArgumentParser(prog=__name__,
- description='Creates virtual Python '
+ parser = argparse.ArgumentParser(description='Creates virtual Python '
'environments in one or '
'more target '
'directories.',
diff --git
a/Misc/NEWS.d/next/Library/2024-10-01-23-29-09.gh-issue-91818.Kz8cPI.rst
b/Misc/NEWS.d/next/Library/2024-10-01-23-29-09.gh-issue-91818.Kz8cPI.rst
new file mode 100644
index 00000000000000..f45f00e48a3830
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2024-10-01-23-29-09.gh-issue-91818.Kz8cPI.rst
@@ -0,0 +1,4 @@
+The CLI of many modules (:mod:`ast`, :mod:`ensurepip`, :mod:`json`,
+:mod:`pdb`, :mod:`sqlite3`, :mod:`tokenize`, :mod:`venv`) now uses the
+actual executable name instead of simply "python" to display in the usage
+message.
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]