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 ...").
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',
def _main(argv=None):
import argparse
- parser = argparse.ArgumentParser(prog="python -m ensurepip")
+ parser = argparse.ArgumentParser()
parser.add_argument(
"--version",
action="version",
def _main(argv=None):
- parser = argparse.ArgumentParser(prog="python -m ensurepip._uninstall")
+ parser = argparse.ArgumentParser()
parser.add_argument(
"--version",
action="version",
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='-')
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)
def main(*args):
parser = ArgumentParser(
description="Python sqlite3 CLI",
- prog="python -m sqlite3",
)
parser.add_argument(
"filename", type=str, default=":memory:", nargs="?",
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")
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')
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.',
--- /dev/null
+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.