]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-91818: Use default program name in the CLI of many modules (GH-124867)
authorSerhiy Storchaka <storchaka@gmail.com>
Wed, 9 Oct 2024 21:20:53 +0000 (00:20 +0300)
committerGitHub <noreply@github.com>
Wed, 9 Oct 2024 21:20:53 +0000 (00:20 +0300)
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 ...").

Lib/ast.py
Lib/ensurepip/__init__.py
Lib/ensurepip/_uninstall.py
Lib/json/tool.py
Lib/pdb.py
Lib/sqlite3/__main__.py
Lib/test/test_sqlite3/test_cli.py
Lib/tokenize.py
Lib/venv/__init__.py
Misc/NEWS.d/next/Library/2024-10-01-23-29-09.gh-issue-91818.Kz8cPI.rst [new file with mode: 0644]

index a954d4a97d3c22c2ec76b3e1893021f633920d33..154d2c8c1f9ebb977934e1c79ceaee6723d912d6 100644 (file)
@@ -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',
index c5350df270487abebb55b0e414854e4330b93940..585afc85836c065d04fdaf5a3f2b8f356ac1b2d6 100644 (file)
@@ -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",
index b257904328d2f5dc3b5f07e7d6c883fb9e2055a9..4183c28a809008fd1121b9e2051469f69ad9d20f 100644 (file)
@@ -6,7 +6,7 @@ import sys
 
 
 def _main(argv=None):
-    parser = argparse.ArgumentParser(prog="python -m ensurepip._uninstall")
+    parser = argparse.ArgumentParser()
     parser.add_argument(
         "--version",
         action="version",
index 9028e517fb9f7dfcf66ffd0f040dd94b30634a43..1ba91384c81f279dd6abc87249baa6fecee75a3a 100644 (file)
@@ -9,10 +9,9 @@ import sys
 
 
 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='-')
index aea6fb70ae31067fb71b853b0c6796d01d062442..d9aed24bfcd8e79d696a4f190b3132f92e9bd17c 100644 (file)
@@ -2423,8 +2423,7 @@ To let the script run up to a given line X in the debugged file, use
 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)
index d9423c25e3413588f14c288d3ed3170be6dd2092..cfdee61403d1fa081b292e607cbd2623493c2a01 100644 (file)
@@ -65,7 +65,6 @@ class SqliteInteractiveConsole(InteractiveConsole):
 def main(*args):
     parser = ArgumentParser(
         description="Python sqlite3 CLI",
-        prog="python -m sqlite3",
     )
     parser.add_argument(
         "filename", type=str, default=":memory:", nargs="?",
index 303f9e03b5383f2ee88621e14182c2adeeb5d9eb..d014a9ce841607042cb6f9a1886410d5ac03de9a 100644 (file)
@@ -34,7 +34,9 @@ class CommandLineInterface(unittest.TestCase):
 
     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")
index 4b4c3cfe16999b5231076748b19e514e79bb7eaf..7ece4e9b70d31b35c7f6493318be177dd171907e 100644 (file)
@@ -510,7 +510,7 @@ def main():
         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')
index a5cb2bdb06469285c909c1103a73af2b11f950f4..a00fa690fa0b88258a7fd1c766935cce0f5196f9 100644 (file)
@@ -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 (file)
index 0000000..f45f00e
--- /dev/null
@@ -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.