@@ -70,8 +70,7 @@ def _maybe_compile(compiler, source, filename, symbol):
7070 return None
7171 # fallthrough
7272
73- return compiler (source , filename , symbol )
74-
73+ return compiler (source , filename , symbol , incomplete_input = False )
7574
7675def _is_syntax_error (err1 , err2 ):
7776 rep1 = repr (err1 )
@@ -82,8 +81,12 @@ def _is_syntax_error(err1, err2):
8281 return True
8382 return False
8483
85- def _compile (source , filename , symbol ):
86- return compile (source , filename , symbol , PyCF_DONT_IMPLY_DEDENT | PyCF_ALLOW_INCOMPLETE_INPUT )
84+ def _compile (source , filename , symbol , incomplete_input = True ):
85+ flags = 0
86+ if incomplete_input :
87+ flags |= PyCF_ALLOW_INCOMPLETE_INPUT
88+ flags |= PyCF_DONT_IMPLY_DEDENT
89+ return compile (source , filename , symbol , flags )
8790
8891def compile_command (source , filename = "<input>" , symbol = "single" ):
8992 r"""Compile a command and determine whether it is incomplete.
@@ -114,8 +117,12 @@ class Compile:
114117 def __init__ (self ):
115118 self .flags = PyCF_DONT_IMPLY_DEDENT | PyCF_ALLOW_INCOMPLETE_INPUT
116119
117- def __call__ (self , source , filename , symbol ):
118- codeob = compile (source , filename , symbol , self .flags , True )
120+ def __call__ (self , source , filename , symbol , ** kwargs ):
121+ flags = self .flags
122+ if kwargs .get ('incomplete_input' , True ) is False :
123+ flags &= ~ PyCF_DONT_IMPLY_DEDENT
124+ flags &= ~ PyCF_ALLOW_INCOMPLETE_INPUT
125+ codeob = compile (source , filename , symbol , flags , True )
119126 for feature in _features :
120127 if codeob .co_flags & feature .compiler_flag :
121128 self .flags |= feature .compiler_flag
0 commit comments