diff --git a/Lib/dis.py b/Lib/dis.py index 0d62c0828cc..2631f460912 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -436,25 +436,14 @@ class Bytecode: def _test(): """Simple test program to disassemble a file.""" - if sys.argv[1:]: - if sys.argv[2:]: - sys.stderr.write("usage: python dis.py [-|file]\n") - sys.exit(2) - fn = sys.argv[1] - if not fn or fn == "-": - fn = None - else: - fn = None - if fn is None: - f = sys.stdin - else: - f = open(fn) - source = f.read() - if fn is not None: - f.close() - else: - fn = "" - code = compile(source, fn, "exec") + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument('infile', type=argparse.FileType(), nargs='?', default='-') + args = parser.parse_args() + with args.infile as infile: + source = infile.read() + code = compile(source, args.infile.name, "exec") dis(code) if __name__ == "__main__": diff --git a/Misc/NEWS b/Misc/NEWS index 53255250e63..55aca649170 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -40,6 +40,9 @@ Core and Builtins Library ------- +- Issue #18538: ``python -m dis`` now uses argparse for argument processing. + Patch by Michele OrrĂ¹. + - Issue #18394: Close cgi.FieldStorage's optional file. - Issue #17702: On error, os.environb now removes suppress the except context