From: chgnrdv <52372310+chgnrdv@users.noreply.github.com> Date: Sat, 15 Apr 2023 05:53:31 +0000 (+0300) Subject: gh-102114: Make dis print more concise tracebacks for syntax errors in str inputs... X-Git-Tag: v3.12.0b1~529 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2b6f5c3483597abcb8422508aeffab04f500f568;p=thirdparty%2FPython%2Fcpython.git gh-102114: Make dis print more concise tracebacks for syntax errors in str inputs (#102115) --- diff --git a/Lib/dis.py b/Lib/dis.py index b39b28353301..6a7fcb8a1a00 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -64,10 +64,10 @@ def _try_compile(source, name): expect code objects """ try: - c = compile(source, name, 'eval') + return compile(source, name, 'eval') except SyntaxError: - c = compile(source, name, 'exec') - return c + pass + return compile(source, name, 'exec') def dis(x=None, *, file=None, depth=None, show_caches=False, adaptive=False): """Disassemble classes, methods, functions, and other compiled objects. diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index 0a60a979614d..2d5c73c9adc9 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -1067,6 +1067,13 @@ class DisTests(DisTestBase): check(dis_nested_2, depth=None) check(dis_nested_2) + def test__try_compile_no_context_exc_on_error(self): + # see gh-102114 + try: + dis._try_compile(")", "") + except Exception as e: + self.assertIsNone(e.__context__) + @staticmethod def code_quicken(f, times=ADAPTIVE_WARMUP_DELAY): for _ in range(times): diff --git a/Misc/NEWS.d/next/Library/2023-02-21-14-57-34.gh-issue-102114.uUDQzb.rst b/Misc/NEWS.d/next/Library/2023-02-21-14-57-34.gh-issue-102114.uUDQzb.rst new file mode 100644 index 000000000000..4140c9a96cd2 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-02-21-14-57-34.gh-issue-102114.uUDQzb.rst @@ -0,0 +1 @@ +Functions in the :mod:`dis` module that accept a source code string as argument now print a more concise traceback when the string contains a syntax or indentation error.