##// END OF EJS Templates
catch `MemoryError` in compiling
yangyang -
Show More
@@ -146,20 +146,20 b' def _should_be_async(cell: str) -> bool:'
146 146
147 147 If it works, assume it should be async. Otherwise Return False.
148 148
149 Not handled yet: If the block of code has a return statement as the top
149 Not handled yet: If the block of code has a return statement as the top
150 150 level, it will be seen as async. This is a know limitation.
151 151 """
152 152 if sys.version_info > (3, 8):
153 153 try:
154 154 code = compile(cell, "<>", "exec", flags=getattr(ast,'PyCF_ALLOW_TOP_LEVEL_AWAIT', 0x0))
155 155 return inspect.CO_COROUTINE & code.co_flags == inspect.CO_COROUTINE
156 except SyntaxError:
156 except (SyntaxError, MemoryError):
157 157 return False
158 158 try:
159 159 # we can't limit ourself to ast.parse, as it __accepts__ to parse on
160 160 # 3.7+, but just does not _compile_
161 161 code = compile(cell, "<>", "exec")
162 except SyntaxError:
162 except (SyntaxError, MemoryError):
163 163 try:
164 164 parse_tree = _async_parse_cell(cell)
165 165
@@ -167,7 +167,7 b' def _should_be_async(cell: str) -> bool:'
167 167 v = _AsyncSyntaxErrorVisitor()
168 168 v.visit(parse_tree)
169 169
170 except SyntaxError:
170 except (SyntaxError, MemoryError):
171 171 return False
172 172 return True
173 173 return False
General Comments 0
You need to be logged in to leave comments. Login now