summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/dis.py27
-rw-r--r--Misc/NEWS3
2 files changed, 11 insertions, 19 deletions
diff --git a/Lib/dis.py b/Lib/dis.py
index 0d62c08..2631f46 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 = "<stdin>"
- 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 5325525..55aca64 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