diff options
author | chgnrdv <52372310+chgnrdv@users.noreply.github.com> | 2023-04-15 08:53:31 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-15 06:53:31 +0100 |
commit | 2b6f5c3483597abcb8422508aeffab04f500f568 (patch) | |
tree | 6b2d4905acf15014f334c287b5c5f7bf498c48bc | |
parent | 8af8f52d175959f03cf4a2786b6a81ec09e15e95 (diff) | |
download | cpython-git-2b6f5c3483597abcb8422508aeffab04f500f568.tar.gz |
gh-102114: Make dis print more concise tracebacks for syntax errors in str inputs (#102115)
-rw-r--r-- | Lib/dis.py | 6 | ||||
-rw-r--r-- | Lib/test/test_dis.py | 7 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2023-02-21-14-57-34.gh-issue-102114.uUDQzb.rst | 1 |
3 files changed, 11 insertions, 3 deletions
diff --git a/Lib/dis.py b/Lib/dis.py index b39b283533..6a7fcb8a1a 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 0a60a97961..2d5c73c9ad 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 0000000000..4140c9a96c --- /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. |