From: sobolevn Date: Mon, 26 Aug 2024 18:59:50 +0000 (+0300) Subject: gh-123340: Show string value of `IS_OP` oparg in `dis` (#123348) X-Git-Tag: v3.14.0a1~680 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1eed0f968f5f44d6a13403c1676298a322cbfbad;p=thirdparty%2FPython%2Fcpython.git gh-123340: Show string value of `IS_OP` oparg in `dis` (#123348) --- diff --git a/Lib/dis.py b/Lib/dis.py index 077c4035ca65..bdac296e9c7a 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -51,6 +51,7 @@ LOAD_SPECIAL = opmap['LOAD_SPECIAL'] LOAD_FAST_LOAD_FAST = opmap['LOAD_FAST_LOAD_FAST'] STORE_FAST_LOAD_FAST = opmap['STORE_FAST_LOAD_FAST'] STORE_FAST_STORE_FAST = opmap['STORE_FAST_STORE_FAST'] +IS_OP = opmap['IS_OP'] CACHE = opmap["CACHE"] @@ -629,6 +630,8 @@ class ArgResolver: argrepr = repr(obj) elif deop == LOAD_SPECIAL: argrepr = _special_method_names[arg] + elif deop == IS_OP: + argrepr = 'is not' if argval else 'is' return argval, argrepr def get_instructions(x, *, first_line=None, show_caches=None, adaptive=False): diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index db69bc7ccdc2..ab0fcee747db 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -2028,6 +2028,15 @@ class InstructionTests(InstructionTestCase): dis.dis(f.__code__, file=output, show_caches=True) self.assertIn("L1:", output.getvalue()) + def test_is_op_format(self): + output = io.StringIO() + dis.dis("a is b", file=output, show_caches=True) + self.assertIn("IS_OP 0 (is)", output.getvalue()) + + output = io.StringIO() + dis.dis("a is not b", file=output, show_caches=True) + self.assertIn("IS_OP 1 (is not)", output.getvalue()) + def test_baseopname_and_baseopcode(self): # Standard instructions for name, code in dis.opmap.items(): diff --git a/Misc/NEWS.d/next/Library/2024-08-26-19-36-00.gh-issue-123340.mQKI1H.rst b/Misc/NEWS.d/next/Library/2024-08-26-19-36-00.gh-issue-123340.mQKI1H.rst new file mode 100644 index 000000000000..8a462b230046 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2024-08-26-19-36-00.gh-issue-123340.mQKI1H.rst @@ -0,0 +1 @@ +Show string value of :opcode:`IS_OP` oparg in :mod:`dis` output.