Skip to content

Commit

Permalink
pythongh-102114: Make dis print more concise tracebacks for syntax er…
Browse files Browse the repository at this point in the history
…rors in str inputs (python#102115)
  • Loading branch information
chgnrdv authored Apr 15, 2023
1 parent 8af8f52 commit 2b6f5c3
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 3 deletions.
6 changes: 3 additions & 3 deletions Lib/dis.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
7 changes: 7 additions & 0 deletions Lib/test/test_dis.py
Original file line number Diff line number Diff line change
Expand Up @@ -1067,6 +1067,13 @@ def check(expected, **kwargs):
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):
Expand Down
Original file line number Diff line number Diff line change
@@ -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.

0 comments on commit 2b6f5c3

Please sign in to comment.